Fungsi biaya untuk memvalidasi model regresi Poisson

11

Untuk menghitung data yang telah saya kumpulkan, saya menggunakan regresi Poisson untuk membangun model. Saya melakukan ini menggunakan glmfungsi di R, di mana saya menggunakan family = "poisson". Untuk mengevaluasi kemungkinan model (saya punya beberapa prediktor) saya menggunakan AIC. Sejauh ini bagus. Sekarang saya ingin melakukan validasi silang. Saya sudah berhasil melakukan ini menggunakan cv.glmfungsi dari bootpaket. Dari dokumentasi dari cv.glmsaya melihat bahwa misalnya untuk data binomial Anda perlu menggunakan fungsi biaya tertentu untuk mendapatkan kesalahan prediksi yang bermakna. Namun, saya belum tahu apa fungsi biaya yang sesuai family = poisson, dan pencarian Google yang luas tidak menghasilkan hasil yang spesifik. Pertanyaan saya adalah siapa pun memiliki cahaya untuk menjelaskan fungsi biaya yang sesuai untuk cv.glmdalam kasus poisson glm.

Paul Hiemstra
sumber
1
Fungsi cv.glmnetdalam paket glmnetmenggunakan type.measure="deviance"untuk keluarga Poisson.
rcs
Secara ketat, dokumentasi menunjukkan bahwa masuk akal untuk menggunakan fungsi biaya spesifik untuk data biner.
Corone
@corone bukan merupakan data kontinu, atau data biner. Jadi saya mencari fungsi biaya yang sesuai untuk menghitung data.
Paul Hiemstra
1
Saya tidak berpikir perbedaan data membuat perbedaan besar di sini, kecuali jika jumlah Anda sangat kecil. Masalahnya bukan tentang distribusi data. Untuk data biner, prediksi adalah probabilitas berkesinambungan antara 0 dan 1, tetapi responsnya selalu 0 atau 1. Dalam contohnya, paksaan biaya menjadi "benar" atau "salah" dan menghitung jumlah hak dan kesalahan. Apakah Anda khawatir tentang kontinuitas? Saya akan menambahkan PS ke jawaban saya untuk mengatasi kontinuitas
Corone

Jawaban:

12

Dengan asumsi tidak ada yang istimewa dalam kasus khusus Anda, saya pikir ada argumen yang baik untuk menggunakan default (Mean Square Error) atau menggunakan rata-rata kesalahan log, atau bahkan kesalahan chi-squared.

Tujuan dari fungsi biaya adalah untuk menyatakan betapa "kesal" Anda terhadap prediksi yang salah, khususnya apa yang "paling salah" paling mengganggu Anda. Ini sangat penting untuk respons biner, tetapi dapat berarti dalam situasi apa pun.

Mean Square Error (dari tanggapan)

C=1ni(YiY^i)2

Menggunakan MSE Anda sama-sama sensitif terhadap kesalahan dari atas dan bawah dan sama-sama sensitif untuk prediksi besar dan kecil. Ini adalah hal yang cukup standar untuk dilakukan, dan jadi saya tidak berpikir akan disukai dalam kebanyakan situasi.

Mean Square Error (dari respons log)

C=1ni(lnYilnY^i)2

Karena Anda bekerja dengan data jumlah, dapat dikatakan bahwa Anda tidak simetris atau ukuran acuh tak acuh. Keluar dengan 10 hitungan untuk prediksi 10 sangat berbeda dari prediksi 1000. Ini adalah fungsi biaya yang agak "kanonik", karena Anda telah mencocokkan biaya hingga fungsi tautan. Ini memastikan bahwa biaya sesuai dengan distribusi varian yang diasumsikan dalam model.

Kesalahan Chi-Squared

C=1ni(YiY^i)2Y^i

Cara ketiga adalah dengan menggunakan kesalahan chi-squared. Ini bisa sangat menarik jika Anda membandingkan GLM Anda dengan model berbasis hitungan lainnya - terutama jika ada faktor-faktor dalam GLM Anda. Mirip dengan respons log kesalahan, ini akan skala dengan ukuran, tetapi simetris di sekitar jumlah yang diprediksi. Anda sekarang mengevaluasi goodness of fit berdasarkan persentase kesalahan.


Tentang Diskrititas

Pertanyaan tersebut mengutip contoh dokumentasi di mana mereka memiliki variabel respon biner, jadi gunakan fungsi biaya yang berbeda. Masalah untuk respons biner adalah bahwa GLM akan meramalkan bilangan real antara 0 dan 1, meskipun responsnya selalu tepat 0 atau 1. Sangatlah valid untuk mengatakan bahwa semakin dekat angka itu dengan respons yang benar semakin baik ramalan, tetapi seringkali orang tidak menginginkan ini. Alasannya adalah bahwa seseorang harus sering bertindak seolah-olah itu adalah 0 atau 1, dan dengan demikian akan mengambil kurang dari 0,5 sebagai perkiraan untuk 0. Dalam hal itu, masuk akal hanya untuk menghitung jumlah perkiraan "salah". Argumen di sini adalah bahwa untuk pertanyaan Benar / Salah Anda hanya bisa benar atau salah - tidak ada gradasi kesalahan.

Y^

Corone
sumber
Daripada bekerja dengan rata-rata kuadrat kesalahan kuadrat rata-rata dari respons transformasi log, mungkin lebih baik bagi GLM untuk menggunakan kesalahan kuadrat rata-rata tertimbang menggunakan bobot 1 / varians (diberikan oleh slot $ bobot dari output glm R, untuk poisson = 1 / E (Y)). Ini berfungsi saya percaya untuk semua jenis GLM.
Tom Wenseleers