2014-02-05 57 views
3

我有一个需要分类的3级问题。我想在nnet包中使用多项逻辑回归。 班结果有3个因素,P,Q,R。我想把Q作为基本因子。如何在nnet包中设置multinom()中的特定对比度?

于是,我就写这样的对比:

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类是而不是在这种情况下作为基准级别处理,如何使它基于其他两个级别?

+0

有完全相同的问题... – msp

回答

1

我试图避免使用对比度,我发现relevel功能选择所需的水平作为基准。 以下代码

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

应将“P”级别设置为基准。 因此,请用“Q”或“R”级别尝试相同的操作。

R Documentation(?relevel)提到“这对contr.treatment对比度很有用,它将第一级作为参考。”

虽然现在回答可能太迟了,但由于其他人可能会感兴趣,我认为值得分享上述选项。

相关问题