GLM di R - yang pvalue mewakili kebaikan dari seluruh model?


10

Saya menjalankan glms di R (model linear umum). Saya pikir saya tahu nilai-nilai - sampai saya melihat bahwa memanggil ringkasan untuk GLM tidak memberi Anda perwakilan pvalue utama dari model secara keseluruhan - setidaknya tidak di tempat di mana model linear melakukannya.

Saya bertanya-tanya apakah ini diberikan sebagai nilai untuk Intercept, di bagian atas tabel koefisien. Jadi, dalam contoh berikut, sementara Wind.speed..knots dan canopy_density mungkin signifikan untuk model, bagaimana kita tahu apakah model itu sendiri signifikan? Bagaimana saya tahu apakah harus mempercayai nilai-nilai ini? Apakah saya benar bertanya-tanya bahwa Pr (> | z |) untuk (Intercept) mewakili signifikansi model? Apakah model ini signifikan? Terima kasih!

Saya harus mencatat menjalankan F-test tidak akan memberikan pvalue karena saya mendapatkan pesan kesalahan yang mengatakan bahwa menjalankan F-tes pada keluarga binomial tidak tepat.

Call:
glm(formula = Empetrum_bin ~ Wind.speed..knots. + canopy_density, 
    family = binomial, data = CAIRNGORM)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.2327  -0.7167  -0.4302  -0.1855   2.3194  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)  
(Intercept)          1.8226     1.2030   1.515   0.1298  
Wind.speed..knots.  -0.5791     0.2628  -2.203   0.0276 *
canopy_density      -2.5733     1.1346  -2.268   0.0233 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 59.598  on 58  degrees of freedom
Residual deviance: 50.611  on 56  degrees of freedom
  (1 observation deleted due to missingness)
AIC: 56.611

1
Jika saya ingat dengan benar dalam regresi binomial Anda harus menggunakan tes penyimpangan, alias tes Log Likelihood - yang analog dengan uji-F yang digunakan dalam regresi linier. Ini adalah -2 * (Null LL - Saturated LL) Yang cocok dengan distribusi chi-squared. Meskipun saya tidak dapat melihat kemungkinan log model dalam output ringkasan Anda. Apakah itu dalam objek model tetapi tidak dalam output ringkasan?
SamPassmore

Jawaban:


10

Anda bisa melakukan uji chi-square asimptotik (59.598-50.611) vs chi-square dengan (58-56) df, atau menggunakan anova()objek glm Anda (yang tidak melakukan tes secara langsung, tetapi setidaknya menghitung ( 59.598-50.611) dan (58-56) untuk Anda).

Ini adalah analisis penyimpangan yang efektif .

Inilah jenis perhitungan yang dapat Anda lakukan (pada kumpulan data yang berbeda, yang dilengkapi dengan R):

spray1=glm(count~spray,family=poisson,data=InsectSprays)  # full model
spray0=glm(count~1,family=poisson,data=InsectSprays)      # null model
with(anova(spray0,spray1),pchisq(Deviance,Df,lower.tail=FALSE)[2]) 

Yang memberikan nilai p untuk statik chi square asimptotik berdasarkan penyimpangan .

Atau Anda dapat menggunakan deviancedan df.residualfungsi untuk melakukan ini:

 pchisq(deviance(spray0)-deviance(spray1),
     df.residual(spray0)-df.residual(spray1),
    lower.tail=FALSE)

-

Banyak orang akan menggunakan perbandingan antara AIC model penuh dan nol (atau dalam beberapa kasus, mungkin perbandingan antara model yang menarik dan model jenuh) untuk mengetahui apakah model itu lebih baik daripada nol dalam arti itu.

-

Apakah saya benar bertanya-tanya bahwa Pr (> | z |) untuk (Intercept) mewakili signifikansi model?

Tidak. Memang, p-value intersep biasanya tidak menarik langsung.

Jika Anda mempertimbangkan model dengan parameter dispersi, saya telah melihat beberapa orang berdebat untuk melakukan uji-F bukan chi-square asimptotik; itu sesuai dengan orang yang menggunakan uji-t dan bukan az pada koefisien individu. Ini tidak mungkin menjadi perkiraan yang masuk akal dalam sampel kecil. Saya belum melihat derivasi atau simulasi yang akan menyarankan F selalu merupakan pendekatan yang cocok (yaitu lebih baik daripada hasil asimptotik) dalam kasus GLM secara umum. Seseorang mungkin ada, tetapi saya belum melihatnya.


2
Anda juga bisa lari Anova(fit, type = 2)dari carperpustakaan
Algoritma

3

Dengan asumsi bahwa Anda memodelkan dalam objek 'fit' Anda dapat menggunakan kode ini untuk melakukan tes log-kemungkinan pada model binomial Anda Seperti yang Anda catat, uji F tidak tepat, tetapi tes ini akan menguji jika model Anda diprediksi lebih baik daripada acak.

LLR = -2 * (fit$null.deviance - fit$deviance)

Ini adalah rumus untuk uji rasio Log-likelihood.

pchisq(LLR, 2, lower.tail = FALSE)

Dan ini akan memberi Anda nilai p. Meskipun saya tidak 100% yakin itu adalah df yang benar. Saya cukup yakin itu adalah perbedaan dalam jumlah parameter, yang Anda miliki 2 dalam model jenuh Anda dan tidak ada dalam model Null, ergo df = 3 - 1 = 2. Tapi itu mungkin sesuatu untuk ditindaklanjuti.


1

Seperti @SamPassmore sebutkan, Anda dapat menggunakan Analysis of Deviance (lihat misalnya car :: Anova () untuk sesuatu yang mirip-ish) untuk mendapatkan sesuatu yang kira-kira setara dengan uji- , tetapi dengan . Terkait dengan ini adalah tes rasio kemungkinan (perbandingan model Anda dengan model nol), tetapi tes ini hanya berkinerja baik asimptotik.Fχ2

Atau, Anda dapat melihat AIC, atau tindakan terkait seperti BIC.

Harap dicatat: Untuk jenis model ini, sulit untuk mendapatkan sesuatu seperti nilai p karena alasan yang sama sulit untuk mendefinisikan nilai bermakna, lihat misalnya "khotbah" ini oleh Doug Bates .R2

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.