在面板回归模型(plm,R)中计算稳健标准误差时出错

时间:2014-03-24 20:13:00

标签: r standard-error robust plm

我正在使用plm库来运行固定效果回归和三明治,lmtest库来计算稳健的标准错误。运行回归没有问题,但在某些情况下,当我去计算标准错误时,我得到以下错误:

library(plm)
library(sandwich)
library(lmtest)

fe_reg <- plm(y ~ x + I(x^2)+factor(date), data=reg_data, index=c("id","date"), model="within")
coeftest(fe_reg, vcov.=vcovHC(fe_reg, type="HC1"))

RRuntimeError: Error in solve.default(crossprod(demX))
  system is computationally singular: reciprocal condition number = 1.84726e-25

我在计算系数或&#34;正常&#34;时没有任何问题。标准误差(即同方差)。另外,当我省略二次项时,我没有问题计算强大的标准误差:

fe_reg <- plm(y ~ x +factor(date), data=reg_data, index=c("id","date"), model="within")  

任何人都知道发生了什么事?如果设计矩阵是单数的,则系数不应该被计算出来,所以我不知道在计算标准误差时问题的来源。

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我没记错的话,plm并不是很冗长。我认为有可能有一个奇异的矩阵,但plm不会抱怨。 lm通常更冗长。所以试试

 lm_mod1 <- lm(y ~ x + I(x^2)+factor(date), data=reg_data)
 summary(lm_mod1)
如果在计算一个系数时出现问题(系数为lm并且输出顶部应该有一个注释),

NA将在其摘要输出中告诉您。 编辑:在这种情况下,lm的摘要输出顶部的注释应为“系数:(1由于奇点而未定义)”。

编辑还有另一种可能性,即coeftest不起作用: 如果model.matrix包含非常大的值以及非常小的值,solve可能无法通过vcovHC函数中的计算来求解线性方程组。因此,如果是这种情况,请查看model.matrix(y ~ x + I(x^2)+factor(date), data=reg_data)。如果是这样,请尝试重新调整一些变量(例如,将oder除以100或1000倍[有时log()也有意义)。注意,由于尺度的变化,系数的解释会发生变化!