I'm currently working on a fixed effects regression in r.
I have a dataset consisting of the following variables: total compensation of the CEO of a firm (TOTAL_COMP)
, the firm code (GVKEY)
, the fiscal year (FISCAL_YEAR)
, a number of firm characteristics (like assets (AT)
) and the industry of the firm (SIC)
.
Although the data is proprietary it looks like:
e.g.
TOTAL_COMP <- c(100, 200, 50, 150, 300, 200, 150, 75)
GVKEY <- c("103", "103", "103", "103", "104", "104", "104", "104")
AT <- c(1000, 1100, 1200, 1300, 2000, 2100, 2200, 2300)
FISCAL_YEAR <- c(2015, 2016, 2017, 2018, 2015, 2016, 2017, 2018)
SIC <- c(78, 78, 78, 78, 80, 80, 80, 80)
I used the plm function
and ran a fixed effects regression with industry (SIC)
fixed effects.
model <- plm(TOTAL_COMP ~ AT, index = "SIC", model = "within", data = COMBINED_DATA)
I subsequently want to cluster the standard errors at the firm (GVKEY)
and not the industry (SIC)
level. I am, however, not sure which function to use. I tried:
coeftest(model, vcov = vcovHC(regression, type = "HC0", cluster = "group"))
but am afraid that this clusters the standard errors at the industry (SIC)
instead of the firm (GVKEY)
level. How do I compute the standard errors at the firm (GVKEY)
level?
(packages used: plm
and lmtest
)
CodePudding user response:
You can set SIC
as dummy variable and cluster the standard errors at the firm level:
# The fixed effects model
model <- lm(TOTAL_COMP ~ AT factor(SIC), data = COMBINED_DATA)
# The fixed effects model with cluster settings
library(estimatr)
Clu_robust <- lm_robust(TOTAL_COMP ~ AT factor(SIC),
data = COMBINED_DATA,
clusters = GVKEY,
se_type = 'stata')