Я пытался что-то подобное, однако я не мог найти прямого решения. Я оцениваю исследование событий с лагами и лидами на модели fe. Для меня сработало следующее:
ES1<-plm(total_thefts ~ lag6 + lag5 + lag4 + lag3 + lag2 + E + lead1 + lead2 + lead3 + lead4 + lead5 + lead6 + factor(month) + factor(year), data = panel, model="within")
Поскольку у plm нет прямого способа оценить надежные стандартные ошибки, я делаю это вручную и заменяю исходные:
G <- length(unique(panel$id))
c <- G/(G - 1)
robust_se <- coeftest(ES1, c * vcovHC(ES1, type = 'HC1', cluster = 'group'))
ES1<-summary(ES1)
ES1$coefficients[,2:4] <- robust_se[,2:4]
После этого я разделяю свои коэффициенты интереса и оцениваю полосы CI (95%), следуя этому post :
coefs <- tidy(ES1[["coefficients"]])
coefs$conf.low <- coefs$Estimate+c(-1)*coefs$Std..Error*qt(0.975,42)
coefs$conf.high <- coefs$Estimate+c(1)*coefs$Std..Error*qt(0.975,42)
Наконец, после этого я сохраняю свои параметры интереса и график исследование события:
interest <- c("lag6","lag5","lag4","lag3","lag2","E","lead1","lead2","lead3","lead4","lead5","lead6")
coefs <- subset(coefs,coefs$.rownames%in%interest)
coefs$time <- c(seq(-6,-2,1),seq(0,6,1))
ggplot(coefs, aes(time, Estimate))+
geom_line() +
geom_point()+
geom_pointrange(aes(ymin = conf.low, ymax = conf.high))+
geom_hline(yintercept = 0, linetype = 2) +
ggtitle(paste0("N: ",nobs(ES1),", Sample: ",pdim(ES1)$nT$n,", Buff: 1000m"))) +
theme(plot.title = element_text(hjust = 0.5)))
![enter image description here](https://i.stack.imgur.com/aRlyH.png)