[英]How to re-level factor in ordinal logistic regression model in R?
我目前正在使用R進行序數邏輯回歸模型。輸出系數使用相同的參考水平。 我想知道如何更改參考水平? 具體來說,請參見下面的示例。 我不想使用真實數據,因此我模擬了一個。 a和T均為1到5
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
系數“ a”使用參考級別1,a2,a3,a4和a5基本上將級別2、3、4、5與參考級別1進行比較。我的問題是如何重新調整級別,以便輸出將給出a3 |。 2,a4 | 3,a5 | 4(即beta3-beta2,beta4-beta3)自動生成? 我到處搜索,沒有找到類似的問題。 非常感謝。
我認為您需要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
參數,因為它是在閱讀代碼時更加顯式/可見,但是口味有所不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.