【问题标题】:How to deal with Error: 0 (non-NA) cases plm package?如何处理 Error: 0 (non-NA) case plm package?
【发布时间】:2017-01-12 21:49:23
【问题描述】:

我知道有人问过这个问题,并且我已经查看了至少 10 个有关此主题的主题,但我仍然无法理解。我正在使用 plm 包来估计一些面板数据的随机效应模型。我有一个我指定的模型,但是当我插入一个不包含任何 NA 的附加变量时,我收到以下错误消息。

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases

我已尽可能将其缩减为以下内容:

plm(dependent ~ varA + varB + varC + varD, data=mydata,
    model="random", index=c("Name", "Month"), na.action=na.exclude)

没有varA,模型可以正常工作。代替VarA,我可以插入我可以使用的其他变量,其中一些可以工作,而另一些则不能。

我的数据可以通过here获取。

我尝试过使用na.omit(mydata),它有时会起作用,但并不可靠。

任何见解将不胜感激。

【问题讨论】:

    标签: r statistics plm


    【解决方案1】:

    到目前为止,这是一篇旧帖子,但它是在线发布的此特定问题的唯一参考。我刚刚使用 plm 包和 plm 函数专门遇到了这个问题。我发现在这种情况下错误消息具有误导性。在我的情况下,完整案例的数量(请参阅函数 complete.cases())不是 0,我无法弄清楚为什么 plm 函数会给我这个错误消息。

    在挖掘了我的数据后,我发现问题实际上是我的数据中存在值 -Inf 或 Inf 的条目。我只是用 NA 替换了这些条目(讽刺!)并且 plm 函数运行顺利。

    请注意,对相同的回归公式使用 lm 函数实际上给了我这个实际的错误消息:

    “lm.fit 中的错误(x,y,偏移量 = 偏移量,奇异值.ok = 奇异值.ok,...): 'y' 中的 NA/NaN/Inf"

    这显然更能说明实际发生的情况。

    最好的问候

    【讨论】:

    • 感谢分享。从我的数据中可以看出,没有 (-)Inf 案例。不过,希望这可能对其他人有帮助。
    【解决方案2】:

    这是由于您的数据和模型的具体情况而发生的,因此这是一个统计问题:

    在 Swamy-Arora (random.method = "swar") 的默认随机效应方法中使用的间回归对于此模型是不可估计的(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的错误信息可以在这里改进。)

    【讨论】:

    • 我想我不明白。如果估计量产生完美拟合,它不是有效的回归量吗?如果其他方法不起作用?我认为错误消息是无用的,但是您如何确定这一点?另外,你能清理一下你的废话吗?什么是“回归之间”?
    【解决方案3】:

    当尝试使用由字符串组成的变量时,也会出现此问题。 对我来说,当我尝试使用包含类似列的数据框时,就会出现这个确切的错误

    data$column
    "1", "2", "3", "4", ...
    

    使用as.numeric(data$column) 将字符串替换为对应的数值可以解决问题并允许回归。

    【讨论】:

      猜你喜欢
      • 2020-02-22
      • 1970-01-01
      • 2019-06-05
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      相关资源
      最近更新 更多