具有单变量回归的异方差一致协方差矩阵[R]

时间:2011-04-29 01:30:19

标签: r

如何计算单变量回归的异方差一致协方差矩阵(HCCM)(即一个回归量且没有截距的OLS回归)?

背景故事:我有一个固定效果面板回归,但只有一个回归量。所以我可以使用最小二乘虚拟变量(LSDV)方法

lm.ser.yr <- lm(realwage ~ placebo.ser + factor(incyear) + 0, data = cps)

或者我可以在年级贬低LHS并退步

cps <- ddply(cps, .(incyear), transform, realwage.dm.yr = realwage - mean(realwage))
lm.ser.yr <- lm(realwage.dm.yr ~ placebo.ser + 0, data = cps)

但两者都存在问题。

  • 使用LSDV方法和足够的假人,lm对象变得很大(每个1 gb)。这主要是因为我必须保持较大的qr矩阵将其传递给vcovHC()以计算HCCM,HCCM经常停在“无法分配大小矢量”错误上(或者很多分页)。

  • 在估算器中贬低一切都很好,但我无法计算HCCM,因为vcovHC()hccm()都没有处理无拦截单变量lm对象(即,它向后吐出NA,我最好能分辨出来的是因为没有截距和虚拟变量,我的残差远离零均值。)

是否有解决方案可以非常积极地管理内存和/或迁移到云端?

1 个答案:

答案 0 :(得分:3)

来自vcovHC()软件包的

plm似乎处理lm()模型而没有截获完全正确:

library(plm)
df <- data.frame('a'=rnorm(1000), 'b'=rnorm(1000))
mod <- lm(a ~ b -1, df)
vcovHC(mod)

编辑:这是一些手动计算它们的代码。

library(Matrix)
e2 = mod$residuals ^ 2
X = model.matrix(mod)
N = nrow(X)
bread = solve(crossprod(X))
I <- Matrix(data=0, ncol=N, nrow=N, sparse=TRUE)
diag(I) <- e2
salami <- t(X) %*% I %*% X 
V = bread %*% salami %*% bread