как рассчитываются степени свободы в plm ::: vcovD C .plm? - PullRequest
1 голос
/ 22 апреля 2020

Я использую модель с фиксированными эффектами с фиксированными по времени и группами эффектами. Далее я хочу рассчитать надежные кластерные стандартные ошибки. Поэтому я использую coeftest(model, vcov = vcovDC(model))

Я не понимаю, как рассчитываются степени свободы для предоставленной t-статистики. Использует ли он те же степени свободы, что и в представленной модели с фиксированным эффектом plm, или они настроены. Вероятно, мой вопрос скорее; корректируются ли степени свободы, когда для двухсторонней модели с фиксированным эффектом используются кластерные стандартные ошибки, или они остаются неизменными?

1 Ответ

1 голос
/ 22 апреля 2020

plm вычисляет обычную дисперсионно-ковариационную матрицу (VCOV). Когда вы используете summary на вашем plm объекте (что вы, вероятно, подразумеваете под «предоставленной моделью фиксированного эффекта plm»), фактически применяется метод plm:::summary.plm, который использует обычные стандартные ошибки (SE) без степеней - исправление свободы, пока вы не измените аргумент vcov= со значением по умолчанию NULL на другой VCOV, рассчитанный по-другому, например, с vcovCL или vcovDC.

Вы можете сделать lmtest::coeftest(fit, vcov.=...) или напрямую summary(fit, vcov=...), как я покажу вам ниже в примере.

Пример

library(plm)
data(Cigar)
fit <- plm(sales ~ price, data=Cigar, effect="twoways", model="within", 
           index=c("state", "year"))

summary(fit)$coe   
# same:
summary(fit, vcov=NULL)$coe  ## default, ordinary SE
#        Estimate Std. Error   t-value     Pr(>|t|)
# price -1.084712 0.07554847 -14.35782 1.640552e-43

Теперь, чтобы получить надежный стандарт ошибки (без корректировки на кластеризацию), мы можем использовать vcovCL и рассмотреть аргумент type=. В ?sandwich::vcovCL мы можем читать:

HC0 не применяет настройку смещения небольшой выборки. HC1 применяет коррекцию на основе степеней свободы, (n-1) / (nk), где n - количество наблюдений, а k - количество объясняющих или предикторных переменных в модели.

summary(fit, vcov=vcovHC)$coe
# same:
summary(fit, vcov=vcovHC(fit, type="HC0"))$coe  ## robust SE
#        Estimate Std. Error   t-value     Pr(>|t|)
# price -1.084712  0.2406786 -4.506889 7.168418e-06

summary(fit, vcov=vcovHC(fit, type="HC1"))$coe  ## robust SE, df-corrected
#        Estimate Std. Error   t-value    Pr(>|t|)
# price -1.084712  0.2407658 -4.505256 7.22292e-06

То же самое относится к vcovDC и его аргументу type= для устойчивых стандартных ошибок, дважды скорректированных для кластеризации по группе и времени:

summary(fit, vcov=vcovDC(fit))$coe 
# same:
summary(fit, vcov=vcovDC(fit, type="HC0"))$coe  ## double-cluster-robust SE
#        Estimate Std. Error  t-value     Pr(>|t|)
# price -1.084712  0.2923507 -3.71031 0.0002157146

summary(fit, vcov=vcovDC(fit, type="HC1"))$coe  ## double-cluster-robust SE, df-corrected 
#        Estimate Std. Error   t-value     Pr(>|t|)
# price -1.084712  0.2924567 -3.708966 0.0002168511
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...