R如何找​​到GLM中的色散参数?

机器算法验证 r 广义线性模型 分散
2022-04-20 08:24:59

我正在研究一个涉及将 GLM 拟合到数据的问题,我很好奇 R 如何计算色散参数。例如,我有这个输出作为我的 GLM 的摘要。

glm(formula = Lifespan ~ glucose + Temperature, family = 
              Gamma(link = "inverse"), 
data = dat)

Deviance Residuals: 
Min       1Q   Median       3Q      Max  
-2.2337  -0.7800  -0.1906   0.3331   2.1397  

Coefficients:
         Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.455352   0.048656   9.359  < 2e-16 ***
glucose     -0.066062   0.015573  -4.242 3.41e-05 ***
Temperature -0.007778   0.001248  -6.233 2.73e-09 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Gamma family taken to be 0.6810965)

Null deviance: 172.16  on 199  degrees of freedom
Residual deviance: 135.52  on 197  degrees of freedom
AIC: 1207.6

Number of Fisher Scoring iterations: 6

我的问题是,R 如何计算色散参数等于 0.6810965?我试过查看 GLM 函数的文档,但似乎找不到。

作为一个后续问题,我尝试更改摘要以使色散为 1,这不会影响 AIC 值或空值/残差偏差,所以我如何判断我的模型是否更适合色散 1 或输出中的给定离散度,0.68?

1个回答

您可以在代码中查看summary.glm您将看到的位置:

sum((object$weights * object$residuals^2)[object$weights > 0])/df.r
  • df.r是“剩余自由度”(观察数 - 参数数)
  • object$residuals(来自?glm):

残差:工作残差,即 IWLS 拟合的最终迭代中的残差。由于忽略了零权重的情况,因此它们的工作残差为“NA”。

我现在脑子里没有工作残差的定义,但事实证明这相当于计算皮尔逊残差的平方和(,其中是模型预测的缩放方差,等于)除以残差 df。(Yiμi)2/viviμi2

运行example("glm")以获取拟合对象glm.D93

> sum(residuals(glm.D93, "pearson")^2)
[1] 5.173202
> with(glm.D93, sum(weights*residuals^2))
[1] 5.173202

这基本上是残差的平方和(缩放以使残差同方差)除以残差 df(因此它与您估计(高斯)线性模型的标准偏差的方式相匹配(均方误差 / 残差df))。

需要记住的一件事是,大多数 GLM 对离散度的估计都是近似值(即使您费力获得最大似然估计,它也会因样本量小而产生偏差)。例如,您还可以计算sigma(glm.D93),它将偏差(或等效地偏差残差的平方和)除以残差 df。Venables 和 Ripley MASS评论了这些近似值对于小样本量的不可靠性。

我不清楚您的问题(“我的模型是否更适合分散 1 或估计的分散”)是否有意义;改变离散度根本不会改变模型的预测。