使用plm包基于事件研究法(event-study regression)进行平行趋势判断,附加计算clustered standard errors,需要单独两行代码
后面使用fixest包中的feols()函数了,这个函数里面可以指定cluster的字段,备忘录一下plm的用法
两种方法的回归结果是一致的
library(modelsummary)
library(fixest)
library(did)
library(dplyr)
library(tidyverse)
library(plm)
library(stargazer)
library(lmtest)
# read data
df <- read.csv("E:\\panel_data.csv", header = 1)
# generate the treatment variable
df <- df %>% mutate(treatment = ifelse(df$nrty > 14, 0, 1))
# run event study regression
g <- plm( formula = ntl ~ i(year, treatment, ref = 14), data = df,
model = "within", effect = "twoways", index = c("id", "year"))
summary(g)
coefplot(g)
cluster_method <- coeftest(g, vcov = function(x)
plm::vcovHC( x, method = 'arellano', cluster = 'group', type = 'HC3') )
cluster_method
参考资料:https://stats.stackexchange.com/questions/10017/standard-error-clustering-in-r-either-manually-or-in-plm#::text=library%20%28multiwayvcov%29%20library%20%28lmtest%29%20data%20%28petersen%29%20m1%20%3C-,%28m1%2C%20%20firmid%20%2B%20year%29%20coeftest%20%28m1%2C%20vcov_both_formula%29
网友评论