# remove.packages("HonestDiD")
# install.packages(".", repos=NULL, type="source")
# testthat::test_dir("tests")
library(lfe)
library(haven)
library(testthat)
library(HonestDiD)
data(BCdata_EventStudy)
data(LWdata_EventStudy)
BC_numPrePeriods <- length(BCdata_EventStudy$prePeriodIndices)
BC_numPostPeriods <- length(BCdata_EventStudy$postPeriodIndices)
BC_l_vec <- basisVector(index = 1, size = BC_numPostPeriods)
BC_l_vec <- cbind(c(1, 0, 0, 0))
if ( Sys.getenv("HONESTDID_RUN_TESTS") == "1" ) {
test_that("HonestDiD base ran with no errors", {
BC_DeltaSDNB_RobustResults <-
createSensitivityResults(betahat = BCdata_EventStudy$betahat,
sigma = BCdata_EventStudy$sigma,
numPrePeriods = BC_numPrePeriods,
numPostPeriods = BC_numPostPeriods,
l_vec = BC_l_vec,
method = "FLCI",
Mvec = seq(from=0, to=0.3, by=0.1))
BC_DeltaSDNB_RobustResultsConditional <-
createSensitivityResults(betahat = BCdata_EventStudy$betahat,
sigma = BCdata_EventStudy$sigma,
numPrePeriods = BC_numPrePeriods,
numPostPeriods = BC_numPostPeriods,
l_vec = BC_l_vec,
method = "Conditional",
Mvec = seq(from=0, to=0.3, by=0.1))
BC_DeltaSDNB_RobustResultsCF <-
createSensitivityResults(betahat = BCdata_EventStudy$betahat,
sigma = BCdata_EventStudy$sigma,
numPrePeriods = BC_numPrePeriods,
numPostPeriods = BC_numPostPeriods,
l_vec = BC_l_vec,
method = "C-F",
Mvec = seq(from=0, to=0.3, by=0.1))
BC_DeltaSDNB_RobustResultsCLF <-
createSensitivityResults(betahat = BCdata_EventStudy$betahat,
sigma = BCdata_EventStudy$sigma,
numPrePeriods = BC_numPrePeriods,
numPostPeriods = BC_numPostPeriods,
l_vec = BC_l_vec,
method = "C-LF",
Mvec = seq(from=0, to=0.3, by=0.1))
BC_OriginalResults <-
constructOriginalCS(betahat = BCdata_EventStudy$betahat,
sigma = BCdata_EventStudy$sigma,
numPrePeriods = BC_numPrePeriods,
numPostPeriods = BC_numPostPeriods,
l_vec = BC_l_vec)
BC_DeltaSDNB_SensitivityPlot <-
createSensitivityPlot(robustResults = BC_DeltaSDNB_RobustResults,
originalResults = BC_OriginalResults)
expect_silent(BC_DeltaSDNB_RobustResults)
expect_silent(BC_DeltaSDNB_RobustResultsConditional)
expect_silent(BC_DeltaSDNB_RobustResultsCF)
expect_silent(BC_DeltaSDNB_RobustResultsCLF)
expect_silent(BC_OriginalResults)
expect_silent(BC_DeltaSDNB_SensitivityPlot)
})
} else {
print("HonestDiD base run was skipped")
}
if ( Sys.getenv("HONESTDID_RUN_TESTS") == "1" ) {
test_that("HonestDiD options ran with no errors", {
LWdata_RawData = haven::read_dta(system.file("extdata", "LWdata_RawData.dta", package = "HonestDiD"))
sum(LWdata_RawData$nobs)
# Estimate event study using lfe package
EmpFemale.EventStudy = lfe::felm(emp ~
rtESV13 + rtESV14 + rtESV15 +
rtESV16 + rtESV17 + rtESV18 +
rtESV19 + rtESV110 + rtESV111 + # End Pre-periods
rtESV113 + rtESV114 + rtESV115 +
rtESV116 + rtESV117 + rtESV118 +
rtESV119 + rtESV120 + rtESV121 +
rtESV122 + rtESV123 + rtESV124 +
rtESV125 + rtESV126 + rtESV127 +
rtESV128 + rtESV129 + rtESV130 +
rtESV131 + rtESV132 + rtESV133 +
rtESV134 + rtESV135 + # End post-periods
yearsfcor + yearsflr + aveitc + fscontrol +
asian + black + hispanic + other |
factor(PUS_SURVEY_YEAR)*factor(BIRTHYEAR) +
factor(PUS_SURVEY_YEAR) + factor(BIRTHSTATE) |
0 | BIRTHSTATE,
data = LWdata_RawData,
weights = LWdata_RawData$nobs)
summary(EmpFemale.EventStudy)
coefIndex = which(grepl(x = dimnames(EmpFemale.EventStudy$coefficients)[[1]], pattern = "rtESV"))
betahat = EmpFemale.EventStudy$beta[coefIndex, ]
# Extract estimated variance-covariance matrix of event study coefficients
sigma = EmpFemale.EventStudy$clustervcv[coefIndex, coefIndex]
# Construct vector of event times and the scalar reference period
timeVec = c(seq(from = -11, to = -3, by = 1), seq(from = -1, to = 21, by = 1))
referencePeriod <- -2
postPeriodIndices <- which(timeVec > -2)
prePeriodIndices <- which(timeVec < -2)
LW_numPrePeriods <- length(prePeriodIndices)
LW_numPostPeriods <- length(postPeriodIndices)
LW_l_vec <- basisVector(index = 1, size = LW_numPostPeriods)
for( method in c("C-F", "C-LF", "Conditional", "FLCI") ) {
for( monotonicityDirection in c("increasing", "decreasing") ) {
for ( biasDirection in c("positive", "negative") ) {
LW_DeltaSDNB_RobustResults <-
createSensitivityResults(betahat = betahat,
sigma = sigma,
numPrePeriods = LW_numPrePeriods,
numPostPeriods = LW_numPostPeriods,
l_vec = LW_l_vec,
method = method,
monotonicityDirection = monotonicityDirection,
biasDirection = biasDirection,
Mvec = seq(from=0, to=0.3, by=0.1))
print(c(method, monotonicityDirection, biasDirection, LW_DeltaSDNB_RobustResults))
expect_silent(LW_DeltaSDNB_RobustResults)
}
}
}
for ( method in c(NULL, "C-LF", "Conditional") ) {
for ( monotonicityDirection in c("increasing", "decreasing", NULL) ) {
for ( bound in c("deviation from parallel trends", "deviation from linear trend") ) {
BC_DeltaRM_RobustResults <-
createSensitivityResults_relativeMagnitudes(betahat = BCdata_EventStudy$betahat,
sigma = BCdata_EventStudy$sigma,
numPrePeriods = BC_numPrePeriods,
numPostPeriods = BC_numPostPeriods,
l_vec = BC_l_vec,
gridPoints = 100,
grid.ub = 1,
grid.lb = -1,
bound = bound,
method = method,
monotonicityDirection = monotonicityDirection,
Mbarvec = seq(from=0, to=1, by=0.5))
print(c(method, monotonicityDirection, biasDirection, bound, BC_DeltaRM_RobustResults))
expect_silent(BC_DeltaRM_RobustResults)
}
}
}
for ( method in c(NULL, "C-LF", "Conditional") ) {
for ( biasDirection in c("positive", "negative", NULL) ) {
for ( bound in c("deviation from parallel trends", "deviation from linear trend") ) {
BC_DeltaRM_RobustResults <-
createSensitivityResults_relativeMagnitudes(betahat = BCdata_EventStudy$betahat,
sigma = BCdata_EventStudy$sigma,
numPrePeriods = BC_numPrePeriods,
numPostPeriods = BC_numPostPeriods,
l_vec = BC_l_vec,
gridPoints = 100,
grid.ub = 1,
grid.lb = -1,
bound = bound,
method = method,
biasDirection = biasDirection,
Mbarvec = seq(from=0, to=1, by=0.5))
print(c(method, monotonicityDirection, biasDirection, bound, BC_DeltaRM_RobustResults))
expect_silent(BC_DeltaRM_RobustResults)
}
}
}
})
} else {
print("HonestDiD options run was skipped")
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.