Saya sedang melakukan penelitian untuk melihat perbedaan dalam kepadatan ikan dan kekayaan spesies ikan ketika menggunakan dua metode sensus visual bawah air yang berbeda. Data saya awalnya menghitung data tetapi biasanya ini diubah menjadi kepadatan ikan tetapi saya masih memutuskan untuk menggunakan Poisson GLM, yang saya harap benar.
model1 <- glm(g_den ~ method + site + depth, poisson)
3 variabel prediktor saya adalah metode, situs, dan kedalaman yang saya pesan sebagai faktor ketika saya memasukkannya.
Variabel respons saya adalah kekayaan spesies kerapu, kepadatan kerapu dan yang sama untuk kelompok ikan lainnya. Saya sadar bahwa kepadatan bukan bilangan bulat dan itu adalah data numerik misal 1.34849. Namun saya sekarang mendapatkan kesalahan ini:
In dpois(y, mu, log = TRUE) : non-integer x = 0.037500
Saya sudah membaca dan banyak orang menyarankan menggunakan offset, apakah ini hal yang paling disarankan untuk dilakukan?
Jawaban:
Ada beberapa masalah di sini:
g_den
).Jika jumlah yang diamati berasal dari area yang berbeda, Anda perlu mengambil log area tersebut sebagai variabel baru:
Anda dapat mengontrol area yang berbeda untuk pengamatan dengan dua cara berbeda:
larea
sebagai offset. Ini akan membuat respons Anda benar-benar suatu tingkat (walaupun apa yang terdaftar di sisi kiri model Anda adalah hitungan ).larea
sebagai kovariat. Ini akan mengontrol area yang berbeda, tetapi tidak akan membuat respons Anda setara dengan kurs. Ini adalah pendekatan yang lebih fleksibel yang akan memungkinkan Anda menilai apakah peningkatanlarea
memiliki efek peningkatan atau penurunan pada hitungan (yaitu, apakah kemiringan kurang dari atau lebih besar dari 1).Ada informasi lebih lanjut tentang masalah ini di utas CV berikut:
sumber
Sepertinya Anda membagi jumlah ikan dengan volume (atau mungkin area) air yang disurvei. Dalam hal offset memang tepat, Anda harus menggunakan log apa pun yang Anda bagi. Mungkin
model1 <- glm(g_den ~ method + site + depth + offset(log(area)), poisson)
(diedit dari versi yang salah sebelumnya, hilang log)
Alasan untuk pesan kesalahan adalah bahwa distribusi poisson biasanya bernilai integer tetapi responnya bukan integer. Ini berubah setelah offset hadir; (response / offset) harus berupa bilangan bulat (yang tentu saja, dengan anggapan jumlah asli adalah bilangan bulat).
sumber
offset
menerapkan transformasi secara default tetapi sudah lama sejak saya telah menggunakanoffset
.offset()
tidak menerapkan transformasi secara default; itu hanya memaksa koefisien menjadi 1. Lihat, misalnya, di sini .Jika Anda akan membuat model menggunakan Poisson, Anda harus memiliki nilai integer untuk variabel respons Anda. Anda kemudian memiliki dua opsi
Jika Anda menggunakan pendekatan penyeimbangan, Anda mengatakan bahwa jika saya menggandakan area, saya akan berharap untuk menggandakan penghitungan. Jika Anda menggunakan pendekatan prediktor, Anda akan mengatakan bahwa Anda tahu jika Anda mengalikan area yang Anda gandakan, tetapi tidak harus dengan faktor yang sama.
Itu adalah panggilanmu.
sumber