我目前正在研究一个带R的序数逻辑回归模型。输出系数使用相同的参考水平。我想知道如何更改参考水平?更具体地说,请参见下面的示例。我不想使用真实数据,所以我模拟了一个。 a和T均为1至5
div
“a”使用参考水平1,a2,a3,a4和a5的系数基本上将水平2,3,4,5与参考水平1进行比较。我的问题是如何将其重新调整以使输出将自动给出a3 | 2,a4 | 3,a5 | 4(即beta3-beta2,beta4-beta3)?我有搜索,没有找到类似的问题。非常感谢。
答案 0 :(得分:2)
我认为您需要MASS包中的contr.sdif
功能:来自?contr.sdif
,
选择对比系数以便编码 单向布局中的系数是它们之间的差异 第二级和第一级,第三级和第二级, 等等。这对有序因子最有意义,但确实如此 不要认为水平是等间隔的。
所以:
library(MASS)
contrasts(d$a) <- contr.sdif(5) # set contrasts: from @Marius in comments
polr(formula = T ~ a, data = d, Hess = TRUE)
根据?polr
的文档,应该可以添加参数contrasts=list(a=contr.sdif)
,而不是设置变量本身的对比;但是,这似乎给出了一个错误(类似的设置适用于lm
)。这个看起来就像polr
中的一个错误,但是这有点难以置信,因为这是一个令人尊敬和经过充分考验的R部分...尽可能(也许不是)在这种情况下)我更喜欢公式中的contrasts
参数,因为它在阅读代码时更加明确/可见,但品味不同。