Previsão de variável de resposta categórica

8

Eu tenho o seguinte tipo de dados (codificado em 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

Gostaria de saber se o valor de v.bou o valor de v.ctem alguma capacidade de prever o valor de v.a. Eu executaria uma ANOVA (como mostrado acima), mas acho que não faz sentido, pois minha variável de resposta não é ordinal (é categórica). O que devo fazer?

Remi.b
fonte
5
Aprenda sobre o logit multinomial. Aqui estão dois livros on-line gratuitos de Kenneth Train ( elsa.berkeley.edu/books/choice.html e elsa.berkeley.edu/books/choice2.html ). Eu acho que esses são livros de nível de pós-graduação. Ou apenas pesquise no Google por "logit multinomial".
Bill
@ Bill parece um bom começo para uma resposta. Por favor, considere expandir um pouco o que são modelos de logit multinomiais e publicá-lo como resposta.
Glen_b -Reinstate Monica

Respostas:

8

Você pode usar QUALQUER classificador. Incluindo Discriminantes Lineares, logit multinomial como Bill apontou, Support Vector Machines, Redes Neurais, CART, floresta aleatória, árvores C5, há um mundo de modelos diferentes que podem ajudá-lo a prever usando e . Aqui está um exemplo usando a implementação R da floresta aleatória:v.umav.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)

insira a descrição da imagem aqui

# model confusion matrix
model$confusion

Claramente, essas variáveis ​​não mostram uma relação forte.

JEquihua
fonte
@JEquihua Você poderia me dizer um pouco mais sobre o que é uma "árvore" e qual é o significado da saída (matriz de confusão e o gráfico). Muito obrigado!
Remi.b
Eu vou. Estou muito ocupado, me dê um pouco de tempo. @ Remi.b
JEquihua
3

Essa é uma resposta prática mais parcial, mas funciona para mim fazer alguns exercícios antes de me aprofundar na teoria .

Esse link ats.ucla.edu é uma referência que pode ajudar a começar a entender sobre a regressão logística multinomial (como apontado por Bill), de uma maneira mais prática.
Apresenta código reproduzível para entender a função multinomdo nmetpacote Re também fornece um resumo sobre a interpretação das saídas.

Considere 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 

É assim que você pode interpretar o modelo de logística multinomial ajustada log-linear:

em(P(vuma=cumat)P(vuma=dog))=b10+b11vb+b12(vc=red)+b13(vc=yeeueuoW)+b14vd em(P(vuma=cumat)P(vuma=goumat))=b20+b21vb+b22(vc=red)+b23(vc=yeeueuoW)+b24vd

Aqui está um trecho sobre como os parâmetros do modelo podem ser interpretados:

  • Um aumento de uma unidade na variável vd está associado à diminuição nas chances de log de "cão" vs. "gato" no valor de 21.97069 ( ).b14

a mesma lógica para a segunda linha, mas, considerando "cabra" vs. "gato" com ( = -47,72585). b24

  • As probabilidades de log de ser "cachorro" vs. "gato" aumentarão em 6,705314 se você passar de vc = "blue" para vc = "red" ( ). b12

.....

Há muito mais no artigo, mas eu pensei que essa parte fosse o núcleo.


Referência:

R Exemplos de análise de dados: Regressão logística multinomial. UCLA: Grupo de Consultoria Estatística.
de http://www.ats.ucla.edu/stat/r/dae/mlogit.htm (acessado em 05 de novembro de 2013).

Andre Silva
fonte