Verwendung von R für GLM mit Gamma-Verteilung


13

Ich habe derzeit ein Problem beim Verständnis der Syntax für R zum Anpassen eines GLM mithilfe der Gamma-Verteilung.

Ich habe eine Reihe von Daten, wobei jede Zeile 3 Co-Variablen ( X1,X2,X3 ), eine Antwortvariable ( ) und einen Formparameter ( ) enthält. Ich möchte die Skala der Gamma-Verteilung als lineare Funktion der 3 Kovariaten modellieren, verstehe aber nicht, wie die Form der Verteilung für jede Datenzeile auf .YKK

Eine Situation, die ich für analog halte, ist, dass für eine Binomialverteilung der GLM erfordert, dass die Anzahl der Versuche ( ) für jeden Dateneintrag bekannt ist.N

Antworten:


12

Das übliche Gamma-GLM enthält die Annahme, dass der Formparameter konstant ist, genauso wie das normale lineare Modell eine konstante Varianz annimmt.

Im GLM-Sprachgebrauch ist der Dispersionsparameter in normalerweise konstant.Var ( Y i ) = ϕ V ( μ i )ϕVar(Yi)=ϕV(μi)

Im Allgemeinen haben Sie , aber das hilft nicht.a(ϕ)

Es ist möglicherweise möglich, einen gewichteten Gamma-GLM-Wert zu verwenden, um diesen Effekt eines bestimmten Formparameters einzubeziehen. Diese Möglichkeit habe ich jedoch noch nicht untersucht sicher, dass es wird).

Wenn Sie eine doppelte GLM hätten, könnten Sie diesen Parameter als Funktion der Kovariaten abschätzen ... und wenn Sie mit der doppelten GLM-Software einen Versatz im Varianzterm angeben könnten, könnten Sie dies tun. Anscheinend können Sie mit der Funktion dglmim Paket dglmeinen Offset angeben. Ich weiß nicht, ob Sie damit ein Varianzmodell wie (etwa) angeben können ~ offset(<something>) + 0.

Eine andere Alternative wäre, die Wahrscheinlichkeit direkt zu maximieren.


> 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

Die Zeile, in der es heißt:

   (Dispersion parameter for Gamma family taken to be 0.1130783)

ist die, die du willst.

Daß φ ist die Form - Parameter der Gamma bezogen.ϕ^


1
ϕ=KKKβK

μMASS

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

1
ϕ^

1
Zum Testen meines eigenen Codes habe ich einen Datensatz mit 10.000 Tupeln generiert. Um es zu erzeugen, fixierte ich , erzeugte Probe VβVθ=(βTV)1YGamma(5,θ)β^β
Jon Claus

12

Ich habe die von Balajari (2013) beschriebene gamma.shape- Funktion des MASS- Pakets verwendet, um den Formparameter anschließend abzuschätzen und dann die Koeffizientenschätzungen und -vorhersagen im GLM anzupassen. Ich habe Ihnen geraten, die Vorlesung zu lesen, da sie meiner Meinung nach sehr klar und interessant in Bezug auf die Verwendung der Gammaverteilung in GLMs ist.

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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.