Es gibt verschiedene Methoden zur Vorhersage von ordinalen und kategorialen Variablen.
Was ich nicht verstehe, ist, wie wichtig diese Unterscheidung ist. Gibt es ein einfaches Beispiel, das verdeutlicht, was passiert, wenn ich die Bestellung storniere? Unter welchen Umständen spielt es keine Rolle? Wenn zum Beispiel auch die unabhängigen Variablen alle kategorisch / ordinal sind, gibt es dann einen Unterschied?
Diese verwandte Frage konzentriert sich auf die Art der unabhängigen Variablen. Hier frage ich nach Ergebnisvariablen.
Bearbeiten: Ich sehe den Punkt, dass die Verwendung der Auftragsstruktur die Anzahl der Modellparameter reduziert, aber ich bin immer noch nicht wirklich überzeugt.
Hier ist ein Beispiel (aus einer Einführung in die geordnete logistische Regression, bei der die ordinale logistische Regression meines Erachtens nicht besser abschneidet als die multinomiale logistische Regression):
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))
Dies zeigt die Verteilung der Anzahl der richtigen Vermutungen (von 40) beider Algorithmen.
Edit2: Wenn ich als Scoring-Methode folgendes verwende
return(sum(abs(as.numeric(pred)-as.numeric(test_data$apply)))
und "sehr falsche" Vorhersagen zu bestrafen, sieht polr immer noch schlecht aus, dh die obige Handlung ändert sich nicht sehr.
ordered factor
, was die Ergebnisse verbessern würde, gradapply$apply <-factor(gradapply$apply, levels= c('unlikely', 'somewhat likely', 'very likely') , ordered = TRUE)
aber es macht keinen Unterschied. Wenn man sich die Genauigkeit ansieht, sind sich die beiden ziemlich ähnlich. Genauigkeit ist jedoch keine gute Messgröße, auf die man sich ausschließlich verlassen kann.