Haruskah saya menggunakan offset untuk Poisson GLM saya?

11

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?

Vivienne
sumber
1
Ini bukan tentang bagaimana menggunakan R. Ini adalah pertanyaan statistik dasar yang disamarkan sebagai pertanyaan R. Itu harus pada topik di sini.
gung - Reinstate Monica

Jawaban:

11

Ada beberapa masalah di sini:

  1. Anda perlu menggunakan jumlah yang diamati sebagai variabel respons Anda. Anda tidak harus menggunakan densitas ( g_den).
  2. Jika jumlah yang diamati berasal dari area yang berbeda, Anda perlu mengambil log area tersebut sebagai variabel baru:

    larea = log(area)
  3. Anda dapat mengontrol area yang berbeda untuk pengamatan dengan dua cara berbeda:

    • Dengan menggunakan lareasebagai offset. Ini akan membuat respons Anda benar-benar suatu tingkat (walaupun apa yang terdaftar di sisi kiri model Anda adalah hitungan ).
    • Dengan menggunakan lareasebagai 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 peningkatan lareamemiliki 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:

gung - Pasang kembali Monica
sumber
6

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).

JDL
sumber
2
Anda menyebutkan bahwa Anda harus menggunakan transformasi log area (karena model Poisson menggunakan tautan log) dalam jawaban Anda tetapi kode Anda tidak melakukan transformasi. Saya tidak berpikir offsetmenerapkan transformasi secara default tetapi sudah lama sejak saya telah menggunakan offset.
iacobus
3
Catatan yang offset() tidak menerapkan transformasi secara default; itu hanya memaksa koefisien menjadi 1. Lihat, misalnya, di sini .
gung - Reinstate Monica
1
Terima kasih atas komentarnya. Jadi haruskah saya mengubah data saya kembali ke jumlah daripada kepadatan dan memasukkan area sebagai variabel terpisah? Saya juga telah disarankan di forum lain untuk melakukan gamma atau model Gaussian terbalik dan mengubah nilai nol saya menjadi 0,00001 jika saya ingin menyimpan data sebagai kepadatan, apakah menurut Anda itu juga akan sesuai?
Vivienne
4
E(count)=exp(βTx)area=exp(βTx+log(area))E(count/area)=E(count)/area=exp(βTx)
5
Anda tidak dapat menggunakan kepadatan sebagai respons. Anda harus menggunakan penghitungan asli sebagai respons Anda. Termasuk offset akan secara otomatis membuat respons hitungan setara dengan kepadatan dengan cara yang benar.
gung - Reinstate Monica
5

Jika Anda akan membuat model menggunakan Poisson, Anda harus memiliki nilai integer untuk variabel respons Anda. Anda kemudian memiliki dua opsi

  • Gunakan area atau penyebut yang cocok lainnya sebagai offset. Ini biasanya perlu dicatat terlebih dahulu
  • Sertakan area atau dll sebagai variabel prediktor. Sekali lagi ini biasanya akan dimasukkan sebagai log karena Anda memodelkan jumlah log.

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.

Nyonya
sumber