Существуют разные методы прогнозирования порядковых и категориальных переменных.
То, что я не понимаю, как это различие имеет значение. Есть ли простой пример, который может прояснить, что пойдет не так, если я уроню заказ? При каких обстоятельствах это не имеет значения? Например, если все независимые переменные являются категориальными / порядковыми, будет ли разница?
Этот связанный вопрос фокусируется на типе независимых переменных. Здесь я спрашиваю о переменных результата.
Изменить: я вижу, что использование структуры заказа уменьшает количество параметров модели, но я все еще не совсем уверен.
Вот пример (взят из введения в упорядоченную логистическую регрессию, где, насколько я вижу, порядковая логистическая регрессия не работает лучше, чем полиномиальная логистическая регрессия:
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))
который показывает распределение количества правильных догадок (из 40) обоих алгоритмов.
Edit2: когда я использую в качестве метода оценки
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
и оштрафовать «очень неправильные» прогнозы, polr все равно выглядит плохо, то есть сюжет выше не сильно меняется.
ordered factor
, которая улучшит результаты, gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
но это не имеет значения. Если вы посмотрите на точность, они очень похожи. Точность, однако, не является хорошим показателем, на который можно положиться.