如何为multinom() - 对象的每个观察提取偏差残差?

时间:2017-08-17 11:08:54

标签: r multinomial

在使用multinom()函数拟合mutlinomial logit模型后,我想提取每个obervation的偏差残差。

因为我通常使用二进制logit模型:

n = 1000
df1 = data.frame(x1=runif(n,0,100),x2=runif(n,0,100))
df1 = transform(df1,y=1+ifelse(100 - x1 - x2 + rnorm(n,sd=10) < 0, 0,                  ifelse(100 - 2*x2 + rnorm(n,sd=10) < 0, 1, 2)), set="Original")

df1$y_binary=ifelse(df1$y==1,1,0)
logit_model=glm(y:binary ~x1+x2,data=df1,family=binomial(link='logit'))

eps=resid(logit_model,type="deviance") 

我想计算多项回归模型的对应物,设置:

library(nnet)
mod <- multinom(y ~ x1 + x2, df1)

那么如何从mod中获得de deviance residuals?

1 个答案:

答案 0 :(得分:0)

不幸的是,对于配备nnet::multinom()的模型,似乎没有这样的功能。

如果您查看multinom()函数体,您会看到偏差是根据总值fit$deviance <- 2 * fit$value计算的。此值与mod$value中的值相同 - 它是似然比检验统计量。因此,您只有Deviance的总数。

但是,您可以实现自己的功能。对于每次观察,在计算偏差之后,您只需选择用于设置偏差值信号的规则。以下是一篇文章的链接,该文章提出了一种签名扩展方法来计算多项模型中的偏差残差:http://convegni.unica.it/cladag2015/files/2015/10/Romeo1.pdf