¿Cómo obtengo valores p usando la multinom
función de nnet
paquete R
?
Tengo un conjunto de datos que consta de "puntuaciones de patología" (ausente, leve, grave) como variable de resultado, y dos efectos principales: edad (dos factores: veinte / treinta días) y grupo de tratamiento (cuatro factores: infectado sin ATB; infectado + ATB1; infectado + ATB2; infectado + ATB3).
Primero intenté ajustar un modelo de regresión ordinal, que parece más apropiado dadas las características de mi variable dependiente (ordinal). Sin embargo, el supuesto de la proporcionalidad de las probabilidades se violó severamente (gráficamente), lo que me llevó a usar un modelo multinomial en su lugar, usando el nnet
paquete.
Primero elegí el nivel de resultado que necesito usar como categoría de referencia:
Data$Path <- relevel(Data$Path, ref = "Absent")
Luego, necesitaba establecer categorías de referencia para las variables independientes:
Data$Age <- relevel(Data$Age, ref = "Twenty")
Data$Treat <- relevel(Data$Treat, ref="infected without ATB")
El modelo:
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
La salida:
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
Durante un tiempo, no pude encontrar una manera de obtener los valores para el modelo y las estimaciones al usar . Ayer me encontré con una publicación donde el autor presentó un problema similar con respecto a la estimación de los valores para los coeficientes ( ¿Cómo configurar y estimar un modelo logit multinomial en R? ). Allí, un blogger sugirió que obtener valores del resultado de es bastante fácil, primero obteniendo los valores siguiente manera:p p tnnet: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
Según Peter Dalgard, "falta al menos un factor 2 para un valor dos colas . Por lo general, es un error utilizar la distribución para lo que realmente es una estadística ; para datos agregados, puede ser un muy mal error ". Según Brian Ripley, "también es un error usar las pruebas de Wald para los ajustes, ya que sufren los mismos problemas (potencialmente graves) que los ajustes binomiales. Use intervalos de confianza de probabilidad de perfil (para los cuales el paquete proporciona software), o si debe realizar una prueba, pruebas de razón de probabilidad (ídem) ".t zmultinom
fuente
nnet
laanova()
función de.Respuestas:
¿Qué hay de usar
Básicamente, esto se basaría en los coeficientes estimados en relación con su error estándar, y usaría la prueba az para probar una diferencia significativa con cero basada en una prueba de dos colas. El factor de dos corrige el problema al que Peter Dalgaard se refirió anteriormente (lo necesita porque desea una prueba de dos colas, no una de una cola), y utiliza una prueba z, en lugar de una prueba t, para resolver la otra problema que mencionas.
También puede obtener el mismo resultado (pruebas z de Wald) usando
Las pruebas de razón de verosimilitud generalmente se consideran más precisas que las pruebas de Wald z (estas últimas usan una aproximación normal, las pruebas LR no), y se pueden obtener usando
Si desea llevar a cabo las pruebas posthoc de Tukey por pares, ¡estas se pueden obtener utilizando el
lsmeans
paquete como se explica en mi otra publicación !fuente