我尝试使用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
答案 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)
如果零不起作用,请尝试您自己对回归系数的最佳猜测。