【问题标题】:R: Error with polr(): initial value in 'vmmin' is not finiteR:polr()错误:'vmmin'中的初始值不是有限的
【发布时间】:2015-03-07 15:19:40
【问题描述】:

我正在尝试使用 polr 估计有序概率模型: polr(Rating ~ Currac + Debt + Inflation + GDPpc + GDPgr + Ratio + Levelofdev + 欧元区 + 默认,方法 ="probit")

其中 Rating 是有序离散因变量,而独立 变量是一组经济决定因素(例如通货膨胀率)。

但是,我不断收到同样的错误:

optim(s0, fmin, gmin, method = "BFGS", ...) 中的错误: 'vmmin' 中的初始值不是有限的

我在程序的第 523 行的 C 代码 (src/main/optim.c) 中找到了它 最小。因为函数 fminfn 的结果不是,所以抛出错误 有限。在这个函数 fminfn 中,在第 82 行,计算结果为 结果 = REAL(s)[0]/(OS->fnscale)。这对我来说没有多大意义, 但是。

我知道它应该与在 初始值处的无限值。我希望有人能解释 这个更详细,或者帮助我解决这个问题。

从数据集中排除/省略 NA 值并不能解决问题。 但是,当我从 回归者,它突然工作正常。当我删除其他所有内容时 保持通货膨胀和GDPpc,它也仍然有效。

如果您遇到过同样的问题或可能知道如何处理 非常感谢您的回复。

非常感谢,

沃特

【问题讨论】:

  • 这里可能发生的情况是,生成初始值的默认过程对您的模型效果不佳,并导致负无穷大的对数似然。优化器将无法处理这种情况。一种方法是手动指定一些有效的初始值(这可能需要一些猜测)。您可以通过start 参数执行此操作。请注意,这仅在您的模型实际上可以估计并且这纯粹是一个初始值问题时才有效。

标签: r


【解决方案1】:

我在使用 polr() 进行有序逻辑回归时遇到了一个非常相似的问题。我能够使用 rms 包 https://www.rdocumentation.org/packages/rms/versions/6.0-1/topics/orm 中的 orm 函数使算法收敛

仍然值得研究通货膨胀和 GDPpc 的分布与您的模型中跨评级的其他自变量有何不同。

【讨论】:

    【解决方案2】:

    更改启动参数

    正如jrdnmdhl 在 cmets 中指出的那样,这可能是因为初始值不佳。这些是系数和截距的第一个猜测。如果它们不是一个好的猜测,则更难获得准确的答案,因此会出现错误。

    您可以自己猜测并将它们添加到start 参数中。

    一个例子

    我有一个简单的模型m1 可以工作,还有一个更复杂的模型m2 不行。我在m1 中成功估计了系数和截距,并将它们用于m2,因为这些应该接近“正确”值。对于复杂模型的额外项,我使用零作为第一个猜测(但它可能是任何值)。

    m1 <- polr(y ~ a, data = example)
    

    获取简单模型系数 (m1$coefficients) 和截距 (m1$zeta)。在复杂模型中的任何新回归参数的系数末尾放置一个零。就我而言,只有一个,b

    myGuess <- c(m1$coefficients, 0, m1$zeta)
    

    将此新向量用作start 参数。

    m2 <- polr(y ~ a+b, data = example, start = myGuess)
    

    如果零不起作用,请尝试自己对回归系数的最佳猜测。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-26
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2020-01-29
      • 2015-09-03
      相关资源
      最近更新 更多