Type: | Package |
Title: | Goodman-Bacon Decomposition |
Version: | 0.1.1 |
Maintainer: | Evan Flack <evanjflack@gmail.com> |
Description: | Decomposition for differences-in-differences with variation in treatment timing from Goodman-Bacon (2018) <doi:10.3386/w25018>. |
License: | MIT + file LICENSE |
Depends: | R (≥ 2.10) |
Suggests: | knitr, rmarkdown, testthat, ggplot2, covr |
VignetteBuilder: | knitr |
RoxygenNote: | 7.0.2 |
Encoding: | UTF-8 |
LazyData: | true |
NeedsCompilation: | no |
Packaged: | 2020-01-24 20:23:14 UTC; rstudio |
Author: | Evan Flack [aut, cre], Edward Jee [aut] |
Repository: | CRAN |
Date/Publication: | 2020-01-24 20:40:02 UTC |
Goodman-Bacon Decomposition
Description
bacon() is a function that performs the Goodman-Bacon decomposition for differences-in-differences with variation in treatment timing (with or without time-varying covariates).
Usage
bacon(formula, data, id_var, time_var, quietly = F)
Arguments
formula |
an object of class "formula": a symbolic representation of the model to be fitted. Must be of the form y ~ D + controls, where y is the outcome variable, D is the binary treatment indicator, and 'controls' can be any additional control variables. Do not include the fixed effects in the formula. If using '.' notation must be of the form y ~ D + . - FE1 - FE2 |
data |
a data.frame containing the variables in the model. |
id_var |
character, the name of id variable for units. |
time_var |
character, the name of time variable. |
quietly |
logical, default = FALSE, if set to TRUE then bacon() does not print the summary of estimates/weights by type (e.g. Treated vs Untreated) |
Value
If control variables are included in the formula, then an object of class "list" with three elements:
Omega |
a number between 0 and 1, the weight of the within timing group coefficient |
beta_hat_w |
a number, the within timing group coefficient |
two_by_twos |
a data.frame with the covariate adjusted 2x2 estimates and weights |
If not control variables are included then only the two_by_twos data.frame is returned.
Examples
# Castle Doctrine (Uncontrolled)
df_bacon <- bacon(l_homicide ~ post,
data = bacondecomp::castle,
id_var = "state",
time_var = "year")
# Castle Doctrine (Controlled)
ret_bacon <- bacon(l_homicide ~ post + l_pop + l_income,
data = bacondecomp::castle,
id_var = "state",
time_var = "year")
Data from Cheng and Hoekstra (2013, JHR)
Description
Data from Cheng and Hoekstra (2013, JHR)
Usage
castle
Format
A data.frame with 520 observations and 159 variables
- st
The state (unit of analysis).
- year
Calendar year (time).
- l_homicide
Log of state/year homicide rate
- post
Indicator whether castle reform has been implemented
Data from Stevenson and Wolfers (2006, QJE)
Description
Data from Stevenson and Wolfers (2006, QJE)
Usage
divorce
Format
A data.frame with 3366 observations and 147 variables
Aggregated data from Goodman (In Press)
Description
A data set containing state/year level data on an educational reform and future income. This is an aggregated version of the data used by Goodman (2019, JOLE) to estimate the effect of compulsory high school math coursework on future earnings.
Usage
math_reform
Format
A data.frame with 520 observations and 5 variables
- state
The state (unit of analysis).
- class
The high school class (time).
- reform_math
Indicator for whether the reform was in place for the state/class.
- reformyr_math
The year the math reform was first implemented for the state. Set to NA if never implemented.
- incearn_ln
Natural log of future income.