【问题标题】:R: NA/NaN/Inf in X errorR:X 错误中的 NA/NaN/Inf
【发布时间】:2013-12-27 23:15:47
【问题描述】:

我正在尝试使用 R 执行负二项式回归。当我执行以下命令时:

 DV2.25112013.nb <- glm.nb(DV2.25112013~ Bcorp.Geographic.Proximity + Dirty.Industry +
                Clean.Industry + Bcorp.Industry.Density + State + Dirty.Region +
                Clean.Region + Bcorp.Geographic.Density + Founded.As.Bcorp + Centrality +
                Bcorp.Industry.Density.Squared + Bcorp.Geographic.Density.Squared +
                Regional.Institutionalization + Sales + Any.Best.In.Class +           
                Dirty.Region.Heterogeneity + Clean.Region.Heterogeneity + 
                Ind.Dirty.Heterogeneity+Ind.Clean.Heterogeneity + Industry, 
                data = analysis25112013DF6)

R 给出以下错误:

Error in glm.fitter(x = X, y = Y, w = w, etastart = eta, offset = offset,  : 
  NA/NaN/Inf in 'x'
In addition: Warning message:
step size truncated due to divergence 

我不明白这个错误,因为我的数据矩阵不包含任何 NA/NaN/Inf 值...我该如何解决这个问题?

谢谢你,

【问题讨论】:

  • 看看this question
  • @Stat 大获成功。但是,否则,这(1)实际上是 StackOverflow 而不是 CrossValidated 问题(即编程而不是统计),并且(2)如果没有 tinyurl.com/reproducible-000 可重现的示例很难回答,除非有人碰巧猜对了......
  • 同意其他 cmets(以及所引用的问题):尝试使用许多自变量进行迭代收敛是很糟糕的。

标签: r


【解决方案1】:

我认为这个错误最可能的原因是数据中的负值或零,因为 glm.nb 中的默认链接是“log”。通过更改link="identity" 可以很容易地进行测试。 我也认为你需要尝试更小的模型......也许这些变量的四分之一开始。这还允许您将相关变量添加为捆绑包,因为从名称中可以看出您可能与分类变量存在严重共线性的可能性。

我们确实需要数据描述。我想知道Dirty.Industry + Clean.Industry。使用具有这些水平的因子变量可以更好地处理这种二分法。如果 Clean = not-Dirty,这可以防止共线性。也许与您的“异质性”变量类似。 (我不相信@BenBolker 的评论是正确的。我认为您很有可能在解决编码问题之前首先需要统计咨询。)

require(MASS)
data(quine)  # following example in ?glm.nb page

> quine$Days[1] <- -2

> quine.nb1 <- glm.nb(Days ~ Sex/(Age + Eth*Lrn), data = quine, link = "identity")
Error in eval(expr, envir, enclos) : 
  negative values not allowed for the 'Poisson' family

> quine$Days[1] <- 0
> quine.nb1 <- glm.nb(Days ~ Sex/(Age + Eth*Lrn), data = quine, link = "identity")
Error: no valid set of coefficients has been found: please supply starting values
In addition: Warning message:
In log(y/mu) : NaNs produced

【讨论】:

  • 请注意,日志链接适用于为 0 的数据。使用该链接您正在对平均响应进行建模 - 您不会将链接直接应用于数据本身。
  • 我认为 LHS 输入是“数据”的一部分。
  • 我不明白你在说什么。在负二项式模型中,任何链接都以 0 作为响应不是问题。您实际上并没有记录响应的日志 - 您是说期望值的日志具有线性形式。
  • 同意@Dason,我认为您回答的前两句话是错误的/具有误导性(您从根本上误解了 GLM 中的链接功能如何工作......)我同意可能存在共线性问题/这可能处于“您的模型没有很好地指定以适应”(=统计问题)和“您的模型在原则上是合理的但难以在实践中适应”(=计算问题)之间的界限
  • 仍然认为我们需要更好地描述数据和解决统计问题作为第一要务。由负数或零产生的错误与 OP 提供的错误不匹配,但留下来提供有关最后两个 cmets 的具体示例。
【解决方案2】:

我通过将控制参数放入 maxiter=10 或更低的模型假设中解决了这个问题。默认值为 50 次迭代。也许它对你有更多的迭代。试试吧

【讨论】:

    猜你喜欢
    • 2023-03-05
    • 2018-07-03
    • 1970-01-01
    • 2020-07-24
    • 2019-05-12
    • 2013-10-24
    • 2019-04-04
    • 2013-03-24
    • 2014-03-18
    相关资源
    最近更新 更多