实际上有很多方法可以从序数 probit/logit 中获取残差。虽然polr
不提供任何残差,但vglm
提供了几个。?residualsvglm
从包装中查看VGAM
(另见下文)。
注意:但是,对于控制函数/2SRI 方法,Wooldridge (2014) 建议使用 Vella (1993) 中描述的广义残差。据我所知,这些目前在 中不可用R
,虽然我正在努力,但它们在 Stata 中(使用predict gr, score
)
VLGM 中的残差

polr 的替代残差
您可以使用包sure
(链接)来计算代理残差resids
。该软件包基于美国统计协会杂志上的这篇论文。
library(sure) # for residual function and sample data sets
library(MASS) # for polr function
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)
编辑:一个大问题是以下(来自?resids
):
"注意:代理残差需要从连续分布中采样;因此,每次调用残差的结果都会有所不同。当 method = "latent" 时,用于从截断分布中采样的内部函数基于 rtrunc 和 qtrunc 的修改版本。 "
即使在运行时resids(mod1, nsim=1000, method="latent")
,也没有收敛的结果。