R:polr()出错:'vmmin'中的初始值不是有限的

时间:2015-03-07 15:19:40

标签: r

我尝试使用polr估算有序的probit模型: polr(评级~Currac +债务+通货膨胀+ GDPpc + GDPgr +比率+ Levelofdev + Eurozone + Default,method =" probit")

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

但是,我一直收到同样的错误:

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

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

我知道它应该与评估的函数有关 起始值的无限值。我希望有人可以解释 这更详细,或帮助我克服这个问题。

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

如果您遇到过相同的问题或者可能知道如何处理 对此,我非常感谢您的回复。

非常感谢,

的Wouter

2 个答案:

答案 0 :(得分:1)

当使用polr()进行有序逻辑回归时,我遇到了一个非常相似的问题。我可以使用rms软件包https://www.rdocumentation.org/packages/rms/versions/6.0-1/topics/orm

中的orm函数来收敛该算法。

仍然值得研究通货膨胀率和GDPpc的分布与模型中不同等级之间的其他自变量之间的差异。

答案 1 :(得分:0)

更改启动参数

正如 jrdnmdhl 在评论中指出的那样,这可能是因为初始值不佳。这些是系数和截距的第一次猜测。如果他们不是一个很好的猜测,就很难得到准确的答案,从而导致错误。

您可以自行猜测并将其添加到 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)

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