doc*_*ate 4 r nnet multinomial logistic-regression
我有一个需要分类的3类问题。我想在nnet软件包中使用多项逻辑回归。班级结局有3个因素,P,Q,R。我想将Q作为基本因素。
所以我尝试将它写成这样的对比:
P <- c(1,0,0)
R <- c(0,0,1)
contrasts(trainingLR$Class) <- cbind(P,R)
Run Code Online (Sandbox Code Playgroud)
检查了它:
> contrasts(trainingLR$Class)
P R
P 1 0
Q 0 0
R 0 1
Run Code Online (Sandbox Code Playgroud)
现在multinom():
library(nnet)
multinom(Class ~., data=trainingLR)
Run Code Online (Sandbox Code Playgroud)
输出:
> 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
Run Code Online (Sandbox Code Playgroud)
问题:
正如您所看到的,由于P类未出现在输出中,这意味着在处理R中的因子变量时,它被视为基,按字母顺序第一个按字母顺序处理,而Q类未视为在这种情况下,如何使它成为其他两个级别的基础?
我试图避免使用对比度,而是发现了relevel用于选择所需水平作为基准的功能。以下代码
trainingLR$Class <- relevel(trainingLR$Class, ref = "P")
Run Code Online (Sandbox Code Playgroud)
应该将“ P”级别设置为基准。因此,请使用“ Q”或“ R”电平尝试相同的操作。
R文档(?relevel)提到“这对于以contr.treatment第一级为参考的对比很有用。”
尽管现在可能无法回答,但由于其他人可能有兴趣,因此我认为值得分享上述选择。
| 归档时间: |
|
| 查看次数: |
1576 次 |
| 最近记录: |