4 Stimmen

Reste und Diagramme in geordneter multinomialer Regression

Ich muss ein geplottetes Residualdiagramm mit angepassten versus Residualwerten aus einer geordneten multinominalen logistischen Regression erstellen.

Wie kann ich Residuen extrahieren, wenn ich polr verwende? Gibt es eine andere Funktion, die ord multinominal logit ausführt, aus der Residuen extrahiert werden können?

Dies ist der Code, den ich verwendet habe

options(contrasts = c("contr.treatment", "contr.poly"))
mod1 <- polr(as.ordered(y) ~ x1 + x2 + x3, data, method='logistic')

fit <- mod1$fitted.values
res <- residuals(mod1)
binnedplot(fit, res)

Das Problem ist, dass das Objekt 'res' 'null' ist.

Vielen Dank

2voto

Ben Bolker Punkte 190239

Zum Einstieg, können Sie uns sagen, wie Residuen prinzipiell für ein Modell mit kategorischen Antworten definiert würden? fitted.values ist eine Matrix von Wahrscheinlichkeiten. Sie könnten Residuen in Bezug auf korrekte Vorhersagen definieren (wobei das wahrscheinlichste Ergebnis als Vorhersage definiert wird, wie es in der Standard predict Methode für Objekte von polr der Fall ist) -- oder Sie könnten eine n-mal-n-Tabelle von tatsächlichen Werten und Vorhersagewerten berechnen. Alternativ könnten Sie die ordinalen Daten auf eine Ganzzahlenskala zurückführen und einen mittleren Wert als Vorhersage berechnen ... aber ich sehe keinen eindeutigen Weg, die Residuen überhaupt zu definieren.

0voto

Jongwon Kim Punkte 1

In polr() gibt es keine Funktion, die den Fehler zurückgibt. Sie müssen ihn manuell unter Verwendung seiner Definition berechnen.

0voto

Tom Punkte 1975

Es gibt tatsächlich viele Möglichkeiten, Reste aus einem ordinalen Probit/Logit zu erhalten. Obwohl polr keine Reste liefert, bietet vglm mehrere. Siehe ?residualsvglm aus dem Paket VGAM (siehe auch unten).

HINWEIS: Für einen Control Function/2SRI-Ansatz schlägt Wooldridge (2014) vor, die verallgemeinerten Reste zu verwenden, wie sie in Vella (1993) beschrieben sind. Soweit ich weiß, sind diese derzeit nicht in R verfügbar, obwohl ich daran arbeite, aber sie sind in Stata (unter Verwendung von predict gr, score).

Reste in VLGM

Bildbeschreibung hier eingeben

Surrogatreste für polr

Sie können das Paket sure (Link) verwenden, um Surrogatreste mit resids zu berechnen. Das Paket basiert auf diesem Artikel im Journal der American Statistical Association.

library(sure) # für Restfunktion und Beispieldatensätze
library(MASS) # für polr Funktion

df1 <- df1
df1$x1 <- df1$x
df1$x <- NULL
df1$y <- df2$y
df1$x2 <- df2$x
df1$x3 <- df3$x

options(contrasts = c("contr.treatment", "contr.poly"))
mod1 <- polr(as.ordered(y) ~ x1 + x2 + x3, data=df1, method='probit')

fit <- mod1$fitted.values
res <- resids(mod1)

EDIT: Ein großes Problem besteht in folgendem (aus ?resids):

"Hinweis: Surrogatreste erfordern eine Stichprobe aus einer kontinuierlichen Verteilung; daher wird das Ergebnis bei jedem Aufruf von resids unterschiedlich sein. Die internen Funktionen zur Stichprobenentnahme aus abgeschnittenen Verteilungen bei method = "latent" basieren auf modifizierten Versionen von rtrunc und qtrunc."

Selbst bei Ausführung von resids(mod1, nsim=1000, method="latent") konvergiert das Ergebnis nicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X