2017-07-12 23 views
2

我目前的有序Logistic迴歸模型R.工作的輸出係數使用相同的參考水平。我想知道如何更改參考級別?更具體一點,請看下面的例子。我不想使用真實數據,所以我模擬了一個。兩者和T是從1到5如何在R中對有序邏輯迴歸模型中的因子進行重新定級?

polr(formula = T ~ a, data = d, Hess = TRUE) 

Coefficients: 
     Value Std. Error t value 
a2 0.18823  0.5734 0.32825 
a3 0.14747  0.5287 0.27895 
a4 -0.50157  0.5766 -0.86985 
a5 0.02843  0.5448 0.05219 

「一」使用參考電平1,A2,A3,A4和A5基本上比較-2,3,4,5-水平與參考電平1的係數。我的問題是,我怎樣才能讓它再次出現,以便輸出自動給出a3 | 2,a4 | 3,a5 | 4(即beta3-beta2,beta4-beta3)?我有搜索,並沒有發現類似的問題。非常感謝。

+0

一個非常非常快速和骯髒的是重命名你的變量。 a1是您的基準,因爲按字母順序排列,a1

+0

我建議你提高你的搜索技巧:https://stackoverflow.com/questions/3872070/how-to-force-r-to-use-a-specified-factor-level-as-reference-in-a-regression – MichaelChirico

+0

的可能的複製[如何力R使用指定因子水平作爲迴歸參考?](https://stackoverflow.com/questions/3872070/how-to-force-r-to-use-a-specified - 因子級-作爲參考-IN-A-迴歸) – MichaelChirico

回答

3

我想你想從海量包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參數的公式,因爲在這一個古老的和經過良好測試的部分,相信閱讀代碼時它更加明確/可見,但味道不同。

+0

我嘗試了公式內的參數,但它給了我以下錯誤。無效類型(列表)變量'(對比)' – hehehe