Menggunakan R untuk GLM dengan distribusi Gamma

13

Saat ini saya memiliki masalah memahami sintaks untuk R untuk pemasangan GLM menggunakan distribusi Gamma.

Saya memiliki satu set data, di mana setiap baris berisi 3 co-variates ( ), variabel respon ( ), dan parameter bentuk ( ). Saya ingin memodelkan skala distribusi Gamma sebagai fungsi linier dari 3 kovariat, tetapi saya tidak mengerti cara mengatur bentuk distribusi ke untuk setiap baris data.X1,X2,X3YKK

Situasi yang saya pikir analog adalah bahwa untuk distribusi binomial, GLM mensyaratkan bahwa jumlah percobaan ( ) diketahui untuk setiap entri data.N

Jon Claus
sumber

Jawaban:

12

Gamma GLM yang biasa berisi asumsi bahwa parameter bentuk adalah konstan, dengan cara yang sama seperti model linear normal mengasumsikan varians konstan.

Dalam bahasa GLM parameter dispersi, di biasanya konstan.ϕVar(Yi)=ϕV(μi)

Secara umum, Anda memiliki , tetapi itu tidak membantu.a(ϕ)

Mungkin mungkin untuk menggunakan Gamma GLM tertimbang untuk menggabungkan efek ini dari parameter bentuk yang ditentukan, tetapi saya belum menyelidiki kemungkinan ini (jika berfungsi mungkin itu adalah cara termudah untuk melakukannya, tetapi saya tidak sama sekali yakin itu akan).

Jika Anda memiliki GLM ganda, Anda dapat memperkirakan parameter itu sebagai fungsi kovariat ... dan jika perangkat lunak glm ganda memungkinkan Anda menentukan offset dalam istilah varians Anda bisa melakukan ini. Sepertinya fungsi dglmdalam paket dglmmemungkinkan Anda menentukan offset. Saya tidak tahu apakah itu akan membiarkan Anda menentukan model varian seperti (katakanlah) ~ offset(<something>) + 0.

Alternatif lain adalah memaksimalkan kemungkinan secara langsung.


> 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

Baris di mana dikatakan:

   (Dispersion parameter for Gamma family taken to be 0.1130783)

adalah yang kamu inginkan.

Itu terkait dengan parameter bentuk Gamma.ϕ^

Glen_b -Reinstate Monica
sumber
1
Terima kasih. Di R, apakah ada cara untuk menentukan apa ? Dari tautan ini , sepertinya saya tidak harus memutuskan diberikan sampai saya mencetak hasilnya. Apakah saya benar mengatakan bahwa jika ada tetap , maka itu tidak mempengaruhi hasil untuk , vektor koefisien? Jika demikian, bagaimana cara saya memutuskan terbaik agar sesuai dengan data secara manual (tanpa menggunakan R)? ϕ=KKKβK
Jon Claus
Jika ada parameter bentuk tetap untuk Gamma, itu tidak mempengaruhi estimasi , dan karenanya juga bukan koefisien vektor. Anda dapat menghitung sebuah perkiraan dari output GLM, tapi tidak maksimal kemungkinan. Jika saya ingin mengidentifikasi parameter bentuk, saya akan menggunakan fungsi yang relevan dalam paket . Mengapa penting untuk menghindari menggunakan R, dan mengapa Anda mencoba melakukannya secara manual daripada menggunakan komputer? μMASS
Glen_b -Reinstate Monica
Saya salah bicara. Secara manual, saya maksudkan saya menginginkan algoritma sederhana yang sederhana yang dapat saya implementasikan sendiri di luar R. Juga, ketika saya mencoba pengujian glm(V4 ~ V3 + V2 + V1, family=Gamma), di mana adalah prediktor co-variates dan adalah jawabannya, ia menentukan , vektor koefisien. Saya tahu itu tidak tepat menentukannya karena saya menghasilkan data sampel dengan koefisien yang diketahui untuk menentukan skala dan bentuk konstan 5.V 4V1,V2,V3V4β
Jon Claus
1
Anda dapat mengimplementasikan apa pun di luar R yang dapat diimplementasikan di dalamnya; Anda dapat memaksimalkan kemungkinan, misalnya, atau Anda dapat menggunakan taksiran berdasarkan . Bisakah Anda menjelaskan secara lebih rinci apa yang Anda maksud dengan "tidak patut" di sini? ϕ^
Glen_b -Reinstate Monica
1
Untuk tujuan menguji kode saya sendiri, saya menghasilkan satu set data dengan 10.000 tupel. Untuk menghasilkannya, saya memperbaiki , membuat sampel , menghitung (parameter skala dengan fungsi tautan terbalik ), dan menghasilkan variabel acak dari distribusi . Ketika saya menjalankan R pada kumpulan data, prediksi tidak ada di dekat . Ketika saya melakukan ini untuk distribusi lain, prediksi R hampir tepat. βVθ=(βTV)1YGamma(5,θ)β^β
Jon Claus
12

Saya menggunakan fungsi gamma.shape dari paket MASS seperti yang dijelaskan oleh Balajari (2013) untuk memperkirakan parameter bentuk sesudahnya dan kemudian menyesuaikan estimasi koefisien dan prediksi dalam GLM. Saya menyarankan Anda untuk membaca kuliah karena, menurut pendapat saya, sangat jelas dan menarik tentang penggunaan distribusi gamma di 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.
sumber