Ich versuche eine geordnete Logit-Regression durchzuführen. Ich führe das Modell so aus (nur ein dummes kleines Modell, das die Anzahl der Unternehmen auf einem Markt anhand von Einkommens- und Bevölkerungsmaßen schätzt). Meine Frage betrifft Vorhersagen.
nfirm.opr<-polr(y~pop0+inc0, Hess = TRUE)
pr_out<-predict(nfirm.opr)
Wenn ich "Vorhersagen" ausführe (mit denen ich versuche, das vorhergesagte y zu erhalten), sind die Ausgaben entweder 0, 3 oder 27, was in keiner Weise die Vorhersage widerspiegelt, die auf meinen manuellen Vorhersagen aus dem Koeffizienten basieren sollte Schätzungen und Abschnitte. Weiß jemand, wie man "genaue" Vorhersagen für mein bestelltes Logit-Modell erhält?
BEARBEITEN
Um meine Bedenken zu verdeutlichen, enthalten meine Antwortdaten Beobachtungen auf allen Ebenen
>head(table(y))
y
0 1 2 3 4 5
29 21 19 27 15 16
wo wie meine Vorhersagevariable sich zu bündeln scheint
> head(table(pr_out))
pr_out
0 1 2 3 4 5
117 0 0 114 0 0
quelle
predict
Funktion zurückgegebenen Werte von den manuell generierten? Wie ist Ihre abhängige Variable aufgebaut? Bitte geben Sie ein reproduzierbares Beispiel an.polr()
gegen andere Funktionen verifiziert ? Sie könntenlrm()
aus Paket versuchenrms
:lrmFit <- lrm(y ~ pop0 + inc0); predict(lrmFit, type="fitted.ind")
. Eine weitere Option istvglm()
aus dem PaketVGAM
:vglmFit <- vglm(y ~ pop0 + inc0, family=propodds); predict(vglmFit, type="response")
. Beide geben die Matrix der vorhergesagten Kategoriewahrscheinlichkeiten zurück. Sehen Sie meine Antwort , um die vorhergesagten Kategorien von dort zu erhalten.Antworten:
polr()
MASS
polr()
Passen Sie nun das Proportional-Odds-Modell mit an
polr()
und erhalten Sie die Matrix der vorhergesagten Kategoriewahrscheinlichkeiten mitpredict(polr(), type="probs")
.Vergleiche mit dem Ergebnis von
polr()
.Wählen Sie für die vorhergesagten Kategorien
predict(polr(), type="class")
einfach - für jede Beobachtung - die Kategorie mit der höchsten Wahrscheinlichkeit aus.Vergleichen Sie mit dem Ergebnis von
polr()
.quelle