Używanie R dla GLM z rozkładem gamma

14

Obecnie mam problem ze zrozumieniem składni R dla dopasowania GLM przy użyciu rozkładu gamma.

Mam zestaw danych, w którym każdy wiersz zawiera 3 współzmienne ( ), zmienną odpowiedzi ( ) i parametr kształtu ( ). Chcę modelować skalę rozkładu gamma jako funkcję liniową 3 zmiennych towarzyszących, ale nie rozumiem, jak ustawić kształt rozkładu na dla każdego wiersza danych. Y K KX1,X2,X3YKK

Sytuacja, która moim zdaniem jest analogiczna, polega na tym, że dla rozkładu dwumianowego GLM wymaga, aby liczba prób ( ) była znana dla każdego wprowadzania danych.N

Jon Claus
źródło

Odpowiedzi:

12

Zwykła wartość gamma GLM zawiera założenie, że parametr kształtu jest stały, podobnie jak normalny model liniowy zakłada stałą wariancję.

W mowie GLM parametr dyspersji, in jest zwykle stały.Var ( Y i ) = ϕ V ( μ i )ϕVar(Yi)=ϕV(μi)

Mówiąc bardziej ogólnie, masz , ale to nie pomaga.a(ϕ)

Być może byłoby możliwe użycie ważonej wartości Gamma GLM w celu włączenia tego efektu określonego parametru kształtu, ale nie zbadałem jeszcze tej możliwości (jeśli to działa, jest to prawdopodobnie najłatwiejszy sposób, ale nie jestem wcale pewnie, że tak będzie).

Jeśli miałeś podwójny GLM, możesz oszacować ten parametr jako funkcję zmiennych towarzyszących ... a jeśli oprogramowanie podwójnego GLM pozwala ci określić przesunięcie w warunku wariancji, możesz to zrobić. Wygląda na to, że funkcja dglmw pakiecie dglmpozwala określić przesunięcie. Nie wiem jednak, czy pozwoli ci to określić model wariancji taki jak (powiedzmy) ~ offset(<something>) + 0.

Inną alternatywą byłoby bezpośrednie zwiększenie prawdopodobieństwa.


> 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

Linia, w której jest napisane:

   (Dispersion parameter for Gamma family taken to be 0.1130783)

jest tym, którego chcesz.

Ten jest powiązany z parametrem kształtu gamma.ϕ^

Glen_b - Przywróć Monikę
źródło
1
Dzięki. Czy w R można określić, co to jest ? Z tego linku wydaje się, że nie muszę decydować o danym dopóki nie wydrukuję wyników. Czy mam rację twierdząc, że jeśli istnieje stała , to nie wpływa to na wynik dla , wektora współczynnika? Jeśli tak, to jak wybrać najlepszy aby dopasować dane ręcznie (bez użycia R)? K K β Kϕ=KKKβK
Jon Claus,
Jeżeli parametr Gamma ma ustalony parametr kształtu, nie wpływa on na oszacowanie , a zatem również na wektor współczynnika. Można obliczyć takie oszacowanie z wyjścia GLM, ale nie jest to maksimum prawdopodobieństwa. Gdybym chciał zidentyfikować parametr kształtu, użyłbym odpowiednich funkcji w pakiecie . Dlaczego tak ważne jest, aby unikać używania R i dlaczego miałbyś próbować to zrobić ręcznie zamiast korzystać z komputera? μMASS
Glen_b
Źle powiedziałem. Ręcznie, miałem na myśli, że chciałem przyzwoicie prostego algorytmu, który mógłbym zaimplementować poza R. Ponadto, kiedy próbuję przetestować glm(V4 ~ V3 + V2 + V1, family=Gamma), gdzie są predyktorami współzmiany, a jest odpowiedzią, to niepoprawnie określa , wektor współczynnika. Wiem, że to niepoprawnie to określa, ponieważ wygenerowałem przykładowe dane o znanych współczynnikach, aby określić skalę i stały kształt 5.V 4V1,V2,V3V4β
Jon Claus
1
Cóż, możesz zaimplementować wszystko poza R, które można zaimplementować w nim; możesz na przykład zmaksymalizować prawdopodobieństwo lub możesz użyć oszacowania opartego na . Czy możesz wyjaśnić bardziej szczegółowo, co rozumiesz przez „niewłaściwe”? ϕ^
Glen_b
1
W celu przetestowania własnego kodu wygenerowałem zestaw danych z 10 000 krotek. Aby go wygenerować, , wygenerowałem próbkę , oblicziłem (parametr skali z funkcją odwrotnego łącza ) i wygenerował losową zmienną z rozkładu . Kiedy uruchomię R na zestawie danych, jego przewidywany nie jest nigdzie w pobliżu . Kiedy zrobiłem to dla innych dystrybucji, przewidywanie R było prawie dokładnie prawidłowe. βVθ=(βTV)1YGamma(5,θ)β^β
Jon Claus,
12

I używana gamma.shape funkcję MASS opakowaniowy według Balajari (2013) w celu oszacowania parametrów kształtu później, a następnie dostosować współczynniki oszacowania i przewidywania w GLM. Radziłem przeczytać wykład, ponieważ moim zdaniem jest on bardzo jasny i interesujący w zakresie wykorzystania rozkładu gamma w 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)
Xochitl C.
źródło