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
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.