plm:::vcovDC.plm 中的自由度是如何计算的?
how are the Degrees of freedom calculated in plm:::vcovDC.plm?
我使用具有时间和组固定效应的固定效应模型。此外,我想计算稳健的聚类标准误差。因此,我使用 coeftest(model, vcov = vcovDC(model))
我不明白所提供的 t 统计量的自由度是如何计算的。它是否使用与提供的 plm 固定效应模型中相同的自由度,或者它们是否经过调整。可能我的问题是;当一个人使用双因素固定效应模型的聚类标准误差时,自由度是调整的,还是保持不变?
plm
计算普通方差-协方差矩阵 (VCOV)。当您在 plm
对象上使用 summary
(您可能用 "provided plm-fixed-effect model" 表示的意思)时,实际上应用了 plm:::summary.plm
方法,它使用没有度数的普通标准误差 (SE) -自由校正,直到您将默认为 NULL
的 vcov=
参数更改为另一个计算不同的 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 applies no small sample bias adjustment. HC1 applies a degrees of
freedom-based correction, (n-1)/(n-k) where n is the number of
observations and k is the number of explanatory or predictor variables
in the model.
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
我使用具有时间和组固定效应的固定效应模型。此外,我想计算稳健的聚类标准误差。因此,我使用 coeftest(model, vcov = vcovDC(model))
我不明白所提供的 t 统计量的自由度是如何计算的。它是否使用与提供的 plm 固定效应模型中相同的自由度,或者它们是否经过调整。可能我的问题是;当一个人使用双因素固定效应模型的聚类标准误差时,自由度是调整的,还是保持不变?
plm
计算普通方差-协方差矩阵 (VCOV)。当您在 plm
对象上使用 summary
(您可能用 "provided plm-fixed-effect model" 表示的意思)时,实际上应用了 plm:::summary.plm
方法,它使用没有度数的普通标准误差 (SE) -自由校正,直到您将默认为 NULL
的 vcov=
参数更改为另一个计算不同的 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 applies no small sample bias adjustment. HC1 applies a degrees of freedom-based correction, (n-1)/(n-k) where n is the number of observations and k is the number of explanatory or predictor variables in the model.
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