Below is a basic example simulating a panel dataset, running an event study, and visualizing the results.
library(fixes)
library(dplyr)
library(tibble)
set.seed(2)
n_firms <- 1000
n_states <- 50
T <- 36
firm_id <- 1:n_firms
state_id <- sample(n_states, size = n_firms, replace = TRUE)
year <- 1980:2015
fe_firm <- rnorm(n_firms, mean = 0, sd = .5)
fe_year <- rnorm(T, mean = 0, sd = .5)
error <- rnorm(n_firms * T, mean = 0, sd = .5)
treated_1998 <- sample(c(1, 0), size = n_firms,
replace = TRUE, prob = c(1/2, 1/2))
df <- tibble(
firm_id = rep(firm_id, each = T),
state_id = rep(state_id, each = T),
year = rep(year, times = n_firms),
fe_firm = rep(fe_firm, each = T),
fe_year = rep(fe_year, times = n_firms),
error = error,
is_treated = rep(treated_1998, each = T),
after_treat = if_else(is_treated == 1 & year >= 1998, 1, 0),
x1 = runif(n_firms * T),
x2 = rnorm(n_firms * T),
y = case_when(
after_treat == 1 ~
rnorm(n_firms * T, mean = .3, sd = .2) * (year - 1997) + fe_firm + fe_year + error,
TRUE ~ fe_firm + fe_year + error
)
)
# Run the event study (now supports multiple confidence levels)
event_study <- run_es(
data = df,
outcome = y,
treatment = is_treated,
time = year,
timing = 1998,
lead_range = 18,
lag_range = 17,
covariates = ~ x1 + x2,
fe = ~ firm_id + year,
cluster = ~ state_id,
baseline = -1,
interval = 1,
conf.level = c(0.90, 0.95, 0.99) # Multiple CIs now supported!
)
# View results
head(event_study)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4