Nothing
test_that("Checking that non-PanelData objects return errors at various levels", {
d2 <- as.matrix(dem)
#passing any non-PanelData object directly should fail now
expect_error(PanelMatch(lag = 4, refinement.method = "none",
panel.data = d2, match.missing = FALSE,
size.match = 5, qoi = "att",
lead = 0:4, forbid.treatment.reversal = FALSE))
#passing any non-PanelData object directly should fail now
expect_error(PanelMatch(lag = 4,
refinement.method = "none",
panel.data = dem, match.missing = FALSE,
size.match = 5, qoi = "att",
lead = 0:4, forbid.treatment.reversal = FALSE))
dem.panel <- PanelData(dem, 'wbcode2', 'year', 'dem', 'y')
PM.results <- PanelMatch(panel.data = dem.panel, lag = 4,
refinement.method = "ps.match",
match.missing = TRUE,
covs.formula = ~ tradewb,
size.match = 5, qoi = "att",
lead = 0:4,
forbid.treatment.reversal = FALSE)
expect_error(PanelEstimate(sets = PM.results,
panel.data = as.matrix(dem), se.method = "bootstrap"))
expect_error(PanelEstimate(sets = PM.results,
panel.data = dem, se.method = "bootstrap"))
expect_silent(PanelEstimate(sets = PM.results,
panel.data = dem.panel, se.method = "bootstrap"))
expect_error(DisplayTreatment(panel.data = dem))
expect_silent(DisplayTreatment(panel.data = dem.panel))
})
test_that("edge case matching checks", {
dem.panel <- PanelData(dem, 'wbcode2', 'year', 'dem', 'y')
PM.object <- PanelMatch(lag = 1,
refinement.method = "none",
panel.data = dem.panel, match.missing = FALSE,
size.match = 5, qoi = "att",
lead = 0, forbid.treatment.reversal = FALSE)
expect_equal(class(PM.object), "PanelMatch")
expect_equal(class(PM.object$att), "matched.set")
set.seed(1)
pe.results <- PanelEstimate(sets = PM.object,
panel.data = dem.panel,
se.method = "bootstrap")
expect_equivalent(pe.results$estimate, -1.20423408195041, tolerance = .000001)
expect_identical(pe.results$se.method, "bootstrap")
expect_equivalent(pe.results$standard.error, 0.776390146867648, tolerance = .000001)
pe.results <- PanelEstimate(sets = PM.object,
panel.data = dem.panel, se.method = "conditional")
expect_equivalent(pe.results$estimate, -1.20423408195041, tolerance = .000001)
expect_identical(pe.results$se.method, "conditional")
expect_equivalent(pe.results$standard.error, 0.618327233714141, tolerance = .000001)
pe.results <- PanelEstimate(sets = PM.object,
panel.data = dem.panel, se.method = "unconditional")
expect_equivalent(pe.results$estimate, -1.20423408195041, tolerance = .000001)
expect_identical(pe.results$se.method, "unconditional")
expect_equivalent(pe.results$standard.error, 0.745063157005526, tolerance = .000001)
#art
PM.object <- PanelMatch(lag = 1,
refinement.method = "none",
panel.data = dem.panel, match.missing = FALSE,
size.match = 5, qoi = "art",
lead = 0, forbid.treatment.reversal = FALSE)
expect_equal(class(PM.object), "PanelMatch")
expect_equal(class(PM.object$art), "matched.set")
set.seed(1)
pe.results <- PanelEstimate(sets = PM.object, panel.data = dem.panel, se.method = "bootstrap")
expect_equivalent(pe.results$estimate, -4.22192232677815, tolerance = .000001)
expect_identical(pe.results$se.method, "bootstrap")
expect_equivalent(pe.results$standard.error, 1.11077012122371, tolerance = .000001)
pe.results <- PanelEstimate(sets = PM.object, panel.data = dem.panel, se.method = "conditional")
expect_equivalent(pe.results$estimate, -4.22192232677815, tolerance = .000001)
expect_identical(pe.results$se.method, "conditional")
expect_equivalent(pe.results$standard.error, 0.90258389202935, tolerance = .000001)
pe.results <- PanelEstimate(sets = PM.object, panel.data = dem.panel, se.method = "unconditional")
expect_equivalent(pe.results$estimate, -4.22192232677815, tolerance = .000001)
expect_identical(pe.results$se.method, "unconditional")
expect_equivalent(pe.results$standard.error, 1.21738691542365, tolerance = .000001)
})
test_that("ATT: refinement method does not affect unrefined matched sets", {
dem.panel <- PanelData(dem, 'wbcode2', 'year', 'dem', 'y')
pm1 <- PanelMatch(lag = 4,
refinement.method = "mahalanobis",
covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
panel.data = dem.panel, match.missing = FALSE,
size.match = 5, qoi = "att",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm2 <- PanelMatch(lag = 4,
refinement.method = "ps.weight",
panel.data = dem.panel, match.missing = FALSE,
covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm3 <- PanelMatch(lag = 4,
refinement.method = "ps.match",
covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
panel.data = dem.panel, match.missing = FALSE,
size.match = 5, qoi = "att",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm4 <- PanelMatch(lag = 4,
refinement.method = "CBPS.weight",
panel.data = dem.panel,
match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm5 <- PanelMatch(lag = 4,
refinement.method = "CBPS.match",
panel.data = dem.panel, match.missing = FALSE,
covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_equal(length(pm1$att), 105)
expect_equivalent(pm1$att, pm2$att)
expect_equivalent(pm2$att, pm3$att)
expect_equivalent(pm3$att, pm4$att)
expect_equivalent(pm4$att, pm5$att)
})
test_that("ATC: refinement method does not affect unrefined matched sets", {
dem.panel <- PanelData(dem, 'wbcode2', 'year', 'dem', 'y')
qoi_ <- "atc"
pm1 <- PanelMatch(lag = 4,
refinement.method = "mahalanobis",
panel.data = dem.panel, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
lead = 0:4, forbid.treatment.reversal = FALSE)
pm2 <- PanelMatch(lag = 4,
refinement.method = "ps.weight",
panel.data = dem.panel, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
lead = 0:4, forbid.treatment.reversal = FALSE)
pm3 <- PanelMatch(lag = 4,
refinement.method = "ps.match",
panel.data = dem.panel,
match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
lead = 0:4, forbid.treatment.reversal = FALSE)
pm4 <- PanelMatch(lag = 4,
refinement.method = "CBPS.weight",
panel.data = dem.panel, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
lead = 0:4, forbid.treatment.reversal = FALSE)
pm5 <- PanelMatch(lag = 4,
refinement.method = "CBPS.match",
panel.data = dem.panel, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_equal(length(pm1$atc), 3287)
expect_equivalent(pm1$atc, pm2$atc)
expect_equivalent(pm2$atc, pm3$atc)
expect_equivalent(pm3$atc, pm4$atc)
expect_equivalent(pm4$atc, pm5$atc)
})
test_that("matched.set methods work", {
dem.panel <- PanelData(dem, 'wbcode2', 'year', 'dem', 'y')
qoi_ <- "att"
pm1 <- PanelMatch(lag = 4,
refinement.method = "mahalanobis",
panel.data = dem.panel,
match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
lead = 0:3, forbid.treatment.reversal = FALSE)
sets <- pm1$att
expect_equal(class(sets), "matched.set")
expect_equal(length(summary(sets)), 5)
expect_true("set.size.summary" %in% names(summary(sets)))
expect_equal(names(sets)[1], "4.1992")
hardcoded.set <- c(3,13,16,19,28,29,31,35,36,37,43,45,47,51,53,57,62,64,65,67,70,71,81,84,87,93,95,
96,97,103,104,105,109,110,112,114,115,116,118,123,124,125,128,129,134,140,142,150,155,
156,157,159,161,163,168,171,172,173,175,176,178,179,180,182,184,186,187,190,193,196,197,199,200,202)
expect_equal(as.numeric(sets[[1]]), hardcoded.set)
subset <- sets[1:3]
expect_equal(class(subset), "matched.set")
})
test_that("set level treatment effects", {
dem.panel <- PanelData(dem, 'wbcode2', 'year', 'dem', 'y')
PM.results <- PanelMatch(lag = 4,
refinement.method = "ps.match",
panel.data = dem.panel, match.missing = TRUE,
covs.formula = ~ I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
lead = 0:4, forbid.treatment.reversal = FALSE,
placebo.test = FALSE)
set.effects <- get_set_treatment_effects(pm.obj = PM.results,
panel.data = dem.panel, lead = 0:1)
pe.results <- PanelEstimate(sets = PM.results, panel.data = dem.panel,
se.method = "conditional")
expect_equivalent(c(mean(set.effects[[1]], na.rm = TRUE),
mean(set.effects[[2]], na.rm = TRUE)),
pe.results$estimate[1:2], tolerance = .000001)
PM.results <- PanelMatch(lag = 4,
refinement.method = "ps.match",
panel.data = dem.panel, match.missing = TRUE,
covs.formula = ~ I(lag(tradewb, 1:4)),
size.match = 5, qoi = "art",
lead = 0:4, forbid.treatment.reversal = FALSE,
placebo.test = FALSE)
set.effects <- get_set_treatment_effects(pm.obj = PM.results,
panel.data = dem.panel, lead = 0:1)
pe.results <- PanelEstimate(sets = PM.results, panel.data = dem.panel,
se.method = "conditional")
expect_equivalent(c(mean(set.effects[[1]], na.rm = TRUE),
mean(set.effects[[2]], na.rm = TRUE)),
pe.results$estimate[1:2], tolerance = .000001)
PM.results <- PanelMatch(lag = 4,
refinement.method = "ps.match",
panel.data = dem.panel, match.missing = TRUE,
covs.formula = ~ I(lag(tradewb, 1:4)),
size.match = 5, qoi = "atc",
lead = 0:4, forbid.treatment.reversal = FALSE,
placebo.test = FALSE)
set.effects <- get_set_treatment_effects(pm.obj = PM.results,
panel.data = dem.panel, lead = 0:1)
pe.results <- PanelEstimate(sets = PM.results, panel.data = dem.panel,
se.method = "conditional")
expect_equivalent(c(mean(set.effects[[1]], na.rm = TRUE),
mean(set.effects[[2]], na.rm = TRUE)),
pe.results$estimate[1:2], tolerance = .000001)
})
test_that("test time data checker", {
good <- data.frame(id = as.integer(unlist(lapply(1:5, function(x) rep(x, 20)))),
time.in = rep(as.integer(seq(1,20,by=1)), 5))
ok <- data.frame(id = unlist(lapply(1:5, function(x) rep(x, 20))),
time.in = rep(seq(1,20,by=1), 5))
bad <- data.frame(id = unlist(lapply(1:5, function(x) rep(x, 10))),
time.in = rep(seq(1,20,by=2), 5))
fail <- data.frame(id = as.integer(unlist(lapply(1:5, function(x) rep(x, 20)))),
time.in = "A")
r1 <- PanelMatch:::check_time_data(good, "time.in")
r1 <- expect_warning(PanelMatch:::check_time_data(ok, "time.in"))
r1 <- expect_warning(PanelMatch:::check_time_data(bad, "time.in"))
r1 <- expect_error(PanelMatch:::check_time_data(fail, "time.in"))
})
test_that("ensure parallel bootstrap runs without warning, error", {
dem.panel <- PanelData(dem, 'wbcode2', 'year', 'dem', 'y')
PM.results <- PanelMatch(lag = 4,
refinement.method = "ps.match",
panel.data = dem.panel,
match.missing = TRUE, covs.formula = ~ tradewb,
size.match = 5, qoi = "att",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_no_error(PanelEstimate(sets = PM.results,
number.iterations = 1000,
panel.data = dem.panel,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
expect_no_warning(PanelEstimate(sets = PM.results,
number.iterations = 1000,
panel.data = dem.panel,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
PM.results <- PanelMatch(lag = 4,
refinement.method = "ps.match",
panel.data = dem.panel, match.missing = TRUE, covs.formula = ~ tradewb,
size.match = 5, qoi = "art",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_no_error(PanelEstimate(sets = PM.results,
number.iterations = 1000,
panel.data = dem.panel,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
expect_no_warning(PanelEstimate(sets = PM.results,
number.iterations = 1000,
panel.data = dem.panel,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
PM.results <- PanelMatch(lag = 4,
refinement.method = "ps.match",
panel.data = dem.panel, match.missing = TRUE, covs.formula = ~ tradewb,
size.match = 5, qoi = "atc",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_no_error(PanelEstimate(sets = PM.results,
number.iterations = 1000,
panel.data = dem.panel,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
expect_no_warning(PanelEstimate(sets = PM.results,
number.iterations = 1000,
panel.data = dem.panel,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
PM.results <- PanelMatch(lag = 4,
refinement.method = "ps.match",
panel.data = dem.panel, match.missing = TRUE, covs.formula = ~ tradewb,
size.match = 5, qoi = "ate",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_no_error(PanelEstimate(sets = PM.results,
number.iterations = 1000,
panel.data = dem.panel,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
expect_no_warning(PanelEstimate(sets = PM.results,
number.iterations = 1000,
panel.data = dem.panel,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
})
test_that("forbid treatment reversal restrictions are triggered correctly", {
dem.panel <- PanelData(dem, 'wbcode2', 'year', 'dem', 'y')
expect_no_error(PanelMatch(lag = 4,
refinement.method = "mahalanobis",
panel.data = dem.panel, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
lead = 0:3, forbid.treatment.reversal = TRUE))
expect_no_error(PanelMatch(lag = 4,
refinement.method = "mahalanobis",
panel.data = dem.panel, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "art",
lead = 0:3, forbid.treatment.reversal = TRUE))
expect_error(PanelMatch(lag = 4,
refinement.method = "mahalanobis",
panel.data = dem.panel, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "atc",
lead = 0:3, forbid.treatment.reversal = TRUE))
expect_error(PanelMatch(lag = 4,
refinement.method = "mahalanobis",
panel.data = dem.panel, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "ate",
lead = 0:3, forbid.treatment.reversal = TRUE))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.