Nothing
test_that("ensuring data.frame check", {
d2 <- as.matrix(dem)
expect_error(PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "none",
data = d2, match.missing = FALSE,
size.match = 5, qoi = "att",
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE))
PM.object <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "none",
data = dem, match.missing = FALSE,
size.match = 5, qoi = "att",
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_error(PanelEstimate(PM.object, data = as.matrix(dem), se.method = "bootstrap"))
expect_error(DisplayTreatment(unit.id = "wbcode2",
time.id = "year", legend.position = "none",
xlab = "year", ylab = "Country Code",
treatment = "dem", data = d2))
})
test_that("edge case matching checks", {
PM.object <- PanelMatch(lag = 1, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "none",
data = dem, match.missing = FALSE,
size.match = 5, qoi = "att",
outcome.var = "y",
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(PM.object, data = dem, se.method = "bootstrap")
expect_equivalent(pe.results$estimates, -1.20423408195041, tolerance = .000001)
expect_identical(pe.results$se.method, "bootstrap")
expect_equivalent(pe.results$standard.error, 0.776390146867648, tolerance = .000001)
pe.results <- PanelEstimate(PM.object, data = dem, se.method = "conditional")
expect_equivalent(pe.results$estimates, -1.20423408195041, tolerance = .000001)
expect_identical(pe.results$se.method, "conditional")
expect_equivalent(pe.results$standard.error, 0.618327233714141, tolerance = .000001)
pe.results <- PanelEstimate(PM.object, data = dem, se.method = "unconditional")
expect_equivalent(pe.results$estimates, -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, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "none",
data = dem, match.missing = FALSE,
size.match = 5, qoi = "art",
outcome.var = "y",
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(PM.object, data = dem, se.method = "bootstrap")
expect_equivalent(pe.results$estimates, -4.22192232677815, tolerance = .000001)
expect_identical(pe.results$se.method, "bootstrap")
expect_equivalent(pe.results$standard.error, 1.11077012122371, tolerance = .000001)
pe.results <- PanelEstimate(PM.object, data = dem, se.method = "conditional")
expect_equivalent(pe.results$estimates, -4.22192232677815, tolerance = .000001)
expect_identical(pe.results$se.method, "conditional")
expect_equivalent(pe.results$standard.error, 0.90258389202935, tolerance = .000001)
pe.results <- PanelEstimate(PM.object, data = dem, se.method = "unconditional")
expect_equivalent(pe.results$estimates, -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", {
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
data = dem, match.missing = FALSE,
size.match = 5, qoi = "att",
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm2 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.weight",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm3 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.match", covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
data = dem, match.missing = FALSE,
size.match = 5, qoi = "att",
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm4 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "CBPS.weight",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm5 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "CBPS.match",
data = dem, match.missing = FALSE,covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
outcome.var = "y",
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", {
qoi_ <- "atc"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm2 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.weight",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm3 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.match",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm4 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "CBPS.weight",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
pm5 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "CBPS.match",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
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", {
qoi_ <- "att"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
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("balance checking functions are sensible", {
set.seed(1)
dem$rdata <- runif(runif(nrow(dem)))
pm.obj <- PanelMatch(lead = 0:3, lag = 4, time.id = "year", unit.id = "wbcode2", treatment = "dem",
outcome.var = "y", refinement.method = "mahalanobis",
data = dem, match.missing = TRUE,
covs.formula = ~ tradewb + rdata + I(lag(tradewb, 1:4)) + I(lag(y, 1:4)),
size.match = 5, qoi = "att")
balmat <- get_covariate_balance(pm.obj$att, dem, covariates = c("tradewb", "rdata"),
plot = FALSE, ylim = c(-2,2))
compmat <- matrix(data = c(0.0601621099966881,-0.00601042376056592,
0.00212772294115459,0.104946475743932, 0.133482367739366,
0.0252020903167403,0.051861118295163,-0.125475177405918,
0.0268787670968836,-0.0117184403355875),
ncol = 2, nrow = 5)
expect_equal(nrow(balmat), 5)
expect_equal(ncol(balmat), 2)
expect_equivalent(balmat, compmat)
balmat <- get_covariate_balance(pm.obj$att, dem, covariates = c("tradewb", "rdata"),
plot = FALSE, ylim = c(-2,2), use.equal.weights = TRUE)
expect_false(isTRUE(all.equal(balmat, compmat, check.attributes = FALSE)))
})
test_that("(ATT) PanelEstimate Runs", {
qoi_ <- "att"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "conditional")
comp.results <- c(-0.593399771464233,-0.321260212377162,0.456311286847623,1.73182162255356)
expect_equivalent(pe.results$estimates, comp.results)
})
test_that("(ATC) PanelEstimate Runs", {
qoi_ <- "atc"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "conditional")
comp.results <- c(-0.7399887, -0.1418777, -0.4914594, -0.1423150)
expect_equivalent(pe.results$estimates, comp.results, tolerance = .000001)
})
test_that("(ART) PanelEstimate Runs", {
qoi_ <- "art"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "conditional")
comp.results <- -c(5.2177188648897,8.02138564165901,8.75646876914828,8.12399471507353)
expect_equivalent(pe.results$estimates, comp.results)
})
test_that("(ATE) PanelEstimate Runs", {
qoi_ <- "ate"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, number.iterations = 300)
comp.results <- c(-0.73400424, -0.14920097, -0.45276678, -0.06580353)
expect_equivalent(pe.results$estimates, comp.results, tolerance = .0000001)
})
test_that("(ATT) bootstrap SEs", {
qoi_ <- "att"
set.seed(1)
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, number.iterations = 100)
comp.results <- c(-0.593399771464233,-0.321260212377162,0.456311286847623,1.73182162255356)
expect_equivalent(pe.results$estimates, comp.results)
expect_equivalent(pe.results$standard.error, c(0.8701336, 1.3611202, 1.7512925, 2.0019833), tolerance = .0000001)
})
test_that("(ATC) bootstrap SEs", {
qoi_ <- "atc"
set.seed(1)
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, number.iterations = 100)
comp.results <- c(-0.7399887, -0.1418777, -0.4914594, -0.1423150)
expect_equivalent(pe.results$estimates, comp.results, tolerance = .0000001)
expect_equivalent(pe.results$standard.error, c(0.7027994, 1.3144841, 1.7200521, 2.1352594 ), tolerance = .0000001)
})
test_that("(ART) bootstrap SEs", {
qoi_ <- "art"
set.seed(1)
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, number.iterations = 100)
comp.results <- -c(5.2177188648897,8.02138564165901,8.75646876914828,8.12399471507353)
expect_equivalent(pe.results$estimates, comp.results)
expect_equivalent(pe.results$standard.error, c(1.342158, 2.159589, 2.869549, 3.231702), tolerance = .000001)
})
test_that("(ATE) bootstrap SEs", {
set.seed(1)
qoi_ <- "ate"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, number.iterations = 100)
comp.results <- c(-0.73400424, -0.14920097, -0.45276678, -0.06580353)
expect_equivalent(pe.results$estimates, comp.results, tolerance = .000001)
expect_equivalent(pe.results$standard.error, c(0.6953794, 1.2931504, 1.6894504, 2.0902084), tolerance = .0000001)
})
test_that("(ATT) PanelEstimate Runs: analytical SEs", {
qoi_ <- "att"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "conditional")
comp.results <- c(-0.593399771464233,-0.321260212377162,0.456311286847623,1.73182162255356)
expect_equivalent(pe.results$estimates, comp.results)
comp.results <- c(0.7386351, 1.2103820 ,1.5592321 ,1.8248642)
names(comp.results) <- paste0("t+", 0:3)
expect_equal(pe.results$standard.error, comp.results, tolerance = .0000001)
})
test_that("(ATC) PanelEstimate Runs: analytical SEs", {
qoi_ <- "atc"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "conditional")
comp.results <- c(-0.7399887, -0.1418777, -0.4914594, -0.1423150)
expect_equivalent(pe.results$estimates, comp.results, tolerance = .000001)
comp.results <- c(0.5917567, 1.1136940, 1.4693785, 1.8571621)
names(comp.results) <- paste0("t+", 0:3)
expect_equal(pe.results$standard.error, comp.results, tolerance = .0000002)
})
test_that("(ART) PanelEstimate Runs: analytical SEs ", {
qoi_ <- "art"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "conditional")
comp.results <- -c(5.2177188648897,8.02138564165901,8.75646876914828,8.12399471507353)
expect_equivalent(pe.results$estimates, comp.results)
comp.results <- c(1.026000, 1.483106 ,1.919551 ,2.150267)
names(comp.results) <- paste0("t+", 0:3)
expect_equal(pe.results$standard.error, comp.results, tolerance = .0000002)
})
test_that("(ATT) PanelEstimate Runs: unconditional analytical SEs", {
qoi_ <- "att"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "unconditional")
comp.results <- c(-0.593399771464233,-0.321260212377162,0.456311286847623,1.73182162255356)
expect_equivalent(pe.results$estimates, comp.results)
comp.results <- c(0.905080467048022,1.48070275292364,1.90752332999506,2.23758074403404)
names(comp.results) <- paste0("t+", 0:3)
expect_equivalent(pe.results$standard.error, comp.results, tolerance = .0000001)
})
test_that("(ATC) PanelEstimate Runs: unconditional analytical SEs", {
qoi_ <- "atc"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "unconditional")
comp.results <- c(-0.7399887, -0.1418777, -0.4914594, -0.1423150)
expect_equivalent(pe.results$estimates, comp.results, tolerance = .000001)
comp.results <- c(0.7086883, 1.3301189, 1.7552049, 2.2180256)
names(comp.results) <- paste0("t+", 0:3)
expect_equivalent(pe.results$standard.error, comp.results, tolerance = .0000002)
})
test_that("(ART) PanelEstimate Runs: unconditional analytical SEs ", {
qoi_ <- "art"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "unconditional")
comp.results <- -c(5.2177188648897,8.02138564165901,8.75646876914828,8.12399471507353)
expect_equivalent(pe.results$estimates, comp.results)
comp.results <- c(1.57127705575129,2.31146328482272,2.86362720065278,3.09207201707423)
names(comp.results) <- paste0("t+", 0:3)
expect_equivalent(pe.results$standard.error, comp.results, tolerance = .0000002)
})
test_that("(ATE) PanelEstimate fails: analytical SEs ", {
qoi_ <- "ate"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
expect_error(PanelEstimate(pm1, data = dem, se.method = "conditional"))
expect_error(PanelEstimate(pm1, data = dem, se.method = "unconditional"))
})
test_that("summary.PanelEstimate (conditional)", {
qoi_ <- "att"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "conditional")
expect_output(summary(pe.results))
expect_true(all(length(summary(pe.results)) == 3))
comp.vec <- c(-0.593399771464233,-0.321260212377162,0.456311286847623,1.73182162255356,0.738635065855285,1.21038195434255,1.55923210008201,1.82486418813223,-2.04109789825896,-2.69356525042577,-2.59972747285187,-1.84484646286253,0.854298355330497,2.05104482567144,3.51235004654712,5.30848970796966)
cmat <- summary(pe.results, verbose = FALSE)
attributes(cmat) <- NULL #just compare the numbers
cmat <- unlist(cmat)
expect_equal(cmat, comp.vec, tolerance = .000001)
expect_identical(pe.results$qoi, "att")
qoi_ <- "atc"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "conditional")
expect_output(summary(pe.results))
expect_true(all(length(summary(pe.results)) == 3))
comp.vec <- c(-0.7399887237467,-0.141877691307886,-0.491459440095836,-0.142314999825745,0.591756652995951,1.11369402788093,1.46937851945315,1.85716210624063,-1.89981045123073,-2.32467787575185,-3.37138841788079,-3.78228584150992,0.419833003737329,2.04092249313608,2.38846953768912,3.49765584185843)
cmat <- summary(pe.results, verbose = FALSE)
attributes(cmat) <- NULL #just compare the numbers
cmat <- unlist(cmat)
expect_equal(cmat, comp.vec, tolerance = .000001)
expect_identical(pe.results$qoi, "atc")
qoi_ <- "art"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "conditional")
expect_output(summary(pe.results))
expect_true(all(length(summary(pe.results)) == 3))
comp.vec <- c(-5.2177188648897,-8.02138564165901,-8.75646876914828,-8.12399471507353,1.02600037922772,1.48310644776257,1.91955116019568,2.15026718759732,-7.22864265630046,-10.9282208645128,-12.5187199096139,-12.3384409599025,-3.20679507347894,-5.11455041880524,-4.99421762868267,-3.90954847024455)
cmat <- summary(pe.results, verbose = FALSE)
attributes(cmat) <- NULL #just compare the numbers
cmat <- unlist(cmat)
expect_equal(cmat, comp.vec, tolerance = .000001)
expect_identical(pe.results$qoi, "art")
})
test_that("summary.PanelEstimate (unconditional)", {
qoi_ <- "att"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "unconditional")
expect_output(summary(pe.results))
expect_true(all(length(summary(pe.results)) == 3))
comp.vec <- c(-0.593399771464233,-0.321260212377162,0.456311286847623,1.73182162255356,0.905080467048022,1.48070275292364,1.90752332999506,2.23758074403404,-2.36732488998905,-3.22338427991681,-3.2823657396126,-2.65375604825349,1.18052534706058,2.58086385516248,4.19498831330785,6.11739929336062)
cmat <- summary(pe.results, verbose = FALSE)
attributes(cmat) <- NULL #just compare the numbers
cmat <- unlist(cmat)
expect_equal(cmat, comp.vec, tolerance = .000001)
expect_identical(pe.results$qoi, "att")
qoi_ <- "atc"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "unconditional")
expect_output(summary(pe.results))
expect_true(all(length(summary(pe.results)) == 3))
comp.vec <- c(-0.7399887237467,-0.141877691307886,-0.491459440095836,-0.142314999825745,0.708688258862262,1.33011893273585,1.75520486661622,2.21802563150778,-2.12899218738313,-2.74886289462501,-3.93159776415305,-4.4895653543677,0.649014739889732,2.46510751200924,2.94867888396138,4.20493535471621)
cmat <- summary(pe.results, verbose = FALSE)
attributes(cmat) <- NULL #just compare the numbers
cmat <- unlist(cmat)
expect_equal(cmat, comp.vec, tolerance = .000001)
expect_identical(pe.results$qoi, "atc")
qoi_ <- "art"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
pe.results <- PanelEstimate(pm1, data = dem, se.method = "unconditional")
expect_output(summary(pe.results))
expect_true(all(length(summary(pe.results)) == 3))
comp.vec <- c(-5.2177188648897,-8.02138564165901,-8.75646876914828,-8.12399471507353,1.57127705575129,2.31146328482272,2.86362720065278,3.09207201707423,-8.29736530389636,-12.5517704314982,-14.369074947577,-14.1843445061431,-2.13807242588304,-3.49100085181983,-3.14386259071958,-2.06364492400392)
cmat <- summary(pe.results, verbose = FALSE)
attributes(cmat) <- NULL #just compare the numbers
cmat <- unlist(cmat)
expect_equal(cmat, comp.vec, tolerance = .000001)
expect_identical(pe.results$qoi, "art")
})
test_that("summary.PanelEstimate (bootstrap)", {
qoi_ <- "att"
pm1 <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = qoi_,
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = FALSE)
set.seed(1)
pe.results <- PanelEstimate(pm1, data = dem)
expect_output(summary(pe.results))
cmat <- summary(pe.results, verbose = FALSE)
attributes(cmat) <- NULL
cmat <- unlist(cmat)
comp.vec <- c(-0.593399771464233,-0.321260212377162,0.456311286847623,1.73182162255356,0.906705857062448,1.46876653085356,1.87876179592695,2.21608840568008,-2.47319633748927,-3.25290871525436,-3.34863750081872,-2.68949846129008,1.12752178115124,2.43516177434591,4.04890571881315,5.89171531990835)
expect_equal(cmat, comp.vec, tolerance = .0000001)
})
test_that("set level treatment effects", {
PM.results <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.match",
data = dem, match.missing = TRUE,
covs.formula = ~ I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
outcome.var = "y", lead = 0:4, forbid.treatment.reversal = FALSE,
placebo.test = FALSE)
set.effects <- get_set_treatment_effects(pm.obj = PM.results, data = dem, lead = 0:1)
#mean(set.effects[[1]], na.rm = TRUE)
#mean(set.effects[[2]], na.rm = TRUE)
pe.results <- PanelEstimate(PM.results, data = dem, se.method = "conditional")
expect_equivalent(c(mean(set.effects[[1]], na.rm = TRUE),
mean(set.effects[[2]], na.rm = TRUE)),
pe.results$estimates[1:2], tolerance = .000001)
PM.results <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.match",
data = dem, match.missing = TRUE,
covs.formula = ~ I(lag(tradewb, 1:4)),
size.match = 5, qoi = "art",
outcome.var = "y", lead = 0:4, forbid.treatment.reversal = FALSE,
placebo.test = FALSE)
set.effects <- get_set_treatment_effects(pm.obj = PM.results, data = dem, lead = 0:1)
#mean(set.effects[[1]], na.rm = TRUE)
#mean(set.effects[[2]], na.rm = TRUE)
pe.results <- PanelEstimate(PM.results, data = dem, se.method = "conditional")
expect_equivalent(c(mean(set.effects[[1]], na.rm = TRUE),
mean(set.effects[[2]], na.rm = TRUE)),
pe.results$estimates[1:2], tolerance = .000001)
PM.results <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.match",
data = dem, match.missing = TRUE,
covs.formula = ~ I(lag(tradewb, 1:4)),
size.match = 5, qoi = "atc",
outcome.var = "y", lead = 0:4, forbid.treatment.reversal = FALSE,
placebo.test = FALSE)
set.effects <- get_set_treatment_effects(pm.obj = PM.results, data = dem, lead = 0:1)
#mean(set.effects[[1]], na.rm = TRUE)
#mean(set.effects[[2]], na.rm = TRUE)
pe.results <- PanelEstimate(PM.results, data = dem, se.method = "conditional")
expect_equivalent(c(mean(set.effects[[1]], na.rm = TRUE),
mean(set.effects[[2]], na.rm = TRUE)),
pe.results$estimates[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("test placebo test", {
PM.results <- PanelMatch(lag = 4,
time.id = "year",
unit.id = "wbcode2",
treatment = "dem",
refinement.method = "mahalanobis",
data = dem,
match.missing = TRUE,
covs.formula = ~ I(lag(tradewb, 1:4)),
size.match = 5, qoi = "art",
outcome.var = "y", lead = 0:4,
forbid.treatment.reversal = FALSE,
placebo.test = TRUE)
set.seed(1)
pt.res <- placebo_test(PM.results,
data = dem,
number.iterations = 100,
se.method = "bootstrap",
plot = FALSE)
est.comps <- c(20.438656,
4.110167,
-21.562320)
st.comps <- c(28.54986,
23.67567,
17.30092)
expect_equivalent(pt.res$estimates, est.comps, tolerance = .00001)
expect_equivalent(pt.res$standard.errors, st.comps, tolerance = .00001)
PM.results <- PanelMatch(lag = 4,
time.id = "year",
unit.id = "wbcode2",
treatment = "dem",
refinement.method = "mahalanobis",
data = dem,
match.missing = TRUE,
covs.formula = ~ I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
outcome.var = "y", lead = 0:4,
forbid.treatment.reversal = FALSE,
placebo.test = TRUE)
set.seed(1)
pt.res <- placebo_test(PM.results,
data = dem,
number.iterations = 100,
se.method = "bootstrap",
plot = FALSE)
est.comps <- c(20.490151,
8.484286,
8.649806)
st.comps <- c(18.33094,
17.76234,
13.37736)
expect_equivalent(pt.res$estimates, est.comps, tolerance = .00001)
expect_equivalent(pt.res$standard.errors, st.comps, tolerance = .00001)
pt.res <- placebo_test(PM.results,
data = dem,
se.method = "conditional",
plot = FALSE)
est.comps <- c(20.490151,
8.484286,
8.649806)
st.comps <- c(16.30824,
15.11819,
11.29278)
expect_equivalent(pt.res$estimates, est.comps, tolerance = .00001)
expect_equivalent(pt.res$standard.errors, st.comps, tolerance = .00001)
pt.res <- placebo_test(PM.results,
data = dem,
se.method = "unconditional",
plot = FALSE)
est.comps <- c(20.490151,
8.484286,
8.649806)
st.comps <- c(19.87698,
18.35898,
13.72441)
expect_equivalent(pt.res$estimates, est.comps, tolerance = .00001)
expect_equivalent(pt.res$standard.errors, st.comps, tolerance = .00001)
})
test_that("ensure parallel bootstrap runs without warning, error", {
PM.results <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.match",
data = dem, match.missing = TRUE, covs.formula = ~ tradewb,
size.match = 5, qoi = "att", outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_no_error(PanelEstimate(sets = PM.results,
number.iterations = 1000,
data = dem,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
expect_no_warning(PanelEstimate(sets = PM.results,
number.iterations = 1000,
data = dem,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
PM.results <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.match",
data = dem, match.missing = TRUE, covs.formula = ~ tradewb,
size.match = 5, qoi = "art", outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_no_error(PanelEstimate(sets = PM.results,
number.iterations = 1000,
data = dem,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
expect_no_warning(PanelEstimate(sets = PM.results,
number.iterations = 1000,
data = dem,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
PM.results <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.match",
data = dem, match.missing = TRUE, covs.formula = ~ tradewb,
size.match = 5, qoi = "atc", outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_no_error(PanelEstimate(sets = PM.results,
number.iterations = 1000,
data = dem,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
expect_no_warning(PanelEstimate(sets = PM.results,
number.iterations = 1000,
data = dem,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
PM.results <- PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "ps.match",
data = dem, match.missing = TRUE, covs.formula = ~ tradewb,
size.match = 5, qoi = "ate", outcome.var = "y",
lead = 0:4, forbid.treatment.reversal = FALSE)
expect_no_error(PanelEstimate(sets = PM.results,
number.iterations = 1000,
data = dem,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
expect_no_warning(PanelEstimate(sets = PM.results,
number.iterations = 1000,
data = dem,
se.method = "bootstrap",
parallel = TRUE,
num.cores = 4))
})
test_that("forbid treatment reversal restrictions are triggered correctly", {
expect_no_error(PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "att",
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = TRUE))
expect_no_error(PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "art",
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = TRUE))
expect_error(PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "atc",
outcome.var = "y",
lead = 0:3, forbid.treatment.reversal = TRUE))
expect_error(PanelMatch(lag = 4, time.id = "year", unit.id = "wbcode2",
treatment = "dem", refinement.method = "mahalanobis",
data = dem, match.missing = FALSE, covs.formula = ~ I(lag(y, 1:4)) + I(lag(tradewb, 1:4)),
size.match = 5, qoi = "ate",
outcome.var = "y",
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.