Predicción variable de respuesta categórica


8

Tengo el siguiente tipo de datos (codificados en R):

v.a = c('cat', 'dog', 'dog', 'goat', 'cat', 'goat', 'dog', 'dog')
v.b = c(1, 2, 1, 2, 1, 2, 1, 2)
v.c = c('blue', 'red', 'blue', 'red', 'red', 'blue', 'yellow', 'yellow')
set.seed(12)
v.d = rnorm(8)
aov(v.a ~ v.b + v.c + v.d) # Error

Me gustaría saber si el valor de v.bo el valor de v.ctiene alguna capacidad para predecir el valor de v.a. Ejecutaría un ANOVA (como se muestra arriba) pero creo que no tiene ningún sentido ya que mi variable de respuesta no es ordinal (es categórica). ¿Qué tengo que hacer?


55
Aprenda sobre logit multinomial. Aquí hay dos libros gratuitos en línea de Kenneth Train ( elsa.berkeley.edu/books/choice.html y elsa.berkeley.edu/books/choice2.html ). Creo que esos son libros de posgrado. O simplemente busque en Google "logit multinomial".
Bill

@Bill esto parece un buen comienzo para una respuesta. Considere ampliar un poco los modelos logit multinomiales y publíquelo como respuesta.
Glen_b -Reinstale a Monica el

Respuestas:


8

Podrías usar CUALQUIER clasificador. Incluyendo discriminadores lineales, logit multinomial como señaló Bill, máquinas de vectores de soporte, redes neuronales, CART, bosque aleatorio, árboles C5, hay un mundo de diferentes modelos que pueden ayudarlo a predecir usando y . Aquí hay un ejemplo usando la implementación R del bosque aleatorio:v.av.bv.c

# packages
library(randomForest)

#variables
v.a= c('cat','dog','dog','goat','cat','goat','dog','dog')
v.b= c(1,2,1,2,1,2,1,2)
v.c= c('blue', 'red', 'blue', 'red', 'red', 'blue', 'yellow', 'yellow')

# model fit
# note that you must turn the ordinal variables into factor or R wont use
# them properly
model <- randomForest(y=as.factor(v.a),x=cbind(v.b,as.factor(v.c)),ntree=10)

#plot of model accuracy by class
plot(model)

ingrese la descripción de la imagen aquí

# model confusion matrix
model$confusion

Claramente, estas variables no muestran una relación fuerte.


@JEquihua ¿Podría decirme un poco más sobre qué es un "árbol" y cuál es el significado de la salida (matriz de confusión y la trama). ¡Muchas gracias!
Remi.b

Voy a. Estoy muy ocupado, dame un poco de tiempo. @ Remi.b
JEquihua

3

Esta es una respuesta práctica más parcial, pero me funciona hacer algunos ejercicios antes de profundizar en la teoría .

Este enlace ats.ucla.edu es una referencia que podría ayudar a comenzar a comprender sobre la regresión logística multinomial (como señaló Bill), de una manera más práctica.
Presenta un código reproducible para comprender la función multinomdesde el nmetpaquete Ry también ofrece un resumen sobre la interpretación de las salidas.

Considera este código:

va = c('cat','dog','dog','goat','cat','goat','dog','dog') 
     # cat will be the outcome baseline
vb = c(1,2,1,2,1,2,1,2)
vc = c('blue','red','blue','red','red','blue','yellow','yellow') 
     # blue will be the vc predictor baseline
set.seed(12)
vd = round(rnorm(8),2)

data = data.frame(cbind(va,vb,vc,vd))

library(nnet)
fit <- multinom(va ~ as.numeric(vb) + vc + as.numeric(vd), data=data)

# weights:  18 (10 variable)
initial  value 8.788898 
iter  10 value 0.213098
iter  20 value 0.000278
final  value 0.000070 
converged

fit

Call:
multinom(formula = va ~ as.numeric(vb) + vc + as.numeric(vd), 
    data = data)

Coefficients:
     (Intercept) as.numeric(vb)     vcred  vcyellow as.numeric(vd)
dog    -1.044866       120.3495 -6.705314  77.41661      -21.97069
goat   47.493155       126.4840 49.856414 -41.46955      -47.72585

Residual Deviance: 0.0001656705 
AIC: 20.00017 

Así es como puede interpretar el modelo logístico multinomial ajustado lineal-log:

ln(P(va=cat)P(va=dog))=b10+b11vb+b12(vc=red)+b13(vc=yellow)+b14vd ln(P(va=cat)P(va=goat))=b20+b21vb+b22(vc=red)+b23(vc=yellow)+b24vd

Aquí hay un extracto sobre cómo se pueden interpretar los parámetros del modelo:

  • Un aumento de una unidad en la variable vd se asocia con la disminución en las probabilidades de registro de ser "perro" frente a "gato" en la cantidad de 21.97069 ( ).b14

la misma lógica para la segunda línea pero, considerando "cabra" vs. "gato" con ( = -47.72585). b24

  • Las probabilidades de registro de ser "perro" frente a "gato" aumentarán en 6.705314 si se pasa de vc = "azul" a vc = "rojo" ( ). b12

.....

Hay mucho más en el artículo, pero pensé que esta parte era el núcleo.


Referencia:

R Ejemplos de análisis de datos: regresión logística multinomial. UCLA: Grupo de Consultoría Estadística.
de http://www.ats.ucla.edu/stat/r/dae/mlogit.htm (consultado el 5 de noviembre de 2013).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.