Gama dağılımı ile GLM için R kullanma


14

Şu anda Gamma dağıtımını kullanarak bir GLM takmak için R sözdizimini anlamakta bir sorunum var.

Her satır 3 ortak değişken ( X1,X2,X3 ), bir yanıt değişkeni ( Y ) ve bir şekil parametresi ( K ) içeren bir veri kümesi var . Gamma dağılımının ölçeğini 3 değişkenin doğrusal bir fonksiyonu olarak modellemek istiyorum, ancak her veri satırı için dağılımın şeklini nasıl ayarlayacağımı anlamıyorum K.

Benzer olduğunu düşündüğüm bir durum, binom dağılımı için GLM'nin her veri girişi için deneme sayısının ( N ) bilinmesini gerektirmesidir .

Yanıtlar:


12

Her zamanki gama GLM, normal doğrusal modelin sabit varyans varsaydığı gibi, şekil parametresinin sabit olduğu varsayımını içerir.

GLM dilinde dispersiyon parametresi, ϕ içinde Var(Yi)=ϕV(μi) normal olarak sabittir.

Daha genel olarak, a(ϕ) , ama bu yardımcı olmuyor.

Belli bir şekil parametresinin bu etkisini dahil etmek için ağırlıklı bir Gamma GLM kullanmak mümkün olabilir, ancak bu olasılığı henüz araştırmadım (eğer işe yararsa muhtemelen bunu yapmanın en kolay yolu budur, ama hiç de değilim) emin olun).

Bir çift ​​GLM'niz varsa, bu parametreyi ortak değişkenlerin bir fonksiyonu olarak tahmin edebilirsiniz ... ve çift glm yazılımı varyans teriminde bir ofset belirtmenize izin veriyorsa bunu yapabilirsiniz. Görünüşe göre dglmpaketteki fonksiyon dglmbir ofset belirlemenize izin veriyor. ~ offset(<something>) + 0Yine de (örneğin) gibi bir varyans modeli belirtmenize izin verip vermeyeceğimi bilmiyorum .

Başka bir alternatif, olasılığı doğrudan en üst düzeye çıkarmak olacaktır.


> 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

Dediği satır:

   (Dispersion parameter for Gamma family taken to be 0.1130783)

istediğin o.

ϕ^


1
ϕ=KKKβK

μMASS

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

1
R'nin dışında uygulanabilecek her şeyi uygulayabilirsiniz; örneğin, olasılığı en üst düzeye çıkarabilir veya temelli tahmini kullanabilirsiniz . Burada "uygunsuz" ile ne demek istediğinizi daha ayrıntılı olarak açıklayabilir misiniz? ϕ^
Glen_b-Monica'yı

1
Kendi kodumu test etmek için 10.000 tuple içeren bir veri kümesi oluşturdum. Bunu oluşturmak için, , oluşturulan örnek , (ters bağlantı işlevine sahip ölçek parametresi) ) ve dağıtımından rastgele bir değişken oluşturdu . Veri kümesinde R'yi çalıştırdığımda, tahmini hiçbir yerde yakınında değil . Bunu diğer dağılımlar için yaptığımda, R'nin tahmini neredeyse tam olarak doğru oldu. V θ = ( β T V ) - 1 , Y ~ Gama ( 5 , θ ) β ββVθ=(βTV)1YGamma(5,θ)β^β
Jon Claus

12

Daha sonra şekil parametresini tahmin etmek ve daha sonra GLM'deki katsayı tahminlerini ve tahminlerini ayarlamak için MASS paketinin Balajari (2013) tarafından tarif edildiği gibi gamma.shape işlevini kullandım . Konferansı olduğu gibi okumanızı tavsiye ettim, bence, GLM'lerde gama dağılımının kullanımı konusunda çok açık ve ilginç.

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.