Skip to content

Instantly share code, notes, and snippets.

@khakieconomics
Created July 14, 2018 18:59
Show Gist options
  • Save khakieconomics/7478408c4ce2f814716b842b39b0d70e to your computer and use it in GitHub Desktop.
Save khakieconomics/7478408c4ce2f814716b842b39b0d70e to your computer and use it in GitHub Desktop.
library(tidyverse); library(lfe)
some_data <- expand.grid(time = 1:10, individual = 1:200) %>%
left_join(data_frame(time = 1:10, time_effects= rnorm(10))) %>%
left_join(data_frame(individual = 1:200, individual_effects= rnorm(200))) %>%
mutate(treatment = sample(0:1, n(), replace = T),
outcome = time_effects + individual_effects + 1 * treatment + rnorm(n())) %>%
group_by(time) %>%
mutate(demeaned_outcome = outcome - mean(outcome),
demeaned_treatment = treatment - mean(treatment)) %>%
group_by(individual) %>%
mutate(demeaned_outcome = outcome - mean(outcome),
demeaned_treatment = treatment - mean(treatment))
fit_levels <- felm(outcome ~ treatment | time + individual | 0 | 0, data = some_data)
fit_demeaned <- felm(demeaned_outcome ~ demeaned_treatment | time + individual | 0 | 0, data = some_data)
coef(fit_levels) - coef(fit_demeaned)
vcov(fit_levels) - vcov(fit_demeaned)
summary(fit_levels)$rdf == summary(fit_demeaned)$rdf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment