Formula kuadrat Pseudo R untuk GLM

Jawaban:

22

Ada sejumlah besar pseudo- s untuk GLiMs. Situs bantuan statistik UCLA yang sangat baik memiliki tinjauan umum yang komprehensif di sini . Yang Anda daftarkan disebut pseudo- McFadden . Relatif dengan tipologi UCLA, itu seperti dalam arti bahwa indeks peningkatan model yang dipasang di atas model nol. Beberapa perangkat lunak statistik, terutama SPSS, jika saya ingat dengan benar, mencetak pseudo- McFadden secara default dengan hasil dari beberapa analisis seperti regresi logistik, jadi saya menduga ini cukup umum, meskipun Cox & Snell dan Nagelkerke pseudo- s mungkin lebih dari itu. Namun, pseudo- McFadden tidak memiliki semua propertiR2R2R2R2R2R2R2 (tidak ada pseudo- tidak). Jika seseorang tertarik menggunakan pseudo- untuk memahami suatu model, saya sangat merekomendasikan membaca thread CV yang luar biasa ini: Ukuran pseudo- manakah yang harus dilaporkan untuk regresi logistik (Cox & Snell atau Nagelkerke)? (Untuk apa nilainya, itu sendiri lebih licin daripada yang disadari orang, sebuah demonstrasi besar yang dapat dilihat pada jawaban @ whuber di sini: Apakah bermanfaat atau berbahaya? ) R 2 R 2 R 2 R 2R2R2R2R2R2

gung - Reinstate Monica
sumber
Saya ingin tahu apakah semua pseudo-R2 ini telah dirancang khusus untuk regresi logistik saja? Atau apakah mereka menggeneralisasi juga untuk poisson dan gamma-glms? Saya menemukan formula R2 yang berbeda untuk setiap kemungkinan GLM diColin Cameron, A., & Windmeijer, F. A. (1997). An R-squared measure of goodness of fit for some common nonlinear regression models. Journal of Econometrics, 77(2), 329-342.
Jens
@Jens, beberapa dari mereka tentu tampak spesifik LR, tetapi yang lain menggunakan penyimpangan, yang bisa Anda dapatkan dari GLiM apa pun.
gung - Reinstate Monica
1
Perhatikan bahwa McFadden sering didefinisikan dalam hal log-likelihood, yang hanya didefinisikan hingga konstanta aditif, dan bukan penyimpangan seperti pada pertanyaan OP. Tanpa spesifikasi konstanta aditif, R 2 McFadden tidak didefinisikan dengan baik. Penyimpangan adalah salah satu pilihan unik dari konstanta aditif, yang menurut saya adalah pilihan yang paling tepat, jika generalisasi harus sebanding dengan R 2 dari model linier. R2R2R2
NRH
Mengingat bahwa GLM cocok menggunakan kuadrat terkecil yang berulang secara berulang, seperti dalam bwlewis.github.io/GLM , apa yang sebenarnya menjadi keberatan untuk menghitung R2 tertimbang pada skala tautan GLM, menggunakan bobot 1 / varians sebagai bobot (yang mana akan dikembalikan dalam slot, bobot cocok GLM)?
Tom Wenseleers
@ TomWenseleers, Anda dapat melakukan yang Anda suka, tetapi argumen dasar ada di "Yang pseudo- ... untuk melaporkan ..." utas yang saya tautkan, terutama jawaban probabilityislogic . R2
gung - Reinstate Monica
9

R memberikan null dan sisa penyimpangan dalam output glmsehingga Anda dapat membuat perbandingan semacam ini (lihat dua baris terakhir di bawah).

> x = log(1:10)

> y = 1:10

> glm(y ~ x, family = poisson)

>Call:  glm(formula = y ~ x, family = poisson)

Coefficients:
(Intercept)            x  
  5.564e-13    1.000e+00  

Degrees of Freedom: 9 Total (i.e. Null);  8 Residual
Null Deviance:      16.64 
Residual Deviance: 2.887e-15    AIC: 37.97

Anda juga dapat menarik nilai-nilai ini dari objek dengan model$null.deviancedanmodel$deviance

David J. Harris
sumber
Ah, baiklah. Saya hanya menjawab pertanyaan seperti yang tertulis. Saya akan menambahkan lebih banyak, tapi saya tidak 100% yakin bagaimana penyimpangan nol dihitung sendiri (itu ada hubungannya dengan kemungkinan log model jenuh, tapi saya tidak ingat cukup detail tentang saturasi untuk percaya diri bahwa saya bisa memberikan intuisi yang baik)
David J. Harris
Saya tidak memilikinya di output glm (posisi keluarga atau quasipoisson).
Penasaran
@ Thomas melihat hasil edit saya. Saya tidak tahu apakah saya salah 2 tahun yang lalu atau apakah output default telah berubah sejak saat itu.
David J. Harris
summary.glmR2
1
Baca pertanyaannya. Apakah Anda pikir Anda menjawabnya? Pertanyaannya bukan "di mana saya bisa mendapatkan komponen formula?".
Penasaran
6

Rumus yang Anda usulkan telah diusulkan oleh Maddala (1983) dan Magee (1990) untuk memperkirakan R kuadrat pada model logistik. Karena itu saya tidak berpikir itu berlaku untuk semua model glm (lihat buku Metode Regresi Modern oleh Thomas P. Ryan di halaman 266).

Jika Anda membuat kumpulan data palsu, Anda akan melihat bahwa itu meremehkan R kuadrat ... untuk gaussian glm sebagai contoh.

Saya pikir untuk gaussian glm Anda dapat menggunakan rumus kuadrat dasar (lm) ...

R2gauss<- function(y,model){
    moy<-mean(y)
    N<- length(y)
    p<-length(model$coefficients)-1
    SSres<- sum((y-predict(model))^2)
    SStot<-sum((y-moy)^2)
    R2<-1-(SSres/SStot)
    Rajust<-1-(((1-R2)*(N-1))/(N-p-1))
    return(data.frame(R2,Rajust,SSres,SStot))
}

Dan untuk logistik (atau keluarga binomial dalam r) saya akan menggunakan rumus yang Anda usulkan ...

    R2logit<- function(y,model){
    R2<- 1-(model$deviance/model$null.deviance)
    return(R2)
    }

Sejauh ini untuk poisson glm saya telah menggunakan persamaan dari posting ini.

https://stackoverflow.com/questions/23067475/how-do-i-obtain-pseudo-r2-measures-in-stata-when-using-glm-regress

Ada juga artikel bagus tentang pseudo R2 yang tersedia di gerbang penelitian ... di sini adalah tautannya:

https://www.researchgate.net/publication/222802021_Pseudo_R-squared_measures_for_Poisson_regress_models_with_over-_or_underdispersion

Saya harap ini membantu.

Nico Coallier
sumber
Cukup paskan model GLM dengan keluarga = gaussian (tautan = identitas) dan periksa nilainya 1-summary(GLM)$deviance/summary(GLM)$null.deviancedan Anda akan melihat bahwa R2 tidak cocok dengan nilai R2 dari regresi OLS biasa, sehingga jawaban di atas benar! Lihat juga posting saya di sini - stats.stackexchange.com/questions/412580/…
Tom Wenseleers
3

Paket R modEvAmenghitung D-Squared sebagai 1 - (mod$deviance/mod$null.deviance)seperti yang disebutkan oleh David J. Harris

set.seed(1)
data <- data.frame(y=rpois(n=10, lambda=exp(1 + 0.2 * x)), x=runif(n=10, min=0, max=1.5))

mod <- glm(y~x,data,family = poisson)

1- (mod$deviance/mod$null.deviance)
[1] 0.01133757
library(modEvA);modEvA::Dsquared(mod)
[1] 0.01133757

D-Squared atau menjelaskan Penyimpangan model diperkenalkan pada (Guisan & Zimmermann 2000) https://doi.org/10.1016/S0304-3800(00)00354-9

pengguna2673238
sumber