Cara menghitung r-kuadrat untuk glm di r
Seringkali ketika kita menyesuaikan model regresi linier, kita menggunakan R-kuadrat untuk mengevaluasi seberapa cocok suatu model dengan data.
R squared mewakili proporsi varians variabel respon yang dapat dijelaskan oleh variabel prediktor dalam model regresi.
Angka ini berkisar dari 0 hingga 1, dengan nilai yang lebih tinggi menunjukkan kesesuaian model yang lebih baik.
Namun, tidak ada nilai R-kuadrat untuk model linier umum seperti model regresi logistik dan model regresi Poisson .
Sebagai gantinya, kita dapat menghitung metrik yang dikenal sebagai McFadden’s R-Squared , yang berkisar dari 0 hingga sedikit di bawah 1, dengan nilai yang lebih tinggi menunjukkan kesesuaian model yang lebih baik.
Kami menggunakan rumus berikut untuk menghitung R kuadrat McFadden:
R-Squared McFadden = 1 – ( model kemungkinan log / kemungkinan log nol )
Emas:
- model kemungkinan log : nilai kemungkinan log dari model yang dipasang saat ini
- kemungkinan log nol : nilai kemungkinan log dari model nol (model dengan intersep saja)
Dalam praktiknya, nilai di atas 0,40 menunjukkan bahwa suatu model sangat cocok dengan data.
Contoh berikut menunjukkan cara menghitung R-kuadrat McFadden untuk model regresi logistik di R.
Contoh: Menghitung McFadden’s R-squared di R
Untuk contoh ini, kita akan menggunakan dataset default dari paket ISLR. Kita dapat menggunakan kode berikut untuk memuat dan menampilkan ringkasan kumpulan data:
#install and load ISLR package install. packages (' ISLR ') library (ISLR) #define dataset data <- ISLR::Default #view summary of dataset summary(data) default student balance income No:9667 No:7056 Min. : 0.0 Min. : 772 Yes: 333 Yes:2944 1st Qu.: 481.7 1st Qu.:21340 Median: 823.6 Median: 34553 Mean: 835.4 Mean: 33517 3rd Qu.:1166.3 3rd Qu.:43808 Max. :2654.3 Max. :73554 #find total observations in dataset nrow(data) [1] 10000
Kumpulan data ini berisi informasi berikut tentang 10.000 individu:
- default: menunjukkan apakah seseorang mengalami default atau tidak.
- pelajar: menunjukkan apakah seseorang adalah pelajar atau bukan.
- saldo: Saldo rata-rata yang dibawa oleh seorang individu.
- pendapatan: Pendapatan individu.
Kami akan menggunakan status pelajar, saldo bank, dan pendapatan untuk membangun model regresi logistik yang memprediksi kemungkinan seseorang akan gagal bayar:
#fit logistic regression model model <- glm(default~student+balance+income, family=' binomial ', data=data) #view model summary summary(model) Call: glm(formula = default ~ balance + student + income, family = "binomial", data = data) Deviance Residuals: Min 1Q Median 3Q Max -2.4691 -0.1418 -0.0557 -0.0203 3.7383 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -1.087e+01 4.923e-01 -22.080 < 2e-16 *** balance 5.737e-03 2.319e-04 24.738 < 2e-16 *** studentYes -6.468e-01 2.363e-01 -2.738 0.00619 ** income 3.033e-06 8.203e-06 0.370 0.71152 --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 2920.6 on 9999 degrees of freedom Residual deviance: 1571.5 on 9996 degrees of freedom AIC: 1579.5 Number of Fisher Scoring iterations: 8
Selanjutnya, kita akan menggunakan rumus berikut untuk menghitung nilai R-kuadrat McFadden untuk model ini:
#calculate McFadden's R-squared for model with(summary(model), 1 - deviance/null. deviance ) [1] 0.4619194
Nilai R-kuadrat McFadden ternyata 0,4619194 . Nilai ini cukup tinggi, menunjukkan bahwa model kami cocok dengan data dan memiliki daya prediksi yang tinggi.
Perhatikan juga bahwa kita juga dapat menggunakan fungsi pR2() dari paket pscl untuk menghitung nilai McFadden R-squared untuk model:
#install and load pscl package install. packages (' pscl ') library (pscl) #calculate McFadden's R-squared for model pR2(model)[' McFadden '] McFadden 0.4619194
Perhatikan bahwa nilai ini sesuai dengan nilai yang dihitung sebelumnya.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan tugas umum lainnya di R:
Cara menghitung R-kuadrat di R
Cara menghitung R-kuadrat yang disesuaikan di R
Berapa nilai R-kuadrat yang bagus?