我正在使用MASS::polr
来运行序数逻辑回归,但我收到很多错误,希望人们可以启发我。
首先,如果我运行此函数,则函数无法找到起始值:
MASS::polr(as.ordered(cyl)~mpg+gear,mtcars)
因此,如果我指定起始值,我会从optim
收到一条错误,说明由optim提供的非有限值:
MASS::polr(as.ordered(cyl)~mpg+gear,mtcars,start=c(1,1,1,1))
在阅读了一些R-help和之前的堆栈溢出问题之后,响应通常是数据有问题,即响应变量的类别值相对较少,但在这种情况下我不会看到mtcars
有问题。
有关如何诊断和处理将影响MASS::polr
的数据问题的任何指导将不胜感激。
此致
答案 0 :(得分:1)
通过?polr
进行寻宝游戏,起始值将以c(coefficients, zeta)
格式指定“。看得更低,我们看到zeta
是“类边界的截距。”。在详细信息部分中,我们可以看到必须订购zeta值:
zeta_0 = -Inf < zeta_1 < ... < zeta_K = Inf
([原文如此],最后可能应该是< Inf
。)
所以你需要第二个zeta值大于第一个zeta值。这有效,例如:
MASS::polr(as.ordered(cyl) ~ mpg + gear, mtcars, start = c(1, 1, 1, 2))