Logit con variables ordinales independientes

18

En un modelo logit, ¿hay una forma más inteligente de determinar el efecto de una variable ordinal independiente que usar variables ficticias para cada nivel?

fgregg
fuente
¿No depende del software?
1
Un software diferente puede permitir diferentes opciones, pero debería haber una respuesta basada en principios, ¿no?
fgregg
1
Ok, comentario estúpido, lo siento.

Respuestas:

16

Para agregar a la respuesta de @ dmk38, "cualquier conjunto de puntajes da una prueba válida , siempre que se construyan sin consultar los resultados del experimento. Si el conjunto de puntajes es pobre, distorsiona gravemente una escala numérica que realmente subyace clasificación ordenada, la prueba no será sensible. Por lo tanto, los puntajes deben incorporar la mejor información disponible sobre la forma en que se construyó y usó la clasificación ". (Cochran, 1954, citado por Agresti, 2002, pp. 88-89). En otras palabras, tratar un factor ordenado como una variable numéricamente puntuada es simplemente un problema de modelado. Siempre que tenga sentido, esto solo afectará la forma en que interpreta el resultado, y no existe una regla general definitiva sobre cómo elegir la mejor representación para una variable ordinal.

Considere el siguiente ejemplo sobre el consumo materno de alcohol y la presencia o ausencia de malformación congénita (Agresti, Análisis de datos categóricos , Tabla 3.7 p.89):

            0    <1 1-2 3-5 6+
Absent  17066 14464 788 126 37
Present    48    38   5   1  1

En este caso particular, podemos modelar el resultado usando regresión logística o tabla de asociación simple. Hagámoslo en R:

tab3.7 <- matrix(c(17066,48,14464,38,788,5,126,1,37,1), nr=2,
                 dimnames=list(c("Absent","Present"),
                               c("0","<1","1-2","3-5","6+")))
library(vcd)
assocstats(tab3.7)

Usual estadística χ 2 (12.08, p = 0.016751) o LR (6.20, p = 0.184562) (con 4 df) no tiene en cuenta los niveles ordenados en el consumo de alcohol.χ2

Tratando ambas variables como ordinales con puntajes igualmente espaciados (esto no tiene impacto para las variables binarias, como la malformación, y elegimos la línea de base como 0 = ausente), podríamos probar una asociación lineal por lineal. Primero construyamos una versión explosionada de esta Tabla de contingencia:

library(reshape)
tab3.7.df <- untable(data.frame(malform=gl(2,1,10,labels=0:1), 
                                alcohol=gl(5,2,10,labels=colnames(tab3.7))), 
                     c(tab3.7))
# xtabs(~malform+alcohol, tab3.7.df) # check

Entonces podemos probar una asociación lineal usando

library(coin)
#lbl_test(as.table(tab3.7))
lbl_test(malform ~ alcohol, data=tab3.7.df)

que produce con p = 0.1764 . Tenga en cuenta que esta estadística es simplemente la correlación entre las dos series de puntajes (que Agresti llamó M 2 = ( n - 1 ) r 2χ2(1)=1,83pag=0.1764METRO2=(norte-1)r2 ), que se calcula fácilmente como

cor(sapply(tab3.7.df, as.numeric))[1,2]^2*(32574-1)

Como se puede ver, no hay mucha evidencia de una asociación clara entre las dos variables. Como lo hizo Agresti, si elegimos recodificar los niveles de alcohol como {0,0.5,1.5,4,7}, es decir, usar valores de rango medio para una escala continua hipotética con el último puntaje siendo algo puramente arbitrario, entonces concluiríamos a un efecto mayor del consumo materno de alcohol en el desarrollo de malformación congénita:

lbl_test(malform ~ alcohol, data=tab3.7.df,         
         scores=list(alcohol=c(0,0.5,1.5,4,7)))

produce una estadística de prueba de 6.57 con un valor p asociado de 0.01037.

ρr ) que Agresti analiza, pero espero que capten la idea general aquí: es mejor seleccionar puntajes que realmente reflejen un medidas razonables de la distancia entre categorías adyacentes de su variable ordinal, y el espaciado igual es a menudo un buen compromiso (en ausencia de justificación teórica).

Usando el enfoque GLM, procederíamos de la siguiente manera. Pero primero verifique cómo se codifica el alcohol en R:

class(tab3.7.df$alcohol)

Es un factor simple no ordenado ( "factor"), por lo tanto, un predictor nominal. Ahora, aquí hay tres modelos donde consideramos al alcohol como un predictor nominal, ordinal o continuo.

summary(mod1 <- glm(malform ~ alcohol, data=tab3.7.df, 
                    family=binomial))
summary(mod2 <- glm(malform ~ ordered(alcohol), data=tab3.7.df, 
                    family=binomial))
summary(mod3 <- glm(malform ~ as.numeric(alcohol), data=tab3.7.df, 
                    family=binomial))

β^Exp(θ^)=Exp(0.228)=1.256. La prueba de Wald no es significativa al nivel habitual del 5%. En este caso, la matriz de diseño solo incluye 2 columnas: la primera es una columna constante de 1 para la intersección, la segunda es el valor numérico (1 a 5) para el predictor, como en una regresión lineal simple. En resumen, este modelo prueba un efecto lineal del alcohol en el resultado (en la escala logit).

Sin embargo, en los otros dos casos ( mod1y mod2), obtenemos resultados diferentes porque la matriz de diseño utilizada para modelar el predictor difiere, como se puede verificar usando:

model.matrix(mod1)
model.matrix(mod2)

mod1k-1mod2mod1mod2

Puede intentar asignar nuevas puntuaciones al alcohol y ver cómo afectará la probabilidad pronosticada de una malformación.

chl
fuente
3
(+1) respuesta muy completa. Solo agregaría que es posible obtener pruebas que supongan solo la monotonicidad de la relación dosis-respuesta sin asignar puntajes a la variable ordinal usando regresión isotónica, aunque generalmente se necesitan métodos de simulación o permutación para obtener la distribución de la estadística de prueba. bajo el nulo. Ver Salanti y Ulm 2003 dx.doi.org/10.1002/bimj.200390012 .
parada el
@onestop Gracias por esta referencia. Lo miraré
chl
6

está perfectamente bien usar un predictor categórico en un modelo de regresión logit (u OLS) si los niveles son ordinales. Pero si tiene una razón para tratar cada nivel como discreto (o si de hecho su variable categórica es nominal en lugar de ordinal), entonces, como alternativa a la codificación ficticia, también puede usar la codificación de contraste ortogonal. Para una discusión muy completa y accesible, vea Judd, CM, McClelland, GH y Ryan, Análisis de datos CS: un enfoque de comparación de modelos, Edn. 2do. (Routledge / Taylor and Francis, Nueva York, NY; 2008), o simplemente "codificación de contraste" de Google

dmk38
fuente
¿Está diciendo que está bien tratar los datos ordinales como datos de intervalo en el modelo? Si es así, ¿cómo puedo interpretar el coeficiente si no conozco la "distancia" entre los niveles?
fgregg
3
Si. El coeficiente refleja el cambio en las probabilidades de registro para cada incremento de cambio en el predictor ordinal. Esta especificación de modelo (muy común) supone que el predictor tiene un impacto lineal en sus incrementos. Para probar el supuesto, puede comparar un modelo en el que usa la variable ordinal como un predictor único con uno en el que discretiza las respuestas y las trata como predictores múltiples (como lo haría si la variable fuera nominal); Si el último modelo no resulta en un ajuste significativamente mejor, entonces es razonable tratar cada incremento como si tuviera un efecto lineal.
dmk38
Te doy +1 porque esta respuesta suena bien, y supongo que @fgregg habría hecho lo mismo (con suficiente repetición).
chl
También creo que este es un ejemplo perfecto, porque el cambio en las probabilidades de registro se puede interpretar con variables ordinales.
SmallChess