【问题标题】:Residuals and plots in ordered multinomial regression有序多项回归中的残差和图
【发布时间】:2012-03-03 13:16:09
【问题描述】:

我需要绘制一个分级残差图,其中包含有序多项 logit 回归中的拟合残差值。

使用 polr 时如何提取残差?是否有任何其他运行 ord multinominal 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'。

谢谢

【问题讨论】:

  • 我可以看一下数据吗? (我无法回答,因为我不太了解 R,但我想复制学习)谢谢
  • @moldovean,polr 函数的 MASS 包帮助页面确实有一些示例数据集。
  • Gelman & Hill 提出了一种计算序数逻辑回归残差的方法。他们根据切点计算每个案例的加权平均值,计算残差,然后将这些残差分箱以进行图形表示。

标签: r plot regression ordinal


【解决方案1】:

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

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

VLGM 中的残差

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我知道这是一个非常古老的答案,但我看到你仍然活跃在堆栈上......所以我想我会试一试。我想在第一阶段使用带有polr 的控制功能(CF)/两阶段残差包含(2SRI)。我想知道您关于如何从polr 计算残差的任何不同建议是否适合此目的(2SLS 方法将包括polr 的拟合值,但在模仿2SLS,我不知道有什么软件可以直接做序数 2SLS)。
      • 我发布了一个关于我对 CrossValidated 的评论的问题:stats.stackexchange.com/questions/518535/…
      猜你喜欢
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 2018-12-07
      • 2017-10-03
      • 1970-01-01
      • 2021-04-01
      • 2018-04-30
      • 2013-05-06
      相关资源
      最近更新 更多