¿Cómo ejecuto el análisis de regresión logística ordinal en R con valores numéricos / categóricos?

17

Datos básicos : Tengo ~ 1,000 personas marcadas con evaluaciones: '1,' [bueno] '2,' [medio] o '3' [malo]: estos son los valores que estoy tratando de predecir para las personas en el futuro . Además de eso, tengo información demográfica: género (categórico: M / F), edad (numérico: 17-80) y raza (categórico: negro / caucásico / latino).

Principalmente tengo cuatro preguntas:

  1. Inicialmente estaba tratando de ejecutar el conjunto de datos descrito anteriormente como un análisis de regresión múltiple. Pero recientemente aprendí que dado que mi dependiente es un factor ordenado y no una variable continua, debería usar la regresión logística ordinal para algo como esto. Inicialmente estaba usando algo como mod <- lm(assessment ~ age + gender + race, data = dataset), ¿alguien puede señalarme en la dirección correcta?

  2. A partir de ahí, suponiendo que obtengo coeficientes con los que me siento cómodo, entiendo cómo conectar únicamente valores numéricos para x1, x2, etc., pero ¿cómo trataría con la raza, por ejemplo, cuando hay múltiples respuestas: negro / caucásico / latino? Entonces, si me dice que el coeficiente caucásico es 0.289 y alguien que intento predecir es caucásico, ¿cómo lo conecto nuevamente ya que el valor no es numérico?

  3. También tengo valores aleatorios que faltan: algunos para la raza, otros para el género, etc. ¿Tengo que hacer algo adicional para asegurarme de que esto no sesgue nada? (Me di cuenta cuando mi conjunto de datos se carga en R-Studio, cuando los datos faltantes se cargan como NA, R dice algo así (162 observations deleted due to missingness), pero si se cargan como espacios en blanco, no hace nada).

  4. Asumiendo que todo esto funciona y tengo nuevos datos con el género, la edad y la raza que quiero predecir, ¿hay una manera más fácil en R de ejecutar todo eso a través de lo que sea mi fórmula con nuevos coeficientes, en lugar de hacerlo manualmente? (Si esta pregunta no es apropiada aquí, puedo llevarla de vuelta al foro R.)

Ryan
fuente

Respuestas:

16

Aquí hay una pequeña información que podría orientarte en la dirección correcta.

Con respecto a sus datos, lo que tiene es una respuesta con múltiples categorías, y cada vez que intenta modelar una respuesta que es categórica, tiene razón al intentar usar algún tipo de modelo lineal generalizado (GLM). En su caso, tiene información adicional que debe tener en cuenta con respecto a su respuesta y es que sus niveles de respuesta tienen un orden natural bueno> medio> malo, observe cómo esto es diferente de tratar de modelar una respuesta, como qué globo de color alguien es probable que compre (rojo / azul / verde), estos valores no tienen un orden natural. Al hacer este tipo de modelo con una respuesta ordenada, puede considerar usar un modelo de probabilidades proporcionales.

http://en.wikipedia.org/wiki/Ordered_logit

No lo he usado yo mismo, pero polr()es probable que la función en el paquete MASS sea de alguna utilidad, alternativamente, he usado la lrm()función en el paquete rms para hacer tipos similares de análisis, y la he encontrado bastante útil. Si carga estos paquetes, simplemente use ?polro ?lrmpara la información de la función.

Muy bien antecedentes, sobre sus preguntas:

  1. Esto debería estar cubierto anteriormente, verifique estos paquetes / funciones y lea sobre regresión logística ordinal y modelos de probabilidades proporcionales

  2. Cada vez que tenga una covariable que sea categórica (raza / sexo / color de cabello), debe tratarlos como 'factores' en su codificación R para modelarlos adecuadamente. Es importante saber qué es un factor y cómo se tratan, pero esencialmente se trata cada categoría como un nivel separado y luego se modela de manera adecuada. Simplemente lea sobre los factores en los modelos y debería ser capaz de descubrir qué está sucediendo. Tenga en cuenta que tratar las variables categóricas como factores no es exclusivo de los modelos glm o de los modelos de probabilidades proporcionales, sino que generalmente es la forma en que todos los modelos manejan las variables categóricas. http://www.stat.berkeley.edu/classes/s133/factors.html

  3. Los valores perdidos a veces pueden ser una molestia para tratar, pero si está haciendo un análisis bastante básico, probablemente sea seguro eliminar solo las filas de datos que contienen valores perdidos (esto no siempre es cierto, pero en función de su nivel de experiencia actual estoy adivinar que no necesita preocuparse por los detalles de cuándo y cómo lidiar con los valores perdidos). De hecho, esto es más o menos lo que hace R. Si tiene datos que está utilizando para modelar, si le falta información en una fila para su respuesta o cualquier covariable en el modelo R, solo va a excluir estos datos (esta es la advertencia que está viendo). Obviamente, si está excluyendo una gran proporción de sus datos debido a la falta, sus resultados podrían estar sesgados y probablemente sea bueno intentar obtener más información sobre por qué hay tantos valores faltantes, pero si usted ' faltan 162 observaciones en 10,000 filas de datos, no me preocuparía demasiado. Puede buscar en Google métodos para manejar datos faltantes si está interesado en algunos detalles más.

  4. Casi todos los objetos del modelo R ( lm, glm, lrm, ...) tendrán un asociado predict()función que le permitirá calcular los valores previstos para el conjunto de datos de modelado actual y, además, para otro conjunto de datos que se desea predecir un resultado de. Simplemente busque ?predict.glmo ?predict.lmintente obtener más información sobre el tipo de modelo con el que desea trabajar. Esto es algo muy típico que la gente desea hacer con los modelos, así que puede estar seguro de que hay algunas funciones y métodos integrados que deberían hacer que esto sea relativamente sencillo.

¡La mejor de las suertes!

Steve Reno
fuente
2
  1. Sí, el logit o probit ordenado sería el punto de partida. Aquí hay un tutorial sobre logit ordenado que usa R. Otras preguntas de CV probablemente pueden ayudarlo con cualquier inconveniente con el que se encuentre: pruebe las etiquetas 'logit', 'probit' y 'ordinal'.

  2. kk-1caucasian

  3. El manejo de los datos faltantes depende en gran medida del problema en cuestión, y sí, la forma en que maneja los datos faltantes puede introducir un sesgo. Este extracto del libro describe muy bien cuatro mecanismos que pueden producir datos faltantes, que deberían ayudarlo a considerar posibles sesgos en su propio problema. (En particular, sección 25.1, p. 530.)

  4. Muchos paquetes de modelado tienen una predictfunción de algún tipo, y de hecho el primer tutorial vinculado anteriormente incluye una demostración.

Sean Easter
fuente
¡Muchas gracias! Seguimiento rápido en el n. ° 2: Esa fue mi suposición básica, pero ¿cuál es el código? ¿Hay más de dos variables? Por ejemplo, caucásico, negro, latino.
Ryan
Bastante bienvenido! En ese ejemplo, elegiría una categoría para incluir en la intersección, digamos latino, y dummies para las otras dos. Un valor 1 para el caucasianficticio indica un encuestado caucásico, similar para la blackvariable ficticia. Un valor 0 para ambos indica un encuestado latino. ¿Tener sentido?
Sean Easter
Entonces, ¿debería cambiar el conjunto de datos de una columna con respuestas múltiples ('negro', 'caucásico' y 'latino') a una columna 'negra' con 1s y 0s, una columna 'caucásica' con 1s y 0s, y una columna 'latino' con 1s y 0s?
Ryan
Ese es un enfoque que funcionará bien. La única diferencia con el uso de dos columnas es cómo interpreta la intersección. Puede hacerlo manualmente, pero creo que los factores en R pueden manejarlo por usted. Intente esto: se explica el uso de factores con un ejemplo similar. ¡Salud!
Sean Easter
1
El enlace al tutorial está roto. Si alguien puede arreglarlo, ¡sería genial!
Dan Hicks