Ada berbagai metode untuk prediksi variabel ordinal dan kategoris.
Apa yang saya tidak mengerti, adalah bagaimana perbedaan ini penting. Apakah ada contoh sederhana yang dapat menjelaskan apa yang salah jika saya menjatuhkan pesanan? Dalam situasi apa tidak penting? Misalnya, jika variabel independen semuanya kategorikal / ordinal, apakah akan ada perbedaan?
Pertanyaan terkait ini berfokus pada jenis variabel independen. Di sini saya bertanya tentang variabel hasil.
Sunting: Saya melihat titik bahwa menggunakan struktur pesanan mengurangi jumlah parameter model, tapi saya masih belum benar-benar yakin.
Berikut ini adalah contoh (diambil dari pengantar untuk regresi logistik terurut di mana sejauh yang saya bisa lihat regresi logistik ordinal tidak berkinerja lebih baik daripada regresi logistik 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))
yang menunjukkan distribusi jumlah tebakan benar (dari 40) dari kedua algoritma.
Sunting2: Ketika saya menggunakan sebagai metode penilaian berikut ini
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
dan menghukum prediksi "sangat salah", polr masih terlihat buruk, yaitu plot di atas tidak banyak berubah.
ordered factor
, yang akan meningkatkan hasil: gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
tetapi tidak ada bedanya. Jika Anda melihat keakuratannya, keduanya cukup mirip. Akurasi bukanlah metrik yang baik untuk hanya mengandalkan.