Bagaimana cara menangani peringatan "non-integer" dari GLM binomial negatif?

11

Saya mencoba untuk memodelkan intensitas rata-rata parasit yang mempengaruhi inang dalam R menggunakan model binomial negatif. Saya terus mendapatkan 50 atau lebih peringatan yang mengatakan:

In dpois(y, mu, log = TRUE) : non-integer x = 251.529000

Bagaimana saya bisa mengatasi ini? Kode saya terlihat seperti ini:

mst.nb = glm.nb(Larvae+Nymphs+Adults~B.type+Month+Season, data=MI.df)
Natasha
sumber
1
Harap tambahkan contoh yang dapat direproduksi agar orang dapat bekerja dengannya.
gung - Reinstate Monica
5
GLiM binomial negatif adalah semacam model penghitungan. Respons seharusnya dianggap penting. Sebuah hitungan , menurut definisi, tidak dapat menjadi nilai pecahan. Apakah Anda memiliki nilai seperti itu?
gung - Reinstate Monica
1
Bisakah Anda mengklarifikasi apa yang Anda maksud dengan "intensitas"? Apakah Anda membagi jumlah parasit dengan, katakanlah, sejumlah luas permukaan untuk inang?
gung - Reinstate Monica
1
Saya memiliki data jumlah, namun saya harus menghitung intensitas untuk memperhitungkan berbagai upaya pengambilan sampel. Saya mengerti bahwa saya perlu menghitung data di sana, namun saya hanya ingin tahu apakah ada cara lain untuk bekerja dengan angka non-integer menggunakan model yang sama. Untuk intensitas saya membagi jumlah parasit dengan jumlah inang yang terinfeksi.
Natasha
2
@ Natasha, jangan lakukan itu. Sangat mungkin bahwa cara yang tepat untuk menangani masalah ini adalah menurut jawaban Gung, dengan offset. Jika Anda ingin memastikan, edit pertanyaan Anda untuk menjelaskan sedikit lebih banyak tentang dari mana intensitas sampling diferensial berasal. Apakah jumlah host yang berbeda? Sampel waktu yang berbeda, atau jumlah kolektor?
Ben Bolker

Jawaban:

9

Binomial negatif adalah distribusi untuk data jumlah, jadi Anda benar-benar ingin variabel respons Anda dihitung (yaitu, bilangan bulat non-negatif). Yang mengatakan, itu tepat untuk menjelaskan "upaya pengambilan sampel yang berbeda" (Saya tidak tahu persis apa yang Anda maksudkan, tapi saya mendapatkan intinya). Namun, Anda tidak boleh mencoba melakukan itu dengan membagi jumlah Anda dengan nomor lain. Sebagai gantinya, Anda perlu menggunakan nomor lain itu sebagai offset . Ada diskusi bagus tentang CV tentang apa offset di sini: Kapan menggunakan offset dalam regresi Poisson? Dugaan saya adalah bahwa model Anda harus seperti:

mst.nb = glm.nb(Larvae+Nymphs+Adults~B.type+Month+Season + offset(log(num.hosts)), 
                data=MI.df)
gung - Pasang kembali Monica
sumber
Terima kasih. Saya akan mencoba ini dan kembali untuk memberi tahu Anda apa yang saya lakukan.
Natasha
OT: Saya kehilangan sesuatu, apa artinya memiliki banyak hasil dalam regresi ??
Bakaburg
@ Bakaburg, saya tidak tahu apa yang Anda maksud.
gung - Reinstate Monica
Bagian "Larva + Nymphs + Dewasa ~" dalam kode.
Bakaburg 3-15
1
@ Bakaburg, ini tentang bagaimana R bekerja. Penambahan adalah elemen. Menambahkan 3 vektor memberi Anda satu vektor di mana setiap elemen adalah jumlah dari 3 elemen yang sesuai. Untuk memiliki beberapa variabel respons pada LHS rumus R, Anda harus menggunakan cbind().
gung - Reinstate Monica
4

Ini peringatan, bukan kesalahan fatal. glm.nb () mengharapkan jumlah sebagai variabel hasil Anda, yang merupakan bilangan bulat. Data Anda bukan bilangan bulat: 251.529.

R mengatakan, "Hmmm ... Anda mungkin ingin memeriksa ini dan memastikan tidak apa-apa, karena mungkin kelihatannya tidak tepat." Jika ingatanku benar, SPSS tidak memberikan peringatan seperti itu.

Jika Anda yakin menggunakan model yang tepat, meskipun Anda tidak memiliki bilangan bulat, abaikan saja dan teruskan.

Jeremy Miles
sumber
1
Saya tahu ini peringatan, saya hanya ingin tahu apakah ada jalan lain. Saya memang memiliki bilangan bulat, jadi saya mencoba melihat apakah ada cara untuk bekerja dengan bilangan bulat tetapi menggunakan model yang sama dengan kode yang berbeda.
Natasha
1
Cara menekan peringatan yang dijelaskan di sini: stackoverflow.com/questions/16194212/...
kjetil b halvorsen
-2

Saya seorang parasitologist ekologi .. cara Anda harus menangani ini adalah dengan mengikat host yang diparasit dan yang tidak, dan kemudian menggunakan distribusi binomial .. lihat kode di bawah ini.

Saya juga belum pernah menggunakan glm w / lebih dari satu variabel y .. jadi katakanlah Anda ingin melihat larva yang diparasit: Anda akan memiliki # larva yang sehat, dan # yang diparasit.

Katakanlah: Lh dan Lp

Jadi misalnya

parasitizedL = cbind (Lp, Lh) hist (parasitized) # Saya menduga Anda hanya dapat menggunakan distribusi binomial reguler dengan / glm .. dan mungkin tidak perlu neg.barang model PLarvae1 = glm (parasitizedL ~ B.type + Bulan + Musim, keluarga = binomial, data = MI.df)

kemudian lakukan pengurangan model bertahap untuk melihat faktor mana yang secara signifikan memengaruhi parasitisme ... lihat tautan di bawah ini

http://bbolker.github.io/mixedmodels-misc/glmmFAQ.html

Namun sepertinya Anda harus memiliki efek acak untuk memperhitungkan pengambilan sampel berulang .. sehingga kemungkinan efek acak Anda akan (1 | Musim / Bulan) ... tetapi sulit untuk mengatakan tanpa mengetahui data Anda

JULIE HOPPER
sumber