在具有Gamma分布的GLM中使用R


14

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

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

我认为类似的情况是,对于二项式分布,GLM要求知道每个数据条目的试验次数()。N

Answers:


12

常规伽马GLM包含形状参数为常数的假设,就像法线模型假定常数方差一样。

在GLM用语色散参数,在通常是恒定的。瓦尔Ý = φ V μ ϕ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的形状参数有关。ϕ^


1
谢谢。在R中,是否可以指定是什么?通过此链接,在打印结果之前,似乎不必决定给定的我是否正确地说,如果存在一个固定的,那么它不会影响系数向量的结果?如果是这样,我如何确定最佳以手动拟合数据(不使用R)?ķ ķ β ķϕ=KKKβK
乔恩·克劳斯

μMASS

glm(V4 ~ V3 + V2 + V1, family=Gamma)V1,V2,V3V4β

1
好吧,您可以在R之外实现可以在其中实现的任何东西;例如,您可以最大化可能性,或者可以使用基于的估计。您能否在这里更详细地解释“不当”的意思?ϕ^
Glen_b-恢复莫妮卡

1
为了测试自己的代码,我生成了包含10,000个元组的一组数据。要生成它,我固定了,生成了样本,计算出(带有反向链接功能的scale参数),并根据分布生成一个随机变量。当我在数据集上运行R时,其预测的远不及。当我针对其他分布进行此操作时,R的预测几乎完全正确。V θ = β Ť V - 1 Ÿ 伽玛5 θ β ββVθ=(βTV)1YGamma(5,θ)β^β
乔恩·克劳斯

12

我使用了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 = T, dispersion = 1/myshape$alpha) 
    summary(glmGamma, dispersion = 1/myshape$alpha)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.