Existen diferentes métodos para la predicción de variables ordinales y categóricas.
Lo que no entiendo es cómo importa esta distinción. ¿Hay un ejemplo simple que pueda aclarar qué sale mal si abandono el pedido? ¿En qué circunstancias no importa? Por ejemplo, si las variables independientes también son categóricas / ordinales, ¿habría alguna diferencia?
Esta pregunta relacionada se centra en el tipo de variables independientes. Aquí estoy preguntando sobre las variables de resultado.
Editar: veo el punto de que usar la estructura de orden reduce la cantidad de parámetros del modelo, pero todavía no estoy realmente convencido.
Aquí hay un ejemplo (tomado de una introducción a la regresión logística ordenada donde, por lo que puedo ver, la regresión logística ordinal no funciona mejor que la regresión 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 muestra la distribución del número de conjeturas correctas (de 40) de ambos algoritmos.
Edit2: cuando uso como método de puntuación lo siguiente
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
y penalizar las predicciones "muy equivocadas", polr todavía se ve mal, es decir, la trama anterior no cambia mucho.
ordered factor
, lo que mejoraría los resultados: gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
pero no hace ninguna diferencia. Si nos fijamos en la precisión, los dos son bastante similares. Sin embargo, la precisión no es una buena métrica en la que confiar únicamente.