使用贬损数据的固定效应:为什么使用 -plm- 时标准错误不同?

机器算法验证 r 标准错误 面板数据 固定效应模型
2022-03-11 23:31:06

我正在拟合一个固定效应模型,截距处于cluster水平。

最直接的方法之一可能是使用-plm-包。另一种众所周知的可能性是将OLS(即采用-lm-)应用于贬损数据,其中均值在聚类级别上采用。

第二种方法通常称为内部转换从计算的角度来看,这非常方便,因为我们仍然在聚类级别控制未观察到的异质性,但我们不需要估计所有时间固定的截距。

这两种方法我都试过了,结果很奇怪。在实践中,感兴趣的回归器的系数 ,x在两种情况下都是相同的。但是,它的标准误差(实际上是回归的所有其他相关量:R 平方、F 检验等)是不同的。

请注意,我已经仔细阅读了R文档-plm-作者的相关论文,其中声明包应用了内部转换,然后应用 OLS,就像我一样......

R脚本是:

# set seed, load packages, create fake sample

set.seed(999)
library(plyr)
library(plm)

dat <- expand.grid(id=factor(1:3), cluster=factor(1:6))
dat <- cbind(dat, x=runif(18), y=runif(18, 2, 5))


############################
#   FE model using -plm-   #
############################

# model fit  
fe.1 <- plm(y ~ x, data=dat, index="cluster", model="within")

# estimated coefficient and standard error of x
b.1 <- summary(fe.1)$coefficients[,1]
    se.1 <- summary(fe.1)$coefficients[,2]


######################################
#   OLS on within-transformed data   #
######################################

# augmenting data frame with cluster-mean centered variables 
dat.2 <- ddply(dat, .(cluster), transform, dem_x=x-mean(x), dem_y=y-mean(y))

# model fit
fe.2 <- lm(dem_y ~ dem_x - 1, data=dat.2)

# estimated coefficient and standard error of x
b.2 <- summary(fe.2)$coefficients[1,1]
    se.2 <- summary(fe.2)$coefficients[1,2]


#########################
#   models comparison   #
#########################

b.1; b.2
se.1; se.2

summary(fe.1)
summary(fe.2)

请注意,在第二个模型中,需要手动消除模型中的截距。

1个回答

如果您仔细查看输出,您会注意到自由度不同。自由度用于计算标准误差,因此它们对于您的贬低 lm 是错误的。当您将 lm 应用于被贬低的数据时, lm 不知道均值已被减去,或者等效地,您已消除了集群级别的虚拟变量。如果你包括假人,如

summary(lm(y ~ x + cluster,data=dat))

考虑了自由度。