Saya mencoba untuk memprediksi hasil biner menggunakan 50 variabel penjelas kontinu (kisaran sebagian besar variabel adalah hingga ∞ ). Kumpulan data saya memiliki hampir 24.000 baris. Ketika saya menjalankan di R, saya mendapatkan:glm
Warning messages:
1: glm.fit: algorithm did not converge
2: glm.fit: fitted probabilities numerically 0 or 1 occurred
Saya telah membaca tanggapan lain yang menunjukkan pemisahan sempurna mungkin terjadi, tetapi saya yakin itu tidak terjadi dalam data saya (meskipun pemisahan semu-lengkap bisa ada; bagaimana saya bisa menguji untuk melihat apakah itu yang terjadi?) . Jika saya menghapus beberapa variabel, kesalahan "tidak konvergen" mungkin hilang. Tapi itu tidak selalu terjadi.
Saya mencoba menggunakan variabel yang sama dalam suatu bayesglm
fungsi dan mendapat kesalahan yang sama.
Langkah apa yang akan Anda ambil untuk mencari tahu apa yang sebenarnya terjadi di sini? Bagaimana Anda mengetahui variabel mana yang menyebabkan masalah?
sumber
bayesglm
kertas , mereka berpendapat pemisahan yang "masalah umum, bahkan ketika ukuran sampel besar dan jumlah prediktor kecil"bayesglm
mencoba menghindari pemisahan dengan menambahkan prior, tetapi dengan 24.000 baris, prior mungkin dibanjiri oleh kemungkinan. Coba menyusutprior.scale
, mungkin dengan jumlah besar. Juga pertimbangkan untuk meningkatkan derajat kebebasan prior, yang akan membantu menyingkirkan nilai-nilai besar yang terkait dengan pemisahan.Jawaban:
Anda dapat dengan mudah menguji apakah kelas Anda dipisahkan dengan sempurna di ruang desain Anda. Ini intinya untuk memecahkan masalah pemrograman linier. Implementasi R dari 'tes' ini (bukan tes dalam arti statistik dari istilah ini) diimplementasikan dalam paket safeBinaryRegression .
Jika ternyata pemisahan itu memang masalah, dan jika Anda hanya tertarik pada penggunaan vanila polos glm (misalnya glm tidak dipanggil oleh fungsi tingkat yang lebih tinggi tetapi oleh Anda), maka ada implementasi R dari suatu algoritma yang sedikit memodifikasi yang klasik untuk membuatnya 'kuat' terhadap pemisahan. Ini diimplementasikan dalam paket hlr
sumber