簡體   English   中英

如何在nnet包中的multinom()中設置特定的對比?

[英]How to set specific contrasts in multinom() in nnet package?

我有一個需要分類的3級問題。 我想在nnet包中使用多項邏輯回歸。 類結果有3個因子,P,Q,R。我想把Q作為基本因子。

所以我試着寫下這樣的對比:

P <- c(1,0,0)
R <- c(0,0,1)
contrasts(trainingLR$Class) <- cbind(P,R)

檢查了它:

> contrasts(trainingLR$Class)
  P R
P 1 0
Q 0 0
R 0 1 

現在multinom()

library(nnet)
multinom(Class ~., data=trainingLR)

輸出:

> multinom(Class ~., data=trainingLR)
# weights:  39 (24 variable)
initial  value 180.172415 
iter  10 value 34.990665
iter  20 value 11.765136
iter  30 value 0.162491
iter  40 value 0.000192
iter  40 value 0.000096
iter  40 value 0.000096
final  value 0.000096 
converged
Call:
multinom(formula = Class ~ ., data = trainingLR)

Coefficients:
  (Intercept)        IL8     IL17A      IL23A     IL23R
Q   -116.2881 -16.562423 -34.80174   3.370051  6.422109
R    203.2414   6.918666 -34.40271 -10.233787 31.446915
       EBI3     IL6ST     IL12A   IL12RB2     IL12B
Q -8.316808  12.75168 -7.880954  5.686425 -9.665776
R  5.135609 -20.48971 -2.093231 37.423452 14.669226
    IL12RB1    IL27RA
Q -6.921755 -1.307048
R 15.552842 -7.063026

Residual Deviance: 0.0001922658 
AIC: 48.00019 

題:
如你所見,由於P類沒有出現在輸出中,這意味着它在處理R中的因子變量時按字母順序被視為基數是第一個,並且Q類被視為基礎級別在這種情況下,如何使其基於其他兩個級別?

我試圖避免使用對比,我發現了relevel功能選擇所需的水平基線。 以下代碼

trainingLR$Class <- relevel(trainingLR$Class, ref = "P")

應將“P”級別設為您的基線。 因此,嘗試“Q”或“R”級別相同的事情。

R文檔( ?relevel )提到“這對於以第一級作為參考的contr.treatment對比有用”。

雖然現在回答可能為時已晚,但由於其他人可能會感興趣,我認為值得分享上述選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM