Usando R para GLM com distribuição Gamma

13

Atualmente, tenho um problema ao entender a sintaxe do R para ajustar um GLM usando a distribuição Gamma.

Eu tenho um conjunto de dados, em que cada linha contém 3 co-variáveis ​​( X1,X2,X3 ), uma variável de resposta ( Y ) e um parâmetro de forma ( K ). Quero modelar a escala da distribuição Gamma como uma função linear das três covariáveis, mas não entendo como definir o formato da distribuição como K para cada linha de dados.

Uma situação que eu acho análoga é que, para uma distribuição binomial, o GLM exige que o número de tentativas ( N ) seja conhecido para cada entrada de dados.

Jon Claus
fonte

Respostas:

12

O GLM gama usual contém a suposição de que o parâmetro shape é constante, da mesma maneira que o modelo linear normal assume variação constante.

Em linguagem GLM o parâmetro de dispersão, em Var ( Y i ) = φ V ( μ i ) é normalmente constante.ϕVar(Yi)=ϕV(μi)

De maneira mais geral, você tem , mas isso não ajuda.a(ϕ)

Talvez seja possível usar um Gamma GLM ponderado para incorporar esse efeito de um parâmetro de forma especificado, mas ainda não investiguei essa possibilidade (se funcionar, provavelmente é a maneira mais fácil de fazer isso, mas não sou de todo Certifique-se de que sim).

Se você tivesse um GLM duplo, poderia estimar esse parâmetro em função de covariáveis ​​... e se o software double glm permitir especificar um deslocamento no termo de variação, você poderá fazer isso. Parece que a função dglmno pacote dglmpermite especificar um deslocamento. Não sei se permitirá especificar um modelo de variação como (digamos) ~ offset(<something>) + 0.

Outra alternativa seria maximizar a probabilidade diretamente.


> 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

A linha onde diz:

   (Dispersion parameter for Gamma family taken to be 0.1130783)

é o que você quer.

Que φ está relacionado com o parâmetro de forma da Gama.ϕ^

Glen_b -Reinstate Monica
fonte
1
ϕ=KKKβK
μMASS
glm(V4 ~ V3 + V2 + V1, family=Gamma)V1,V2,V3V4β
1
ϕ^
1
βVθ=(βTV)1YGamma(5,θ)β^β
Jon Claus
12

I utilizado o gamma.shape função de MASSA pacote como descrito por Balajari (2013) , a fim de estimar o parâmetro de forma mais tarde e, em seguida, ajustar coeficientes estimativas e previsões no GLM. Eu o aconselhei a ler a palestra, pois, na minha opinião, é muito clara e interessante sobre o uso da distribuição gama nos GLMs.

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)
Xochitl C.
fonte