如何使用package中的multinom
函数获取p值?nnet
R
我有一个数据集,其中包含作为结果变量的“病理学评分”(不存在,轻度,严重)和两个主要影响:年龄(两个因素:二十天/三十天)和治疗组(四个因素:感染者没有ATB;感染者+ ATB1;已感染+ ATB2;已感染+ ATB3)。
首先,我尝试拟合序数回归模型,鉴于我的因变量(序数)的特征,这似乎更合适。但是,(图形上)严重违反了赔率比例的假设,这促使我改用多项式模型,而是使用nnet
软件包。
首先,我选择了需要用作基线类别的结果级别:
Data$Path <- relevel(Data$Path, ref = "Absent")
然后,我需要为自变量设置基线类别:
Data$Age <- relevel(Data$Age, ref = "Twenty")
Data$Treat <- relevel(Data$Treat, ref="infected without ATB")
该模型:
test <- multinom(Path ~ Treat + Age, data = Data)
# weights: 18 (10 variable)
initial value 128.537638
iter 10 value 80.623608
final value 80.619911
converged
输出:
Coefficients:
(Intercept) infected+ATB1 infected+ATB2 infected+ATB3 AgeThirty
Moderate -2.238106 -1.1738540 -1.709608 -1.599301 2.684677
Severe -1.544361 -0.8696531 -2.991307 -1.506709 1.810771
Std. Errors:
(Intercept) infected+ATB1 infected+ATB2 infected+ATB3 AgeThirty
Moderate 0.7880046 0.8430368 0.7731359 0.7718480 0.8150993
Severe 0.6110903 0.7574311 1.1486203 0.7504781 0.6607360
Residual Deviance: 161.2398
AIC: 181.2398
有一阵子,我找不到一种方法来获取模型的值并进行估算。昨天我碰到一个帖子,作者提出了一个关于系数值估计的类似问题(如何在R中建立和估计多项式logit模型?)。那里,一位博主建议,通过首先获取值如下所示,从的结果中获取值非常容易:nnet:multinom
summary
multinom
pt(abs(summary1$coefficients / summary1$standard.errors), df=nrow(Data)-10, lower=FALSE)
(Intercept) infected+ATB1 infected+ATB2 infected+ATB3 AgeThirty
Moderate 0.002670340 0.08325396 0.014506395 0.02025858 0.0006587898
Severe 0.006433581 0.12665278 0.005216581 0.02352202 0.0035612114
根据彼得·达格德(Peter Dalgard)的说法:“对于两尾值,至少要损失2倍。通常将用于真正的统计量是错误的;对于汇总数据,可以一个非常严重的错误。” 根据Brian Ripley的说法,“使用Wald检验进行拟合也是一个错误,因为它们遭受与二项式拟合相同(可能很严重)的问题。使用轮廓似然置信区间(软件包确实为此提供了软件),或者如果必须进行测试,则进行似然比测试(ditto)。”multinom
我只需要能够得出可靠的。
nnet
的anova()
功能。