【问题标题】:Calculating working residuals of a Gamma GLM model计算 Gamma GLM 模型的工作残差
【发布时间】:2019-05-02 01:57:53
【问题描述】:

我正在尝试计算 Gamma GLM 模型的工作残差。我正在手动执行此操作,因为我想逐步计算部分残差。我的模型及其系数和预测如下所述:

library(datasets)
data(mtcars)

model <- glm(mpg ~ cyl + disp + hp, data=mtcars, family=Gamma)
coefs <- coef(model)
pred <- coefs[1] + coefs[2]*mtcars$cyl + coefs[3]*mtcars$disp + coefs[4]*mtcars$hp

我尝试通过应用公式 (value-fitted.value)/fitted.value 来计算工作残差,该公式适用于 Poisson glm。但是,它对 Gamma 不起作用,因为这些值与我使用函数 resid() 生成的值不同:

(mtcars$mpg - (-pred^(-1)))/-pred^(-1))
resid(model, type="working")

有人知道如何估计这样的工作残差,然后计算部分残差吗?

【问题讨论】:

  • 您的预测代码不会预测响应的实际值,但会在线性预测变量的范围内。您需要致电 Gamma()$linkinv() 进行预测以获得预测响应,这可能会有所帮助。

标签: r model glm lm gamma-distribution


【解决方案1】:

工作残差只是model$residuals。见?glm


## setup
library(datasets)
data(mtcars)
model <- glm(mpg ~ cyl + disp + hp, data = mtcars, family = Gamma)

## family info
oo <- Gamma(link = "inverse")

## compute linear predictor manually (assuming no model offset)
coefs <- coef(model)
eta <- coefs[1] + coefs[2] * mtcars$cyl + coefs[3] * mtcars$disp +
       coefs[4] * mtcars$hp

## compute working residuals
resi_working <- (mtcars$mpg - oo$linkinv(eta)) / oo$mu.eta(eta)

## validation
range(resi_working - model$residuals)
#[1] 0 0

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 2012-09-27
    • 2019-06-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多