【问题标题】:How to set specific contrasts in multinom() in nnet package?如何在 nnet 包中的 multinom() 中设置特定的对比?
【发布时间】:2014-02-05 09:17:25
【问题描述】:

我有一个需要分类的三类问题。我想在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 类是 not 在这种情况下被视为基础级别,如何使其成为其他两个级别的基础?

【问题讨论】:

  • 遇到同样的问题...

标签: r logistic-regression multinomial nnet


【解决方案1】:

我试图避免使用对比,我发现relevel 函数用于选择所需的水平作为基线。 以下代码

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

应该将“P”级别设置为您的基线。 因此,请尝试使用“Q”或“R”级别进行相同的操作。

R 文档 (?relevel) 提到“这对于将第一级作为参考的 contr.treatment 对比很有用。”

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    相关资源
    最近更新 更多