Existem diferentes métodos para previsão de variáveis ordinais e categóricas.
O que eu não entendo é como essa distinção importa. Existe um exemplo simples que pode esclarecer o que dá errado se eu cancelar o pedido? Sob que circunstâncias isso não importa? Por exemplo, se as variáveis independentes também forem categóricas / ordinais, haveria alguma diferença?
Esta questão relacionada se concentra no tipo de variáveis independentes. Aqui estou perguntando sobre variáveis de resultado.
Editar: vejo que a utilização da estrutura da ordem reduz o número de parâmetros do modelo, mas ainda não estou realmente convencido.
Aqui está um exemplo (retirado de uma introdução à regressão logística ordenada, na qual, até onde eu posso ver, a regressão logística ordinal não apresenta um desempenho melhor que a regressão logística multinomial:
library(nnet)
library(MASS)
gradapply <- read.csv(url("http://www.ats.ucla.edu/stat/r/dae/ologit.csv"), colClasses=c("factor", "factor", "factor", "numeric"))
ordered_result <- function() {
train_rows <- sample(nrow(gradapply), round(nrow(gradapply)*0.9))
train_data <- gradapply[train_rows,]
test_data <- gradapply[setdiff(1:nrow(gradapply), train_rows),]
m <- polr(apply~pared+gpa, data=train_data)
pred <- predict(m, test_data)
return(sum(pred==test_data$apply))
}
multinomial_result <- function() {
train_rows <- sample(nrow(gradapply), round(nrow(gradapply)*0.9))
train_data <- gradapply[train_rows,]
test_data <- gradapply[setdiff(1:nrow(gradapply), train_rows),]
m <- multinom(apply~pared+gpa, data=train_data)
pred <- predict(m, test_data)
return(sum(pred==test_data$apply))
}
n <- 100
polr_res <- replicate(n, ordered_result())
multinom_res <- replicate(n, multinomial_result())
boxplot(data.frame(polr=polr_res, multinom=multinom_res))
que mostra a distribuição do número de palpites corretos (de 40) de ambos os algoritmos.
Edit2: Quando eu uso como método de pontuação, o seguinte
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
e penalizar previsões "muito erradas", o polr ainda parece ruim, ou seja, o enredo acima não muda muito.
fonte
ordered factor
, o que melhoraria os resultados:gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
mas não faz diferença. Se você observar a precisão, os dois são muito parecidos. A precisão não é uma boa métrica em que se possa confiar apenas.Respostas:
Existem importantes ganhos de potência e precisão ao tratar Y como ordinal, quando apropriado. Isso decorre do número muito menor de parâmetros no modelo (por um fator de k em que k é um a menos do que o número de categorias de Y). Existem vários modelos ordinais. Os mais comumente usados são os modelos logísticos ordinais de chances proporcionais e razão de continuação.
fonte
Se você ignorar a natureza ordenada das variáveis, os métodos apropriados ainda fornecerão uma análise correta, mas a vantagem de usar métodos para dados ordenados é que eles fornecem mais informações sobre a ordem e magnitude de variáveis significativas.
fonte
Se você deseja modelar os dados e a variável categórica dependente não tiver ordem (nominal), deverá usar um modelo de logit multinomial. Se a variável dependente tiver uma ordem (ordinal), você poderá usar um modelo de logit cumulativo (modelo de chances proporcionais).
Para mim, pessoalmente, acho os resultados muito mais fáceis de interpretar para um modelo de chances proporcionais em comparação com um modelo multinomial, especialmente quando você deseja relatar os resultados para alguém sem conhecimento estatístico.
Estes não são os únicos modelos que você pode usar, mas são muito típicos.
fonte