Istnieją różne metody przewidywania zmiennych porządkowych i kategorialnych.
Nie rozumiem, jak ważne jest to rozróżnienie. Czy istnieje prosty przykład, który może wyjaśnić, co się stanie, jeśli złożę zamówienie? W jakich okolicznościach to nie ma znaczenia? Na przykład, jeśli wszystkie zmienne niezależne również są kategoryczne / porządkowe, czy byłaby różnica?
To powiązane pytanie koncentruje się na rodzaju zmiennych niezależnych. Tutaj pytam o zmienne wyników.
Edycja: Widzę sens, że użycie struktury zamówień zmniejsza liczbę parametrów modelu, ale nadal nie jestem przekonany.
Oto przykład (zaczerpnięty ze wstępu do uporządkowanej regresji logistycznej, w której o ile widzę porządkową regresję logistyczną nie działa lepiej niż wielomianowa regresja logistyczna:
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))
który pokazuje rozkład liczby trafnych domysłów (spośród 40) obu algorytmów.
Edycja2: Kiedy używam jako metody punktacji, następujące
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
i karać za „bardzo złe” przewidywania, polr nadal wygląda źle, tj. powyższy wykres niewiele się zmienia.
ordered factor
, co poprawiłoby wyniki: gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
ale to nie robi różnicy. Jeśli spojrzysz na dokładność, oba są bardzo podobne. Dokładność nie jest jednak dobrą miarą, na której można polegać.