5

分類が必要な 3 クラスの問題があります。nnetパッケージで多項ロジスティック回帰を使用したい。クラスの結果には、P、Q、R の 3 つの要素があります。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 クラスはとして扱われなかったということです。この場合のベース レベルは、他の 2 つのレベルのベースにする方法は?

4

1 に答える 1

7

コントラストの使用を避けようとしたところrelevel、目的のレベルをベースラインとして選択する機能を発見しました。次のコード

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

ベースラインとして「P」レベルを設定する必要があります。したがって、「Q」または「R」レベルで同じことを試してください。

R ドキュメント ( ) には、「これは、最初のレベルを基準とする対比に?relevel役立ちます」と記載されています。contr.treatment

今答えるのは遅すぎるかもしれませんが、他の人が興味を持っているかもしれないので、上記のオプションを共有する価値があると思いました.

于 2015-11-18T14:11:20.843 に答える