Sıralı ve kategorik değişkenlerin tahmininde farklı yöntemler vardır.
Anlamadığım şey, bu ayrımın önemi. Siparişi düşürürsem neyin yanlış gittiğini netleştirebilecek basit bir örnek var mı? Hangi koşullar altında önemli değil? Örneğin, bağımsız değişkenlerin hepsi kategorik / sıralıysa, bir fark olur mu?
Bu ilgili soru bağımsız değişkenlerin türüne odaklanmaktadır. Burada sonuç değişkenlerini soruyorum.
Düzenleme: Sipariş yapısını kullanmanın model parametrelerinin sayısını azalttığı noktasını görüyorum, ancak yine de gerçekten ikna olmadım.
İşte bir örnek ( sıralı lojistik regresyonunun görebildiğim kadarıyla, çok uluslu lojistik regresyondan daha iyi performans göstermediği sıralı lojistik regresyonuna girişten alınmıştır :
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))
her iki algoritmanın doğru tahmin sayısının (40 üzerinden) dağılımını gösterir.
Edit2: Puanlama yöntemi olarak kullandığımda aşağıdakiler
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
ve "çok yanlış" tahminleri cezalandırır, polr hala kötü görünür, yani yukarıdaki çizim çok fazla değişmez.
ordered factor
, bu da sonuçları iyileştirir: gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
ama hiçbir fark yaratmaz. Doğruluğa bakarsanız, ikisi birbirine oldukça benzer. Doğruluk, yalnızca güvenmek için iyi bir metrik değildir.