如何在R中的序数逻辑回归模型中重新计算因子?

时间:2017-07-12 01:13:11

标签: r statistics regression

我目前正在研究一个带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)?我有搜索,没有找到类似的问题。非常感谢。

1 个答案:

答案 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参数,因为它在阅读代码时更加明确/可见,但品味不同。