Cara menghitung goodness of fit in glm (R)

21

Saya mendapatkan hasil berikut dari menjalankan fungsi glm.

Bagaimana saya bisa menginterpretasikan nilai-nilai berikut:

  • Penyimpangan null
  • Penyimpangan residual
  • AIC

Apakah mereka ada hubungannya dengan kebaikan fit? Bisakah saya menghitung beberapa goodness of fit dari hasil ini seperti R-square atau ukuran lainnya?

Call:
glm(formula = tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
    as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7)

Deviance Residuals: 
     Min        1Q    Median        3Q       Max  
-0.52628  -0.24781  -0.02916   0.25581   0.48509  

Coefficients:
                     Estimate Std. Error  t value Pr(>|t|)    
(Intercept         -1.305e-01  1.391e-01   -0.938   0.3482    
tmpData$X1         -9.999e-01  1.059e-03 -944.580   <2e-16 ***
tmpData$X2         -1.001e+00  1.104e-03 -906.787   <2e-16 ***
tmpData$X3         -5.500e-03  3.220e-03   -1.708   0.0877 .  
tmpData$X4         -1.825e-05  2.716e-05   -0.672   0.5017    
tmpData$X5          1.000e+00  5.904e-03  169.423   <2e-16 ***
tmpData$X6          1.002e+00  1.452e-03  690.211   <2e-16 ***
tmpData$X7          6.128e-04  3.035e-04    2.019   0.0436 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

(Dispersion parameter for gaussian family taken to be 0.08496843)

    Null deviance: 109217.71  on 3006  degrees of freedom
Residual deviance:    254.82  on 2999  degrees of freedom
  (4970 observations deleted due to missingness)
AIC: 1129.8

Number of Fisher Scoring iterations: 2
pelajar
sumber
Saya menyadari ini bermigrasi dari SO, di mana orang biasanya tidak mencari informasi tentang istilah statistik ini. Anda memiliki sumber yang bagus di sini! Misalnya, lihat apa yang dapat Anda pelajari dari pencarian pada beberapa istilah Anda, seperti AIC . Sedikit waktu yang dihabiskan untuk melakukan ini harus sepenuhnya menjawab pertanyaan Anda atau setidaknya memandu Anda untuk mengajukan pertanyaan yang lebih spesifik.
Whuber
Tidak terkait dengan gaussian glms, tetapi jika Anda memiliki bernoulli glm yang dipasangkan ke data biner, Anda tidak dapat menggunakan deviance residual untuk menilai kecocokan model, karena ternyata data dibatalkan dalam rumus penyimpangan. Sekarang, Anda dapat menggunakan perbedaan penyimpangan residual dalam kasus itu untuk membandingkan dua model, tetapi bukan penyimpangan residual itu sendiri.
Fisher

Jawaban:

15

glmR2glmR2R2

RGL.M.2=1-(sayadsaya,mHaidel2)2/N(sayadsaya,nkamull2)2/N        .=.        1-SSE/n[mHaidel]SST/n[tHaitSebuahl]=RHAIL.S2

Ada beberapa perdebatan tentang bagaimana ukuran pada LHS ditafsirkan, tetapi hanya ketika model berangkat dari situasi Gaussian / OLS yang lebih sederhana. Tetapi dalam GLMs di mana fungsi tautan mungkin bukan "identitas", seperti di sini, dan "kesalahan kuadrat" mungkin tidak memiliki interpretasi yang jelas sama, sehingga Kriteria Informasi Akaike juga dilaporkan karena tampaknya lebih umum. Ada beberapa pesaing lain dalam undian GLM GOF tanpa pemenang yang jelas.

R2

DWIN
sumber
7
Di mana tepatnya "Nagelkerke-pseudo-" R2 "" di output di atas?
Tom
1
Saya menggemakan pertanyaan Tom. Di mana dalam output adalah Nagelkerke-pseudo- "R2", atau bagaimana cara menemukannya? Saya tidak mencari informasi lebih lanjut tentang nilai, tetapi di mana saya dapat menemukannya di output R. Tidak ada dalam contoh output pertanyaan yang terlihat bagi saya seperti nilai goodness of fit dalam kisaran [0-1], jadi saya bingung.
Kevin - Reinstate Monica
Lihat stats.stackexchange.com/questions/8511/… dan stackoverflow.com/questions/6242818/ ... ... Saya tidak melihat R ^ 2 di objek glm atau output ringkasan. Saya mungkin telah memikirkan output yang biasa dari fungsi ringkasan rms, karena itu adalah lingkungan pemodelan favorit saya.
DWin
9

Gunakan Null Deviance dan Residual Deviance, khususnya:

1 - (Residual Deviance/Null Deviance)

Jika Anda memikirkannya, Anda mencoba mengukur rasio penyimpangan dalam model Anda ke nol; seberapa baik model Anda (residual deviance) daripada hanya intersep (null deviance). Jika rasio itu kecil, Anda 'menjelaskan' sebagian besar penyimpangan dalam nol; 1 minus yang memberi Anda R-kuadrat.

Dalam contoh Anda, Anda akan mendapatkan 0,998.

Jika Anda hanya memanggil model linier (lm) alih-alih glm itu akan secara eksplisit memberi Anda R-kuadrat dalam ringkasan dan Anda dapat melihat itu nomor yang sama.

noLongerRandom
sumber
5

Jika Anda menjalankan model logistik biner, Anda juga dapat menjalankan tes Hosmer Lemeshow Goodness of Fit pada model glm () Anda. Menggunakan perpustakaan ResourceSelection.

library(ResourceSelection)

model <- glm(tmpData$Y ~ tmpData$X1 + tmpData$X2 + tmpData$X3 + 
           as.numeric(tmpData$X4) + tmpData$X5 + tmpData$X6 + tmpData$X7, family = binomial)

summary(model)
hoslem.test(model$y, model$fitted)
dylanjm
sumber
Meskipun perlu dicatat bahwa ini hanya berfungsi untuk model variabel dependen biner (mis. Jika OP telah menetapkan family = "binomial. Contoh OP adalah regresi linier.
Matius
@ Matius Ini benar, saya minta maaf saya melewatkan itu. Saya telah menggunakan regresi logistik biner begitu banyak belakangan ini otak saya hanya pergi kehoslem.test()
dylanjm
Dapat dimengerti :) Saya menyarankan edit untuk posting Anda tetapi lupa untuk memperbarui kode R juga. Anda mungkin ingin mengubahnya hanya demi kejelasan.
Matius