Uji rasio kemungkinan (alias penyimpangan) dan uji ketidakcocokan (atau good-of-fit) cukup mudah untuk mendapatkan model regresi logistik (cocok menggunakan glm(..., family = binomial)
fungsi) dalam R. Namun, bisa mudah untuk memiliki jumlah sel berakhir cukup rendah sehingga tes tidak dapat diandalkan. Salah satu cara untuk memverifikasi keandalan uji rasio kemungkinan untuk kurangnya kesesuaian adalah dengan membandingkan statistik uji dan nilai- P dengan yang ada pada uji chi square Pearson (atau ).
Baik glm
objek maupun summary()
metodenya melaporkan statistik uji untuk uji chi square Pearson karena kurang fit. Dalam pencarian saya, satu-satunya hal yang saya temukan adalah chisq.test()
fungsi (dalam stats
paket): dokumentasinya mengatakan " chisq.test
melakukan tes tabel kontingensi chi-squared dan tes good-of-fit." Namun, jarang ada dokumentasi tentang cara melakukan tes tersebut:
Jika
x
merupakan matriks dengan satu baris atau kolom, atau jikax
merupakan vektor dany
tidak diberikan, maka dilakukan uji good-of-fit (x
diperlakukan sebagai tabel kontingensi satu dimensi). Entri darix
harus bilangan bulat non-negatif. Dalam hal ini, hipotesis yang diuji adalah apakah probabilitas populasi sama denganp
, atau semuanya sama jikap
tidak diberikan.
Saya akan membayangkan bahwa Anda dapat menggunakan y
komponen glm
objek untuk x
argumen chisq.test
. Namun, Anda tidak dapat menggunakan fitted.values
komponen glm
objek untuk p
argumen chisq.test
, karena Anda akan mendapatkan kesalahan: " probabilities must sum to 1.
"
sumber
Statistik Pearson memiliki distribusi berdegenerasi sehingga tidak direkomendasikan secara umum untuk model logistik yang baik. Saya lebih suka tes terstruktur (linearitas, aditivitas). Jika Anda menginginkan tes omnibus, lihat satu derajat kebebasan le Cessie - van Houwelingen - Copas - Hosmer jumlah uji kuadrat tertimbang sebagaimana diterapkan dalam fungsi
rms
paket R.residuals.lrm
sumber
ResourceSelection
paket, dan hasilnya berbeda dari apa yang saya dapatkan dari menjalankanresid(lrm_object, 'gof')
setelah memasang model regresi logistik saya sebagailrm_object <- lrm(...)
. Jika mereka memang berbeda, dapatkah Anda mengomentari bagaimana tes HL menumpuk terhadap yang Anda sebutkan di sini? Terima kasih!Terima kasih, saya tidak menyadari bahwa itu sesederhana: jumlah (residual (f1, type = "pearson") ^ 2) Namun harap dicatat bahwa residu Pearsons bervariasi tergantung pada apakah itu dihitung oleh kelompok kovariat atau oleh individu. Contoh sederhana:
m1 adalah sebuah matriks (ini adalah kepala dari matriks yang lebih besar):
Di mana x1-3 adalah prediktor, obs tidak. pengamatan di setiap kelompok, pi adalah probabilitas keanggotaan kelompok (diprediksi dari persamaan regresi), lev adalah leverage, diagonal dari matriks topi, apa yang diprediksi tidak. (dari y = 1) dalam grup dan y, bukan yang sebenarnya.
Ini akan memberi Anda Pearson berdasarkan kelompok. Catat perbedaannya jika y == 0: ' 'fun1 <- function(j){
if (m1[j,"y"] ==0){ # y=0 for this covariate pattern
Pr1 <- sqrt( m1[i,"pi"] / (1-m1[i,"pi"]))
Pr2 <- -sqrt (m1[i,"obs"])
res <- round( Pr1 * Pr2, 3)
return(res)
} else {
Pr1 <- m1[j,"y"] - m1[j,"yhat"]
Pr2 <- sqrt( m1[j,"yhat"] * ( 1-(m1[j,"pi"]) ) )
res <- round( Pr1/Pr2, 3)
return(res)
}
}
Jadi
Jika ada sejumlah besar subjek dengan pola kovariat y = 0, maka residu Pearons akan jauh lebih besar bila dihitung menggunakan metode 'berdasarkan kelompok' daripada metode 'menurut indiviual'.
Lihat misalnya Hosmer & Lemeshow "Regresi Logistik Terapan", Wiley, 200.
sumber
Anda juga dapat menggunakan
c_hat(mod)
yang akan memberikan output yang sama dengansum(residuals(mod, type = "pearson")^2)
.sumber
c_hat
ditemukan?