Використання R для GLM з розподілом Gamma


14

В даний час у мене є проблема з розумінням синтаксису R для встановлення GLM за допомогою дистрибутива Gamma.

У мене є набір даних, де кожен рядок містить 3 співперемінних ( X1,X2,X3 ), змінну відповіді ( Y ) та параметр фігури ( K ). Я хочу моделювати масштаб розподілу Гамми як лінійну функцію трьох коваріатів, але я не розумію, як встановити форму розподілу до K для кожного ряду даних.

Аналогічною є ситуація, що для розподілу біномів GLM вимагає, щоб кількість випробувань ( N ) було відомо для кожного введення даних.

Відповіді:


12

Звичайний гамма-GLM містить припущення, що параметр форми є постійним, так само, як звичайна лінійна модель передбачає постійну дисперсію.

Для мови GLM параметр дисперсії в Var ( Y i ) = ϕ V ( μ i ) нормально постійний.ϕ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)

той, кого ти хочеш.

ϕ^


1
ϕ=KKKβK

μMASS

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

1
Ви можете реалізувати все, що знаходиться поза R, що могло б бути реалізовано в ньому; Ви можете максимізувати ймовірність, наприклад, або можете використовувати оцінку на основі . Чи можете ви пояснити більш детально, що ви маєте на увазі під "неналежним" тут? ϕ^
Glen_b -Встановіть Моніку

1
Для тестування власного коду я створив набір даних із 10000 кортежів. Щоб створити його, я зафіксував , згенерований зразок , обчислив (параметр масштабу з функцією зворотного зв'язку ) і створив випадкову змінну з розподілу . Коли я запускаю R на наборі даних, його передбачуваний ніде не знаходиться . Коли я зробив це для інших дистрибутивів, передбачення R було майже точно правильним. βVθ=(βTV)1YGamma(5,θ)β^β
Джон Клаус

12

Я використовував gamma.shape функцію MASS пакета , як описано Баладжари (2013) для оцінки параметра форми після цього , а потім коригувати коефіцієнти оцінки і прогнози в 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.