¿Cómo entender la salida de la función polr de R (regresión logística ordenada)?

26

Soy nuevo en R, ordené la regresión logística y polr.

La sección "Ejemplos" en la parte inferior de la página de ayuda para polr (que ajusta un modelo de regresión logística o probit a una respuesta de factor ordenado) muestra

options(contrasts = c("contr.treatment", "contr.poly"))
house.plr <- polr(Sat ~ Infl + Type + Cont, weights = Freq, data = housing)
pr <- profile(house.plr)
plot(pr)
pairs(pr)
  • ¿Qué información prcontiene? La página de ayuda en el perfil es genérica y no brinda orientación para la encuesta.

  • ¿Qué se plot(pr)muestra? Veo seis gráficos. Cada uno tiene un eje X que es numérico, aunque la etiqueta es una variable indicadora (parece una variable de entrada que es un indicador de un valor ordinal). Entonces el eje Y es "tau", que es completamente inexplicable.

  • ¿Qué se pairs(pr)muestra? Parece un gráfico para cada par de variables de entrada, pero de nuevo no veo ninguna explicación de los ejes X o Y.

  • ¿Cómo se puede entender si el modelo se ajustaba bien? summary(house.plr)muestra la desviación residual 3479.149 y AIC (¿criterio de información de Akaike?) de 3495.149. ¿Es bueno eso? En el caso de que solo sean útiles como medidas relativas (es decir, para comparar con otro ajuste del modelo), ¿cuál es una buena medida absoluta? ¿Se distribuye la desviación residual aproximadamente chi-cuadrado? ¿Se puede usar "% predicho correctamente" en los datos originales o alguna validación cruzada? Cual es la forma mas fácil de hacer eso?

  • ¿Cómo se aplica e interpreta anovaen este modelo? Los documentos dicen "Hay métodos para las funciones estándar de ajuste del modelo, incluyendo predicción, resumen, vcov, anova". Sin embargo, la ejecución de anova(house.plr)resultados enanova is not implemented for a single "polr" object

  • ¿Cómo se interpretan los valores t para cada coeficiente? A diferencia de algunos ajustes de modelos, no hay valores de P aquí.

Me doy cuenta de que se trata de muchas preguntas, pero tiene sentido para mí formularlas como un paquete ("¿cómo uso esta cosa?") En lugar de 7 preguntas diferentes. Cualquier información apreciada.

dfrankow
fuente
3
@dfrankow Ayuda un tanto cruda y ciertamente muy parcial para sus dos primeras preguntas, pero methods("profile")le dará los métodos (S3 en este caso) asociados a un profileobjeto R , luego verá que hay un método dedicado para los polrresultados, que puede examinar en línea escribiendo getAnywhere("profile.polr")en el indicador R.
chl
1
¡Gracias! El código fuente es bueno. La explicación sería aún mejor. :)
dfrankow
1
Alguien me señaló "Estadísticas modernas aplicadas con S" de Venables y Ripley. La Sección 7.3 tiene "Un ejemplo de tabla de frecuencias de cuatro vías" que cubre ampliamente este modelo de casa. Lectura ..
dfrankow 01 de
En realidad, la sección es "un modelo de probabilidades proporcionales"
dfrankow

Respuestas:

17

Sugeriría que mire libros sobre análisis de datos categóricos (cf. Análisis de datos categóricos de Alan Agresti, 2002) para una mejor explicación y comprensión de la regresión logística ordenada . Todas las preguntas que usted hace son respondidas básicamente por unos pocos capítulos en tales libros. Si solo está interesado en Rejemplos relacionados, Extender modelos lineales en R por Julian Faraway (CRC Press, 2008) es una gran referencia.

JiYipij=P(Yi=j)j=1,...,Jγij=P(Yij)γiJ=1J1

Ahora queremos vincular s a covariables . En su caso, tiene 3 niveles ordenados: , , . Tiene más sentido tratarlos como ordenados en lugar de desordenados. Las variables restantes son sus covariables. El modelo específico que está considerando es el modelo de probabilidades proporcionales y es matemáticamente equivalente a:γijxSatlowmediumhigh

logit γj(xi)=θjβTxi,j=1J1
where γj(xi)=P(Yij|xi)

Se llama así porque las probabilidades relativas de que compare y son:Yjx1x2

(γj(x1)1γj(x1))/(γj(x2)1γj(x2))=exp(βT(x1x2))

Tenga en cuenta que la expresión anterior no depende de . Por supuesto, la suposición de probabilidades proporcionales debe verificarse para un conjunto de datos dado.j

Ahora, responderé algunas (1, 2, 4) preguntas.

¿Cómo se puede entender si el modelo se ajustaba bien? resumen (house.plr) muestra la desviación residual 3479.149 y AIC (criterio de información de Akaike?) de 3495.149. ¿Es bueno eso? En el caso de que solo sean útiles como medidas relativas (es decir, para comparar con otro ajuste del modelo), ¿cuál es una buena medida absoluta? ¿Se distribuye la desviación residual aproximadamente chi-cuadrado? ¿Se puede usar "% predicho correctamente" en los datos originales o alguna validación cruzada? Cual es la forma mas fácil de hacer eso?

Un modelo ajustado polres especial glm, por lo que todas las suposiciones que se cumplen para una glmretención tradicional aquí. Si cuida los parámetros correctamente, puede averiguar la distribución. Específicamente, para probar si el modelo es bueno o no, es posible que desee hacer una prueba de bondad de ajuste , que prueba el siguiente nulo (observe que esto es sutil, principalmente desea rechazar el nulo, pero aquí no desea rechazarlo para obtener un buen ajuste):

Ho: current model is good enough 

Usarías la prueba de chi-cuadrado para esto. El valor p se obtiene como:

1-pchisq(deviance(house.plr),df.residual(house.plr))

La mayoría de las veces esperaría obtener un valor p mayor que 0.05 para no rechazar el valor nulo para concluir que el modelo se ajusta bien (aquí se ignora la corrección filosófica).

El AIC debe ser alto para un buen ajuste al mismo tiempo que no desea tener una gran cantidad de parámetros. stepAICEs una buena manera de comprobar esto.

Sí, definitivamente puedes usar la validación cruzada para ver si las predicciones se cumplen. Ver predictfunción (opción:) type = "probs"en ?polr. Todo lo que necesita cuidar son las covariables.

¿Qué información contiene pr? La página de ayuda en el perfil es genérica y no brinda orientación para la encuesta

Como lo señalaron @chl y otros, prcontiene toda la información necesaria para obtener CI y otra información relacionada con la probabilidad del polr fit. Todos los glms se ajustan utilizando el método de estimación de mínimos cuadrados ponderado iterativamente para la probabilidad de registro. En esta optimización, obtiene una gran cantidad de información (consulte las referencias) que será necesaria para calcular la Matriz de Covarianza de Variancia, CI, valor t, etc. Incluye toda la información.

¿Cómo se interpretan los valores t para cada coeficiente? A diferencia de algunos ajustes modelo>, no hay valores de P aquí.

A diferencia del modelo lineal normal (especial glm), otros glms no tienen la distribución t agradable para los coeficientes de regresión. Por lo tanto, todo lo que puede obtener es la estimación de parámetros y su matriz de covarianza de varianza asintótica utilizando la teoría de máxima verosimilitud. Por lo tanto:

Variance(β^)=(XTWX)1ϕ^

La estimación dividida por su error estándar es lo que BDR y WV llaman valor t (estoy asumiendo la MASSconvención aquí). Es equivalente al valor t de la regresión lineal normal pero no sigue una distribución t. Usando CLT, se distribuye asintóticamente normalmente. Pero prefieren no usar esto aproximadamente (supongo), por lo tanto, no hay valores p. (Espero no estar equivocado, y si lo estoy, espero que BDR no esté en este foro. Espero que alguien me corrija si estoy equivocado).

suncoolsu
fuente
Agregaré más.
suncoolsu
1
Gracias por esto. Lo he leído varias veces. Quedan muchas preguntas por responder. 1. Funcionalmente en R, ¿cómo se prueba el supuesto de probabilidades proporcionales? 2. ¿Estás seguro de que la prueba de ji cuadrado es correcta? En este ejemplo, devuelve 0, lo que significa ... ¿mierda? Pero algunos de los valores de t son bastante altos (InflHigh 10.1, InflMedium 5.4, ContHigh 3.7). 3. ¿Qué muestran las parcelas o pares?
dfrankow
Gracias por su extensa respuesta suncoolsu. Estoy en una situación similar y tengo un par de preguntas. 1. También obtengo 0 para cada modelo usando su ecuación de prueba de chi-sq. 2. La página de Wikipedia en AIC dice "el modelo preferido es el que tiene el valor mínimo de AIC", pero usted dijo: "AIC debería ser alto para un buen ajuste". Estoy tratando de conciliar estas cuentas.
Sam Swift
@dfrankow y @Sam Swift. Lo siento, he estado un poco ocupado escribiendo algunos papeles. Ok, si obtiene un valor p = 0, significa que el modelo NO es un buen ajuste ya que la prueba de bondad de ajuste falla. Con respecto al problema de AIC, wikipedia y yo estamos usando una convención diferente para ello. Estoy usando el que usan BDR y WV. (cf. Extender modelos lineales en R, por el Dr. Julian Faraway)
suncoolsu
Hay algunas preguntas específicas para los valores de 0/1 p y la interpretación de AIC que pueden ser útiles: stats.stackexchange.com/questions/15223/… stats.stackexchange.com/questions/81427/…
Scott
3

Disfruté mucho la conversación aquí, sin embargo, creo que las respuestas no abordaron correctamente todos los componentes (muy buenos) de la pregunta que planteó. La segunda mitad de la página de ejemplo polrtiene que ver con el perfil. Una buena referencia técnica aquí es Venerables y Ripley, quienes discuten el perfil y lo que hace. Esta es una técnica crítica cuando se va más allá de la zona de confort al instalar modelos familiares exponenciales con plena probabilidad (GLMs regulares).

La desviación clave aquí es el uso de umbrales categóricos. Notará que POLR no estima un término de intercepción habitual. Por el contrario, existen parámetros molestos : umbrales para los cuales el riesgo ajustado tiende a caer en una cierta acumulación de las categorías posibles. Dado que estos umbrales nunca se estiman conjuntamente, se desconoce su covarianza con los parámetros del modelo. A diferencia de los GLM, no podemos "perturbar" un coeficiente por una cantidad y estar seguros de cómo podría afectar otras estimaciones. Usamos perfiles para hacer esta contabilidad de los umbrales molestos. Perfilado es un tema inmenso, pero básicamente el objetivo es la medición de forma robusta la covarianza de los coeficientes de regresión cuando el modelo es maximizar la probabilidad irregular, al igual que con , , , ykk1klmernlspolrglm.nb.

La página de ayuda ?profile.glmdebería ser útil, ya que los polrobjetos son esencialmente GLM (más los umbrales categóricos). Por último, puede usar el pico de código fuente, si es de alguna utilidad getS3method('profile', 'polr'). Utilizo mucho esta getS3methodfunción porque, aunque R parece insistir en que muchos métodos deben estar ocultos, uno puede aprender sorprendentemente mucho sobre la implementación y los métodos al revisar el código.

• ¿Qué información contiene pr? La página de ayuda en el perfil es genérica y no brinda orientación para la encuesta.

pres un profile.polr, profileobjeto (clase heredada profile). Hay una entrada para cada covariable. El generador de perfiles recorre cada covariable, recalcula el ajuste óptimo del modelo con esa covariable fijada en una cantidad ligeramente diferente. La salida muestra el valor fijo de la covariable medido como una diferencia de "puntaje z" escalada de su valor estimado y los efectos fijos resultantes en otras covariables. Por ejemplo, si observa pr$InflMedium, notará que, cuando "z" es 0, los otros efectos fijos son los mismos que se encuentran en el ajuste original.

• ¿Qué muestra la gráfica (pr)? Veo seis gráficos. Cada uno tiene un eje X que es numérico, aunque la etiqueta es una variable indicadora (parece una variable de entrada que es un indicador de un valor ordinal). Entonces el eje Y es "tau", que es completamente inexplicable.

De nuevo, ?plot.profileda la descripción. El gráfico muestra aproximadamente cómo los coeficientes de regresión covarían. tau es la diferencia escalada, la puntuación z anterior, por lo que su valor 0 proporciona los coeficientes de ajuste óptimos, representados con una marca de verificación. No diría que este ajuste se comporta tan bien, pero esas "líneas" son en realidad splines. Si la probabilidad se comportara de manera muy irregular en el ajuste óptimo, observaría un comportamiento extraño e impredecible en la trama. Esto le corresponde a usted estimar la salida utilizando una estimación de error más robusta (bootstrap / jackknife), calcular los IC utilizando method='profile', recodificar variables o realizar otros diagnósticos.

• ¿Qué muestran los pares (pr)? Parece un gráfico para cada par de variables de entrada, pero nuevamente no veo ninguna explicación de los ejes X o Y.

El archivo de ayuda dice: "El método de pares muestra, para cada par de parámetros x e y, dos curvas que se cruzan en la estimación de máxima verosimilitud, que dan los loci de los puntos en los que las tangentes a los contornos de la probabilidad del perfil bivariado se vuelven verticales y horizontal, respectivamente. En el caso de una probabilidad de perfil normal exactamente bivariada, estas dos curvas serían líneas rectas que darían las medias condicionales de y | x y x | y, y los contornos serían exactamente elípticos ". Básicamente, nuevamente te ayudan a visualizar las elipses de confianza. Los ejes no ortogonales indican medidas altamente covariables, como InfMedium e InfHigh, que están intuitivamente muy relacionadas. Una vez más, las probabilidades irregulares conducirían a imágenes que son bastante desconcertantes aquí.

• ¿Cómo se puede entender si el modelo se ajustaba bien? resumen (house.plr) muestra la desviación residual 3479.149 y AIC (criterio de información de Akaike?) de 3495.149. ¿Es bueno eso? En el caso de que solo sean útiles como medidas relativas (es decir, para comparar con otro ajuste del modelo), ¿cuál es una buena medida absoluta? ¿Se distribuye la desviación residual aproximadamente chi-cuadrado? ¿Se puede usar "% predicho correctamente" en los datos originales o alguna validación cruzada? Cual es la forma mas fácil de hacer eso?

Una suposición que es buena para evaluar es la suposición de probabilidades proporcionales. Esto se refleja de alguna manera en la prueba global (que evalúa la polr contra un modelo loglineal saturado). Una limitación aquí es que con datos grandes, las pruebas globales siempre fallan. Como resultado, es una buena idea utilizar gráficos e inspeccionar estimaciones (betas) y precisión (SE) para el modelo loglinear y el ajuste de polr. Si están en total desacuerdo, tal vez algo esté mal.

Con resultados ordenados, es difícil definir el porcentaje de acuerdo. ¿Cómo va a elegir un clasificador basado en el modelo, y si lo hace, cómo obtendrá un bajo rendimiento de un clasificador deficiente? modeEs una mala elección. Si tengo 10 logits de categoría y mi predicción siempre es una categoría, quizás eso no sea algo malo. Además, mi modelo puede predecir correctamente una probabilidad del 40% de una respuesta 0, pero también una probabilidad del 20% de 8, 9, 10. Entonces, si observo que 9 es bueno o malo? Si debe medir el acuerdo, use un kappa ponderado, o incluso un MSE. El modelo loglineal siempre producirá el mejor acuerdo. Eso no es lo que hace el POLR.

• ¿Cómo se aplica e interpreta anova en este modelo? Los documentos dicen "Hay métodos para las funciones estándar de ajuste del modelo, incluyendo predicción, resumen, vcov, anova". Sin embargo, ejecutar anova (house.plr) da como resultado que anova no se implemente para un solo objeto "polr"

Puede probar modelos anidados con waldtesty lrtesten el lmtestpaquete en R. Esto es equivalente a ANOVA. La interpretación es exactamente la misma que con los GLM.

• ¿Cómo se interpretan los valores t para cada coeficiente? A diferencia de algunos ajustes de modelos, no hay valores de P aquí.

Nuevamente, a diferencia de los modelos lineales, el modelo POLR es capaz de tener problemas con probabilidad irregular, por lo que la inferencia basada en el Hessian puede ser muy inestable. Es análogo al ajuste de modelos mixtos; consulte, por ejemplo, confint.merModel archivo de ayuda para el paquete lme4. Aquí, las evaluaciones realizadas con perfiles muestran que la covarianza se comporta bien. Los programadores habrían hecho esto de forma predeterminada, excepto que la creación de perfiles puede ser computacionalmente muy intensiva y, por lo tanto, la dejan en sus manos. Si debe ver la inferencia basada en Wald, úsela coeftest(house.plr)del lrtestpaquete.

AdamO
fuente
2

Para 'probar' (es decir, evaluar) el supuesto de probabilidad proporcional en R, puede usar residuals.lrm () en el paquete de diseño de Frank Harrell Jr. Si escribe? Residuals.lrm, hay un ejemplo rápido de replicar de cómo Frank Harrell recomienda evaluar la suposición de probabilidades proporcionales (es decir, visualmente, en lugar de mediante una prueba de botón). Las estimaciones de diseño ordenaron regresiones logísticas usando lrm (), que puede sustituir por polr () de MASS.

Para un ejemplo más formal de cómo evaluar visualmente el supuesto de probabilidades proporcionales en R, ver: Documento: Modelos de regresión de respuesta ordinaria en ecología Autor (es): Antoine Guisan y Frank E. Harrell Fuente: Journal of Vegetation Science, vol. 11, N ° 5 (octubre de 2000), págs. 617-626

mBrewster
fuente
3
Agradezco sinceramente su respuesta. Sin embargo, el propósito de StackExchange es proporcionar respuestas, no referencias. Los estadísticos parecen particularmente propensos a este problema de referencia. ¿Hay algún detalle que pueda agregar sobre cómo usar residuals.lrm? Por ejemplo, un comando de ejemplo y un ejemplo de interpretación de la gráfica para el ejemplo house.plr?
dfrankow
1
Actualización del sitio web del autor: "El paquete de diseño ahora está obsoleto. Los usuarios de R deben usar el paquete rms". Mark, tu respuesta fue muy útil para mí.
Tal Galili