順序変数とカテゴリ変数の予測には、さまざまな方法があります。
私が理解していないのは、この区別がいかに重要かということです。注文を落とすと何が悪いのかを明確にする簡単な例はありますか?どのような状況でそれは重要ではありませんか?たとえば、独立変数もすべてカテゴリカル/オーディナルである場合、違いはありますか?
この関連する質問は、独立変数のタイプに焦点を当てています。ここでは、結果変数について尋ねています。
編集: 順序構造を使用するとモデルパラメーターの数が減るという点がわかりますが、それでもまだ確信が持てません。
ここに例があります(順序付きロジスティック回帰の序論から取られていますが、私が見る限り、順序ロジスティック回帰は多項ロジスティック回帰よりもパフォーマンスが良くありません:
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)
違いはありません。精度を見ると、この2つはほとんど似ています。ただし、精度だけに頼るのに適した指標ではありません。