Pertimbangkan model rintangan yang memprediksi data jumlah y
dari prediktor normal x
:
set.seed(1839)
# simulate poisson with many zeros
x <- rnorm(100)
e <- rnorm(100)
y <- rpois(100, exp(-1.5 + x + e))
# how many zeroes?
table(y == 0)
FALSE TRUE
31 69
Dalam hal ini, saya memiliki data jumlah dengan 69 angka nol dan 31 jumlah positif. Nevermind untuk saat ini, menurut definisi prosedur pembuatan data, proses Poisson, karena pertanyaan saya adalah tentang model rintangan.
Katakanlah saya ingin menangani kelebihan nol ini dengan model rintangan. Dari bacaan saya tentang mereka, sepertinya model rintangan bukanlah model aktual — mereka hanya melakukan dua analisis berbeda secara berurutan. Pertama, regresi logistik yang memprediksi apakah nilainya positif versus nol. Kedua, regresi Poisson nol terpotong dengan hanya memasukkan kasus-kasus yang tidak nol. Langkah kedua ini terasa salah bagi saya karena (a) membuang data yang sangat baik, yang (b) dapat menyebabkan masalah daya karena banyak data nol, dan (c) pada dasarnya bukan "model" dalam dan dari dirinya sendiri , tetapi hanya menjalankan dua model secara berurutan.
Jadi saya mencoba "model rintangan" versus hanya menjalankan regresi Poisson logistik dan nol terpotong secara terpisah. Mereka memberi saya jawaban yang sama (saya menyingkat hasilnya, demi singkatnya):
> # hurdle output
> summary(pscl::hurdle(y ~ x))
Count model coefficients (truncated poisson with log link):
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.5182 0.3597 -1.441 0.1497
x 0.7180 0.2834 2.533 0.0113 *
Zero hurdle model coefficients (binomial with logit link):
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.7772 0.2400 -3.238 0.001204 **
x 1.1173 0.2945 3.794 0.000148 ***
> # separate models output
> summary(VGAM::vglm(y[y > 0] ~ x[y > 0], family = pospoisson()))
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.5182 0.3597 -1.441 0.1497
x[y > 0] 0.7180 0.2834 2.533 0.0113 *
> summary(glm(I(y == 0) ~ x, family = binomial))
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.7772 0.2400 3.238 0.001204 **
x -1.1173 0.2945 -3.794 0.000148 ***
---
Ini nampak bagi saya karena banyak representasi matematis yang berbeda dari model termasuk probabilitas bahwa pengamatan adalah tidak nol dalam estimasi jumlah kasus positif, tetapi model yang saya jalankan di atas sepenuhnya mengabaikan satu sama lain. Sebagai contoh, ini dari Bab 5, halaman 128 dari Generalized Linear Models dari Smithson & Merkle untuk Variabel Ketergantungan Terbatas Kategori dan Kontinu :
... Kedua, probabilitas bahwa mengasumsikan nilai apa pun (nol dan bilangan bulat positif) harus sama dengan satu. Ini tidak dijamin dalam Persamaan (5.33). Untuk mengatasi masalah ini, kami mengalikan probabilitas Poisson dengan probabilitas keberhasilan Bernoulli . Masalah ini mengharuskan kita untuk mengekspresikan model rintangan di atas sebagai mana , ,π
adalah kovariat untuk model Poisson, adalah kovariat untuk model regresi logistik, dan dan adalah koefisien regresi masing-masing ... .
Dengan melakukan dua model yang benar-benar terpisah satu sama lain — yang tampaknya merupakan model rintangan — saya tidak melihat bagaimana dimasukkan ke dalam prediksi kasus jumlah positif. Tetapi berdasarkan bagaimana saya dapat mereplikasi fungsi hanya dengan menjalankan dua model yang berbeda, saya tidak melihat bagaimana memainkan peran dalam Poisson terpotong regresi sama sekali.hurdle
Apakah saya memahami model rintangan dengan benar? Mereka tampaknya hanya menjalankan dua model berurutan: Pertama, logistik; Kedua, Poisson, benar-benar mengabaikan kasus di mana . Saya akan sangat menghargai jika seseorang dapat menjernihkan kebingungan saya dengan bisnis .
Jika saya benar bahwa itulah model rintangan, apa definisi dari model "rintangan", secara umum? Bayangkan dua skenario berbeda:
Bayangkan memodelkan daya saing ras pemilu dengan melihat skor daya saing (1 - (proporsi suara pemenang - proporsi suara pemenang runner up)). Ini [0, 1), karena tidak ada ikatan (misalnya, 1). Model rintangan masuk akal di sini, karena ada satu proses (a) apakah pemilihan tidak dipertanyakan? dan (b) jika tidak, apa yang meramalkan daya saing? Jadi pertama-tama kami melakukan regresi logistik untuk menganalisis 0 vs (0, 1). Kemudian kami melakukan regresi beta untuk menganalisis (0, 1) kasus.
Bayangkan sebuah studi psikologis yang khas. Responsnya adalah [1, 7], seperti skala Likert tradisional, dengan efek langit-langit yang sangat besar pada 7. Seseorang dapat melakukan model rintangan yang merupakan regresi logistik [1, 7) vs 7, dan kemudian regresi Tobit untuk semua kasus di mana tanggapan yang diamati adalah <7.
Apakah aman untuk menyebut kedua situasi ini model "rintangan" , bahkan jika saya memperkirakannya dengan dua model berurutan (logistik dan kemudian beta dalam kasus pertama, logistik dan kemudian Tobit dalam yang kedua)?
sumber
pscl::hurdle
, tetapi terlihat sama dalam Persamaan 5 di sini: cran.r-project.org/web/packages/pscl/vignettes/countreg.pdf Atau mungkin saya Saya masih melewatkan sesuatu yang mendasar yang akan membuatnya klik untuk saya?hurdle()
. Dalam pasangan / sketsa kami, kami mencoba untuk menekankan blok bangunan yang lebih umum.Jawaban:
Memisahkan kemungkinan log
Memang benar bahwa sebagian besar model rintangan dapat diperkirakan secara terpisah (saya akan mengatakan, bukannya berurutan ). Alasannya adalah bahwa log-kemungkinan dapat didekomposisi menjadi dua bagian yang dapat dimaksimalkan secara terpisah. Ini karena hanyalah faktor penskalaan pada (5.34) yang menjadi istilah tambahan dalam log-likelihood.π^
Dalam notasi Smithson & Merkle: mana adalah kepadatan distribusi Poisson (yang tidak dikunci) dan adalah faktor dari pemotongan nol.
Maka menjadi jelas bahwa (model biner) dan (model Poisson nol-terpotong) dapat dimaksimalkan secara terpisah, yang mengarah ke estimasi parameter yang sama, kovarian, dll. Seperti dalam kasus ini di mana mereka dimaksimalkan bersama.ℓ1(γ) ℓ2(β)
Logika yang sama juga berfungsi jika probabilitas rintangan nol tidak ditentukan melalui model logit tetapi model regresi biner lainnya, misalnya, distribusi jumlah yang disensor dengan benar pada 1. Dan, tentu saja, juga dapat distribusi hitungan lain, misalnya binomial negatif. Seluruh pemisahan hanya rusak jika ada parameter bersama antara rintangan nol dan bagian hitung terpotong.π f(⋅)
Contoh yang menonjol adalah jika distribusi binomial negatif dengan parameter terpisah tetapi umum digunakan dalam dua komponen model. (Ini tersedia di dalam paket dari R-Forge, penerus implementasi.)μ θ
hurdle(..., separate = FALSE, dist = "negbin", zero.dist = "negbin")
countreg
pscl
Pertanyaan konkret
(a) Membuang data yang sangat bagus: Dalam kasus Anda ya, secara umum tidak. Anda memiliki data dari model Poisson tunggal tanpa kelebihan nol (meskipun banyak nol ). Oleh karena itu, tidak perlu memperkirakan model terpisah untuk nol dan bukan nol. Namun, jika kedua bagian tersebut benar-benar didorong oleh parameter yang berbeda maka perlu untuk memperhitungkan ini.
(B) Dapat menyebabkan masalah listrik karena banyak data nol: Tidak harus. Di sini, Anda memiliki sepertiga dari pengamatan yang merupakan "keberhasilan" (rintangan rintangan). Ini tidak akan dianggap sangat ekstrim dalam model regresi biner. (Tentu saja, jika tidak perlu memperkirakan model yang terpisah Anda akan mendapatkan kekuatan.)
(c) Pada dasarnya bukan 'model' di dalam dan dari dirinya sendiri, tetapi hanya menjalankan dua model secara berurutan: Ini lebih filosofis dan saya tidak akan mencoba memberikan "satu" jawaban. Sebagai gantinya, saya akan menunjukkan sudut pandang pragmatis. Untuk estimasi model , akan lebih mudah untuk menekankan bahwa model terpisah karena - seperti yang Anda tunjukkan - Anda mungkin tidak memerlukan fungsi khusus untuk estimasi tersebut. Untuk aplikasi model , misalnya, untuk prediksi atau residu, dll., Akan lebih mudah untuk melihatnya sebagai model tunggal.
(D) Apakah aman untuk menyebut kedua model situasi ini 'rintangan': Pada prinsipnya ya. Namun, jargon dapat bervariasi di seluruh komunitas. Misalnya, regresi beta zero-hurdle lebih umum (dan sangat membingungkan) disebut regresi beta zero-inflated. Secara pribadi, saya menemukan yang terakhir sangat menyesatkan karena distribusi beta tidak memiliki nol yang dapat meningkat - tapi itu adalah istilah standar dalam literatur. Selain itu, model tobit adalah model yang disensor dan karenanya bukan model rintangan. Ini bisa diperluas, dengan model probit (atau logit) plus model normal terpotong . Dalam literatur ekonometrik ini dikenal sebagai model dua bagian Cragg.
Komentar perangkat lunak
The
countreg
paket pada R-Forge di https://R-Forge.R-project.org/R/?group_id=522 adalah implementasi penerushurdle()
/zeroinfl()
daripscl
. Alasan utama bahwa itu (masih) tidak pada CRAN adalah bahwa kami ingin merevisipredict()
antarmuka, mungkin dengan cara yang tidak sepenuhnya kompatibel ke belakang. Kalau tidak, implementasinya cukup stabil. Dibandingkan denganpscl
itu hadir dengan beberapa fitur bagus, misalnya:Sebuah
zerotrunc()
fungsi yang menggunakan kode yang sama persis sepertihurdle()
untuk bagian nol-dipotong model. Dengan demikian, ia menawarkan alternatifVGAM
.Selain itu, ini berfungsi sebagai d / p / q / r untuk distribusi penghitungan nol terpotong, rintangan, dan nol. Ini memfasilitasi melihat ini sebagai model "satu" daripada model terpisah.
Untuk menilai goodness of fit, tampilan grafis seperti rootogram dan plot residu kuantil acak tersedia. (Lihat Kleiber & Zeileis, 2016, The American Statistician , 70 (3), 296–303. Doi: 10.1080 / 00031305.2016.1173590 .)
Data simulasi
Data simulasi Anda berasal dari proses Poisson tunggal. Jika
e
diperlakukan sebagai regresi yang dikenal maka itu akan menjadi Poisson GLM standar. Jikae
komponen noise yang tidak diketahui, maka ada beberapa heterogenitas yang tidak teramati yang menyebabkan sedikit penyebaran berlebihan yang dapat ditangkap oleh model binomial negatif atau beberapa jenis campuran kontinu atau efek acak dll. Namun, karena efeknyae
agak kecil di sini , semua ini tidak membuat perbedaan besar. Di bawah, saya memperlakukane
sebagai regressor (yaitu, dengan koefisien true 1) tetapi Anda juga bisa menghilangkan ini dan menggunakan model binomial atau Poisson negatif. Secara kualitatif, semua ini mengarah pada wawasan serupa.Ini mencerminkan bahwa ketiga model dapat secara konsisten memperkirakan parameter sebenarnya. Melihat kesalahan standar yang sesuai menunjukkan bahwa dalam skenario ini (tanpa perlu bagian rintangan) Poisson GLM lebih efisien:
Kriteria informasi standar akan memilih Poisson GLM sejati sebagai model terbaik:
Dan tes Wald akan mendeteksi dengan benar bahwa dua komponen model rintangan tidak berbeda secara signifikan:
Akhirnya keduanya
rootogram(p)
danqqrplot(p)
menunjukkan bahwa Poisson GLM sangat cocok dengan data dan bahwa tidak ada kelebihan nol atau petunjuk tentang kesalahan spesifikasi lebih lanjut.sumber
Saya setuju perbedaan antara model zero-inflated dan hurdle sulit dipahami. Keduanya adalah sejenis model campuran. Dari apa yang saya tahu, perbedaan penting adalah, dalam model nol-inflasi, Anda mencampur massa di nol dengan distribusi \ textit {yang juga bisa mengambil nilai nol}. Untuk model rintangan, Anda mencampur massa nol dengan distribusi yang hanya mengambil nilai lebih besar dari 0. Dengan demikian, dalam model nol Anda dapat membedakan antara 'nol struktural' (sesuai dengan massa nol) dan 'sampel nol 'sesuai dengan kemungkinan terjadinya 0 dari model yang Anda campur. Tentu saja, identifikasi ini sangat bergantung pada pilihan distribusi yang tepat! Tapi, jika Anda memiliki Poisson nol, misalnya, Anda dapat membedakan antara nol yang berasal dari komponen Poisson (nol pengambilan sampel) dan nol yang berasal dari massa nol (nol struktural). Jika Anda memiliki model inflasi nol dan distribusi yang Anda campur tidak memiliki massa nol, itu bisa ditafsirkan sebagai model rintangan.
sumber
Mengenai aspek filosofis, "kapan kita harus mempertimbangkan sesuatu model tunggal dan ketika dua model terpisah" , mungkin menarik untuk dicatat bahwa perkiraan sampel parameter-model berkorelasi.
Dalam plot di bawah ini dengan simulasi Anda sebagian besar melihat korelasi antara kemiringan dan intersep dari bagian hitungan. Tetapi ada juga sedikit hubungan antara bagian penghitungan dan bagian rintangan. Jika Anda mengubah parameter, misalnya membuat lambda dalam distribusi Poisson lebih kecil atau ukuran sampel lebih kecil, maka korelasinya menjadi lebih kuat.
Jadi saya akan mengatakan bahwa Anda tidak harus menganggapnya sebagai dua model terpisah . Atau setidaknya ada beberapa hubungan bahkan ketika dalam praktiknya Anda dapat menghitung dua perkiraan yang independen satu sama lain.
Tidak masuk akal jika ada korelasi antara dua bagian. Tapi itu mungkin karena tingkat diskrit estimasi untuk parameter dalam model Poisson, dan bagaimana ini berhubungan dengan jumlah nol.
sumber
truncdist::rtrunc(n = 100, spec = 'pois', a = 0, b = Inf, lambda = exp(-1.5 + rnorm(100)))
menghasilkan kesalahan (menggunakan versi 1.0.2):Error in if (G.a == G.b) { : the condition has length > 1
. Dalam kasus apa pun, menggunakanrhpois()
dari paketcountreg
pada R-Forge lebih mudah untuk disimulasikan dari model Poisson hurdle dengan probabilitas rintangan rintangan yang diberikanpi
dan harapan Poisson yang mendasarinya (tidak terpotong)lambda
. Jika saya menggunakan ini, saya hanya mendapatkan korelasi empiris yang sangat kecil antara nol rintangan dan bagian hitungan terpotong.dgp <- function(n = 100, b = c(-0.5, 2), g = c(0.5, -2)) { x <- runif(n, -1, 1) ; y <- rhpois(n, lambda = exp(b[1] + b[2] * x), pi = plogis(g[1] + g[2] * x)); data.frame(x = x, y = y) }
Simulasi:set.seed(1); cf <- t(replicate(3000, coef(hurdle(y ~ x, data = dgp()))))
. Evaluasi:pairs(cf)
dancor(cf)
. MemeriksacolMeans(cf)
juga menunjukkan bahwa estimasi telah bekerja dengan cukup baik.