warning
∞
Dengan data yang dihasilkan di sepanjang baris
x <- seq(-3, 3, by=0.1)
y <- x > 0
summary(glm(y ~ x, family=binomial))
Peringatan itu dibuat:
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
yang sangat jelas mencerminkan ketergantungan yang dibangun ke dalam data ini.
Di R tes Wald ditemukan dengan summary.glm
atau dengan waldtest
dalam lmtest
paket. Tes rasio kemungkinan dilakukan dengan anova
atau dengan lrtest
dalam lmtest
paket. Dalam kedua kasus tersebut, matriks informasi dihargai secara tidak terbatas, dan tidak ada kesimpulan yang tersedia. Sebaliknya, R memang menghasilkan output, tetapi Anda tidak bisa mempercayainya. Kesimpulan yang dihasilkan R dalam kasus-kasus ini memiliki nilai-p sangat dekat dengan satu. Ini karena kehilangan presisi dalam OR adalah urutan besarnya lebih kecil daripada hilangnya presisi dalam matriks varians-kovarians.
Beberapa solusi yang diuraikan di sini:
Gunakan penduga satu langkah,
Ada banyak teori yang mendukung bias, efisiensi, dan kemampuan generalisasi satu penduga satu langkah yang rendah. Mudah untuk menentukan penduga satu langkah dalam R dan hasilnya biasanya sangat menguntungkan untuk prediksi dan inferensi. Dan model ini tidak akan pernah menyimpang, karena iterator (Newton-Raphson) tidak memiliki kesempatan untuk melakukannya!
fit.1s <- glm(y ~ x, family=binomial, control=glm.control(maxit=1))
summary(fit.1s)
Memberi:
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.03987 0.29569 -0.135 0.893
x 1.19604 0.16794 7.122 1.07e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Sehingga Anda bisa melihat prediksi yang mencerminkan arah tren. Dan kesimpulannya sangat menunjukkan kecenderungan yang kami yakini benar.
melakukan tes skor,
The Score (atau Rao) statistik berbeda dari rasio kemungkinan dan wald statistik. Itu tidak memerlukan evaluasi varian di bawah hipotesis alternatif. Kami cocok dengan model di bawah nol:
mm <- model.matrix( ~ x)
fit0 <- glm(y ~ 1, family=binomial)
pred0 <- predict(fit0, type='response')
inf.null <- t(mm) %*% diag(binomial()$variance(mu=pred0)) %*% mm
sc.null <- t(mm) %*% c(y - pred0)
score.stat <- t(sc.null) %*% solve(inf.null) %*% sc.null ## compare to chisq
pchisq(score.stat, 1, lower.tail=F)
χ2
> pchisq(scstat, df=1, lower.tail=F)
[,1]
[1,] 1.343494e-11
Dalam kedua kasus Anda memiliki inferensi untuk OR tanpa batas.
, dan gunakan estimasi median yang tidak bias untuk interval kepercayaan.
Anda dapat menghasilkan median rata-rata, CI 95% non-singular untuk rasio odds tak terbatas dengan menggunakan estimasi median bias. Paket epitools
di R dapat melakukan ini. Dan saya memberikan contoh penerapan penaksir ini di sini: Interval kepercayaan untuk pengambilan sampel Bernoulli