我知道这已经被问到了,我已经看过这个主题的至少10个主题,但我仍然无法理解。我正在使用plm包来估计某些面板数据的随机效应模型。我有一个我已指定的模型,但是当我插入一个不包含任何NA的附加变量时,我收到以下错误消息。
lm.fit中的错误(x,y,offset = offset,singular.ok = singular.ok,...): 0(非NA)案件
我尽可能地减少了以下内容。
plm(dependent ~ varA + varB + varC + varD, data=mydata,
model="random", index=c("Name", "Month"), na.action=na.exclude)
没有varA,模型工作正常。代替VarA,我可以插入我拥有的其他变量,有些可以使用,而有些则无法使用。
我的数据可以获得here。
我尝试过使用na.omit(mydata),它有时会工作但不可靠。
任何见解都将受到赞赏。
答案 0 :(得分:1)
这是由于您的数据和模型的具体情况而发生的,因此这是一个统计问题:
Swamy-Arora(random.method = "swarm"
)的默认随机效应方法中使用的回归之间的估计不可用于此模型(4个人(数据中为Name
),同时尝试估计4个协变量和截距),因此模型不能用默认的RE估计器估计。您可以尝试不同的随机效果方法,例如将random.method
设置为amemiya
或walhus
。
plm(dependent ~ varA + varB + varC + varD, data=mydata,
model="random", index=c("Name", "Month"), random.method = "amemiya")
(是的,这里可以改进plm的错误信息。)
答案 1 :(得分:1)
这是一篇旧帖子,但它是对此特定问题的唯一参考。我只是使用plm包和plm函数来解决这个问题。在这种情况下,我发现错误消息具有误导性。在我的情况下,完整案例的数量(参见函数complete.cases())不是0,我无法弄清楚为什么plm函数给我这个错误信息。
在挖掘了我的数据后,我发现问题实际上是我的数据中存在值为-Inf或Inf的条目。我只是用NA取代了这些条目(具有讽刺意味!),并且plm函数运行顺畅。
请注意,对同一回归公式使用lm函数实际上给了我这个实际的错误消息:
“lm.fit中的错误(x,y,偏移=偏移,singular.ok = singular.ok,...): “y”中的NA / NaN / Inf
这显然更能说明实际情况。
祝你好运
答案 2 :(得分:0)
当尝试使用由字符串组成的变量时,也会出现这个问题。 对我来说,当我尝试使用包含像
这样的列的数据框时,出现了这个确切的错误data$column
"1", "2", "3", "4", ...
使用 as.numeric(data$column)
用对应的数字替换字符串可以解决问题并允许回归。