Tulisan Christopher Manning pada regresi logistik di R menunjukkan regresi logistik di R sebagai berikut:
ced.logr <- glm(ced.del ~ cat + follows + factor(class),
family=binomial)
Beberapa output:
> summary(ced.logr)
Call:
glm(formula = ced.del ~ cat + follows + factor(class),
family = binomial("logit"))
Deviance Residuals:
Min 1Q Median 3Q Max
-3.24384 -1.34325 0.04954 1.01488 6.40094
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.31827 0.12221 -10.787 < 2e-16
catd -0.16931 0.10032 -1.688 0.091459
catm 0.17858 0.08952 1.995 0.046053
catn 0.66672 0.09651 6.908 4.91e-12
catv -0.76754 0.21844 -3.514 0.000442
followsP 0.95255 0.07400 12.872 < 2e-16
followsV 0.53408 0.05660 9.436 < 2e-16
factor(class)2 1.27045 0.10320 12.310 < 2e-16
factor(class)3 1.04805 0.10355 10.122 < 2e-16
factor(class)4 1.37425 0.10155 13.532 < 2e-16
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 958.66 on 51 degrees of freedom
Residual deviance: 198.63 on 42 degrees of freedom
AIC: 446.10
Number of Fisher Scoring iterations: 4
Dia kemudian masuk ke beberapa detail tentang bagaimana menafsirkan koefisien, membandingkan model yang berbeda, dan sebagainya. Cukup berguna.
Namun, berapa banyak varian yang diperhitungkan oleh model? Sebuah halaman Stata pada regresi logistik mengatakan:
Secara teknis, tidak dapat dihitung dengan cara yang sama dalam regresi logistik seperti di regresi OLS. Pseudo- , dalam regresi logistik, didefinisikan sebagai , di mana mewakili kemungkinan log untuk model "hanya-konstan" dan adalah kemungkinan log untuk model penuh dengan konstan dan prediktor. 1 - L 1 L0L1
Saya mengerti ini di level tinggi. Model hanya-konstan akan tanpa parameter (hanya istilah intersep). Log likelihood adalah ukuran seberapa dekat parameter tersebut sesuai dengan data. Bahkan, Manning semacam petunjuk bahwa penyimpangan yang mungkin . Mungkin penyimpangan nol hanya konstan dan penyimpangan residual adalah dari model? Namun, saya tidak sejelas itu.- 2 log L
Dapatkah seseorang memverifikasi bagaimana seseorang benar-benar menghitung pseudo- dalam R menggunakan contoh ini?
sumber
Jawaban:
Jangan lupa paket rms , oleh Frank Harrell. Anda akan menemukan semua yang Anda butuhkan untuk pemasangan dan validasi GLM.
Berikut adalah contoh mainan (dengan hanya satu prediktor):
Ini menghasilkan:
Sekarang, menggunakan
lrm
fungsinya,Anda segera mendapatkan banyak indeks kesesuaian model, termasuk Nagelkerke , dengan :R2
print(mod1b)
Di sini,R2=0.445 dan dihitung sebagai (1−exp(−LR/n))/(1−exp(−(−2L0)/n)) , di mana LR adalah stat χ2 (membandingkan dua model bersarang yang Anda uraikan), sedangkan penyebutnya hanya nilai maks untuk . Untuk model yang sempurna, kita harapkanR2 LR=2L0 R2=1
Dengan tangan,
sumber
sumber
pR2 = 1 - mod$deviance / mod$null.deviance # works for glm
Gunakan fungsi "logLik" dalam R dan definisi (juga berfungsi untuk sampel)
mod_null <- glm(y~1, family = binomial, data = insample) 1- logLik(mod)/logLik(mod_null)
Contoh:
out-of-sample pseudo-R
Kode:
pred.out.link <- predict(mod, outSample, type = "link") mod.out.null <- gam(Default~1, family = binomial, data = outSample) pR2.out <- 1 - sum(outSample$y * pred.out.link - log(1 + exp(pred.out.link))) / logLik(mod.out.null)
sumber
model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp, data = esoph, family = binomial)
model1$deviance
-2*logLik(model1)
jika penyimpangan proporsional dengan kemungkinan log, dan seseorang menggunakan definisi (lihat misalnya McFadden di sini )
Pertanyaannya adalah: apakah penyimpangan dilaporkan sebanding dengan kemungkinan log?
sumber
sumber