Model hitungan nol-inflasi dalam R: apa keuntungan nyata?

11

Untuk menganalisis jumlah burung dengan inflasi nol, saya ingin menerapkan model jumlah dengan inflasi nol menggunakan paket R pscl . Namun, setelah melihat contoh yang disediakan dalam dokumentasi untuk salah satu fungsi utama ( ? Zeroinfl ), saya mulai meragukan apa keuntungan sebenarnya dari model ini. Menurut kode sampel yang diberikan di sana, saya menghitung poisson standar, quasi-poisson dan model bionomial negatif, poisson nol sederhana dan model binomial negatif dan poisson nol-meningkat dan model binomial negatif dengan regressor untuk komponen nol. Kemudian saya memeriksa histogram dari data yang diamati dan yang dipasang. (Ini kode untuk mereplikasi itu.)

library(pscl)
data("bioChemists", package = "pscl")

## standard count data models
fm_pois  <- glm(art ~ .,    data = bioChemists, family = poisson)
fm_qpois <- glm(art ~ .,    data = bioChemists, family = quasipoisson)
fm_nb    <- glm.nb(art ~ ., data = bioChemists)

## with simple inflation (no regressors for zero component)
fm_zip  <- zeroinfl(art ~ . | 1, data = bioChemists)
fm_zinb <- zeroinfl(art ~ . | 1, data = bioChemists, dist = "negbin")

## inflation with regressors
fm_zip2  <- zeroinfl(art ~ fem + mar + kid5 + phd + ment | fem + mar + kid5 + phd + 
                     ment, data = bioChemists)
fm_zinb2 <- zeroinfl(art ~ fem + mar + kid5 + phd + ment | fem + mar + kid5 + phd + 
                     ment, data = bioChemists, dist = "negbin")

## histograms
breaks <- seq(-0.5,20.5,1)
par(mfrow=c(4,2))
hist(bioChemists$art,  breaks=breaks)
hist(fitted(fm_pois),  breaks=breaks)
hist(fitted(fm_qpois), breaks=breaks)
hist(fitted(fm_nb),    breaks=breaks)
hist(fitted(fm_zip),   breaks=breaks)
hist(fitted(fm_zinb),  breaks=breaks)
hist(fitted(fm_zip2),  breaks=breaks)
hist(fitted(fm_zinb2), breaks=breaks)!

Histogram data yang diamati dan dipasang

Saya tidak dapat melihat perbedaan mendasar antara model-model yang berbeda (selain dari itu contoh data tidak tampak sangat "inflasi nol" bagi saya ...); sebenarnya tidak ada model yang menghasilkan estimasi setengah nol dari jumlah nol. Adakah yang bisa menjelaskan apa keuntungan dari model zero-inflated? Saya kira pasti ada alasan untuk memilih ini sebagai contoh untuk fungsi.

pengguna7417
sumber

Jawaban:

15

Saya pikir ini adalah kumpulan data yang dipilih dengan buruk untuk mengeksplorasi keuntungan dari model nol inflasi, karena, seperti yang Anda perhatikan, tidak ada inflasi sebanyak itu.

plot(fitted(fm_pois), fitted(fm_zinb))

menunjukkan bahwa nilai yang diprediksi hampir identik.

Dalam set data dengan lebih banyak inflasi nol, model ZI memberikan hasil yang berbeda (dan biasanya lebih baik) daripada Poisson.

Cara lain untuk membandingkan kesesuaian model adalah dengan membandingkan ukuran residu:

boxplot(abs(resid(fm_pois) - resid(fm_zinb)))

menunjukkan bahwa, bahkan di sini, residu dari Poisson lebih kecil daripada residu dari ZINB. Jika Anda memiliki gagasan tentang besarnya residu yang benar-benar bermasalah, Anda dapat melihat berapa proporsi residu dalam setiap model di atas itu. Misal jika libur lebih dari 1 tidak dapat diterima

sum(abs(resid(fm_pois) > 1))
sum(abs(resid(fm_zinb) > 1))

menunjukkan yang terakhir sedikit lebih baik - 20 lebih sedikit residu besar.

Maka pertanyaannya adalah apakah kompleksitas model yang ditambahkan layak untuk Anda.

Peter Flom - Pasang kembali Monica
sumber
6

Nilai-nilai yang dipasang akan menunjukkan dispersi kurang dari nilai-nilai yang diamati karena variasi acak. Anda tidak membuat perbandingan yang berarti. Untuk mengambil kasus sederhana, jika data Anda hanya Anda tidak akan membandingkan histogram dengan histogram dari nilai yang dipasang - sama untuk semua ! Meskipun masuk akal untuk mensimulasikan nilai dari & membandingkan histogram & .x i μ i x * i X * i ~ P o i s ( μ ) x * i x iXiPois(μ)xiμ^ixiXiPois(μ^)xixi

Scortchi - Reinstate Monica
sumber
Jenis perbandingan apa yang akan Anda rekomendasikan?
user7417
Lihat jawaban Peter untuk perbandingan yang baik antar model.
Scortchi