将 R 用于 GLM 与 Gamma 分布

机器算法验证 r 广义线性模型 伽马分布 dglm
2022-01-26 09:35:39

我目前在理解使用 Gamma 分布拟合 GLM 的 R 语法时遇到问题。

我有一组数据,其中每一行包含 3 个协变量()、一个响应变量()和一个形状参数()。我想将 Gamma 分布的比例建模为 3 个协变量的线性函数,但我不明白如何将每行数据X1,X2,X3YKK

我认为类似的情况是,对于二项分布,GLM 要求每个数据条目N

2个回答

我使用了Balajari (2013)描述的MASS包的gamma.shape函数,以便事后估计形状参数,然后调整 GLM 中的系数估计和预测。我建议你按原样阅读讲座,在我看来,关于 GLM 中伽马分布的使用非常清晰和有趣。

    glmGamma <- glm(response ~ x1, family = Gamma(link = 
                    "identity")
    library(MASS)
    myshape <- gamma.shape(glmGamma)
    gampred <- predict(glmGamma , type = "response", se = TRUE, 
                      dispersion = 1/myshape$alpha) 
    summary(glmGamma, dispersion = 1/myshape$alpha)

通常的伽马 GLM 包含形状参数是恒定的假设,就像正常线性模型假设恒定方差一样。

用 GLM 的说法,色散参数中的 \phi通常是常数。ϕVar(Yi)=ϕV(μi)

更一般地说,您有,但这无济于事。a(ϕ)

也许可以使用加权 Gamma GLM 来合并指定形状参数的这种效果,但我还没有研究过这种可能性(如果它有效,它可能是最简单的方法,但我一点也不肯定会的)。

如果您有双 GLM,您可以将该参数估计为协变量的函数......如果双 glm 软件允许您在方差项中指定偏移量,您可以这样做。看起来dglm包中的函数dglm允许您指定偏移量。我不知道它是否会让您指定像(比如说)这样的方差模型~ offset(<something>) + 0

另一种选择是直接最大化可能性。


> y <- rgamma(100,10,.1)

> summary(glm(y~1,family=Gamma))

Call:
glm(formula = y ~ 1, family = Gamma)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.93768  -0.25371  -0.05188   0.16078   0.81347  

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.0103660  0.0003486   29.74   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for Gamma family taken to be 0.1130783) 

    Null deviance: 11.223  on 99  degrees of freedom
Residual deviance: 11.223  on 99  degrees of freedom
AIC: 973.56

Number of Fisher Scoring iterations: 5

它说的那一行:

   (Dispersion parameter for Gamma family taken to be 0.1130783)

是你想要的那个。

与 Gamma 的形状参数有关。ϕ^