Pemodelan menghitung data dengan variabel offset 0 untuk beberapa pengamatan

9

Saya mencoba membantu seorang mahasiswa dari seorang kolega. Siswa mengamati dan menghitung perilaku burung (jumlah panggilan) dalam pengaturan eksperimental. Jumlah panggilan yang dikaitkan dengan burung yang diamati secara spesifik selama setiap percobaan tidak dapat ditentukan tetapi menghitung jumlah burung yang berkontribusi terhadap jumlah panggilan yang direkam dimungkinkan. Karenanya saran awal saya adalah memasukkan jumlah burung sebagai istilah offset dalam model GLM Poisson, maka kami akan menyesuaikan jumlah panggilan yang diharapkan per burung .

Masalah dengan ini adalah bahwa selama banyak kesempatan pengamatan tidak ada burung (dan karenanya tidak ada panggilan) yang diamati. Perangkat lunak (R dalam hal ini) mengeluh karena (R mengeluh tentang berisi data tetapi itu murni hasil dari menjadi ).log(0)=infy-Infoffset(log(nbirds))-Inf

Saya sebenarnya curiga kita membutuhkan model rintangan (atau serupa) di mana kita memiliki model binomial terpisah untuk "panggilan terpantau?" (atau tidak) dan model hitungan terpotong untuk jumlah panggilan (per burung) dalam situasi di mana ada panggilan, di mana kami menyertakan istilah offset hanya dalam bagian hitungan model.

Setelah mencoba ini menggunakan paket pscl di R, tapi saya masih mendapatkan kesalahan yang sama:

mod1 <- hurdle(NumberCallsCOPO ~ Condition * MoonVis +
               offset(log(NumberCOPO)) | 1, data = Data,
               dist = "poisson")

karena kode R yang sama ( glm.fitdigunakan secara internal oleh hurdle()agar sesuai dengan bagian model hitungan) sedang memeriksa -Infmeskipun saya tidak berpikir itu akan mempengaruhi model yang cocok untuk pengamatan tersebut. (Apakah itu asumsi yang benar?)

Saya bisa mendapatkan model yang pas dengan menambahkan sejumlah kecil ke NumberCOPO(katakanlah 0.0001) tapi ini adalah tipuan yang terbaik.

Apakah menambahkan koreksi kontinuitas kecil ini boleh dilakukan dalam praktek? Jika tidak, pendekatan lain apa yang harus kita pertimbangkan ketika menangani data di mana kita mungkin ingin menggunakan offset dalam model Poisson di mana variabel offset dapat mengambil nilai 0? Semua contoh yang saya temui adalah untuk situasi di mana 0 tidak mungkin untuk variabel offset.

Gavin Simpson
sumber
2
Dalam hal ini, sepertinya model Anda mencoba menyesuaikan tautologi: jika ada 0 burung yang diamati, Anda juga akan mendengar 0 panggilan burung. Saya tidak yakin bahwa pemasangan model pada baris dengan offset 0 sesuai dalam kasus ini.
Sycorax berkata Reinstate Monica
Terima kasih, seperti yang saya sebutkan di bawah, itu adalah reaksi saya juga. Saya telah sedikit memperluas jawaban saya untuk Jawaban Barry (Spacedman) di bawah ini.
Gavin Simpson
2
Saya setuju dengan komentar yang menyiratkan bahwa model tingkat Poisson (yaitu, dengan istilah offset) tidak sesuai untuk kasus-kasus tersebut (dan Anda benar mengatakan bahwa mungkin model terpisah, seperti binomial, harus diterapkan untuk memasukkan kasus-kasus tersebut) . Nilai tidak dapat didasarkan pada penyebut nol.
ttnphns

Jawaban:

5

Jadi respons yang ingin Anda modelkan adalah "Jumlah panggilan per burung" dan garis yang merepotkan adalah di mana Anda tidak mengamati burung? Letakkan saja baris-baris itu. Mereka tidak menambahkan informasi ke hal yang Anda coba modelkan.

Spacedman
sumber
Itu juga reaksi saya; mungkin terlalu memikirkan ini, tapi saya bisa membayangkan situasi di mana burung mengamati tetapi tidak ada panggilan yang dibuat. Oleh karena itu model rintangan, tetapi secara internal masih menggunakan glm.fityang melempar goyangan bahkan jika nilai-nilai itu tidak masuk hitungan bagian dari model. Saya kira saya bisa melakukan model rintangan dengan tangan tetapi saya tidak ingin melakukan ini, hanya menyarankan siswa.
Gavin Simpson
3
Jika Anda memiliki banyak panggilan nol yang dibuat dari burung yang tidak diamati, Anda mungkin ingin melakukan model poisson yang meningkat nol (atau serupa), tetapi itu sangat berbeda dari burung yang diamati nol ketika Anda tertarik dengan jumlah panggilan per burung .
Spacedman
Dalam hal ini saya tidak berpikir kita memiliki banyak dari mereka; membuang data pengamatan 0 burung dan cocok dengan binomial negatif tampaknya merupakan langkah pertama yang masuk akal.
Gavin Simpson
2

Dalam Poisson GLM, offset hanyalah penskalaan multiplikasi pada laju Poisson yang sedang dimodelkan - dan Poisson dengan laju nol tidak membantu atau bahkan bermakna ...

Itu sebabnya Spacedman benar!

Squidge Bulbous
sumber
0

Cobalah melakukannya (Hurdle) "dengan tangan (untuk tujuan" didaktik / senam "): dibagi menjadi bagian binomial dan bagian cout dan nikmati logit pas dan regresi cout secara terpisah! Atau gunakan model Hurdle standar (+ uji Vuong) Poisson / negBin / Gamma ..., GAM. Kamu tidak butuh "offset" di sini, menurutku. ;-)

Ivan Kshnyasev
sumber