有序多项式回归中的残差和图

时间:2012-02-11 06:59:28

标签: r plot regression ordinal

我需要根据有序多项Logit回归绘制带有拟合与残差值的分级残差图。

使用polr时如何提取残差?是否还有其他函数可以运行多项logit,其中可以提取残差?

这是我使用的代码

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)

问题是对象'res'是'null'。

由于

3 个答案:

答案 0 :(得分:0)

首先,您能告诉我们对于具有分类响应的模型,如何定义残差原则fitted.values是概率矩阵。您可以根据正确的预测定义残差(将最可能的结果定义为预测,如predict对象的默认polr方法) - 或者您可以计算n-by-n表真值和预测值。或者,您可以将序数数据减少回整数,并计算平均结果作为预测...但我看不出有任何独特的方法来定义残差。

答案 1 :(得分:0)

在polr()中,没有返回残差的函数。您应该使用其定义手动计算它。

答案 2 :(得分:0)

实际上有很多方法可以从序数 probit/logit 中获取残差。尽管 polr 不提供任何残差,但 vglm 提供了几个。请参阅 ?residualsvglm 包中的 VGAM(另见下文)。

注意:但是,对于控制函数/2SRI 方法,Wooldridge (2014) 建议使用 Vella (1993) 中描述的广义残差。据我所知,这些目前在 R 中不可用,虽然 I am working on that,但它们在 Stata 中(使用 predict gr, score

VLGM 中的残差

enter image description here

polr 的替代残差

您可以使用包 sure (link),通过 resids 计算代理残差。该软件包基于 this paper,美国统计协会杂志。

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):

"注意:代理残差需要从连续分布中采样;因此,每次调用 resids 的结果都会不同。当 method = "latent" 时,用于从截断分布中采样的内部函数基于修改rtrunc 和 qtrunc 的版本。”

即使运行 resids(mod1, nsim=1000, method="latent"),结果也没有收敛。