Dalam analisis data hitungan, sering kali ditemukan jumlah nol (zeros) yang lebih besar daripada yang diprediksi oleh distribusi standar seperti Poisson atau Binomial Negatif. Fenomena ini disebut kelebihan nol atau zero-inflation. Kelebihan ini dapat menyebabkan bias dalam estimasi parameter dan prediksi, sehingga memerlukan pendekatan khusus untuk mengatasinya.
Zero-inflation mengacu pada adanya dua jenis nol dalam data:
Model zero-inflated memodelkan data sebagai campuran dari dua proses:
Dengan demikian, model ini dapat menangkap kelebihan nol yang tidak dapat dijelaskan oleh distribusi hitungan standar.
glmmTMB
adalah paket di R yang memungkinkan pengguna untuk membangun Generalized Linear Mixed Models (GLMMs) dengan fleksibilitas tinggi. Paket ini mendukung berbagai distribusi dan struktur efek acak, menjadikannya alat yang kuat untuk pemodelan data yang kompleks, termasuk model zero-inflated.
Untuk menetapkan model zero-inflated di glmmTMB, pengguna harus menentukan dua komponen utama:
Berikut adalah contoh sintaks dasar untuk model zero-inflated di glmmTMB:
library(glmmTMB)
model_zi <- glmmTMB(
counts ~ predictor1 + predictor2 + (1 | random_effect),
ziformula = ~ predictor3 + predictor4,
family = nbinom2,
data = dataset
)
Komponen | Deskripsi |
---|---|
counts |
Variabel respons yang dihitung. |
predictor1, predictor2 |
Variabel prediktor untuk model kondisional. |
(1 | random_effect) |
Efek acak untuk menangkap variasi hierarkis atau grup dalam data. |
ziformula = ~ predictor3 + predictor4 |
Formula untuk model zero-inflation yang bisa mencakup variabel tetap dan acak. |
family = nbinom2 |
Distribusi untuk komponen hitungan utama. nbinom2 adalah Binomial Negatif. |
Penjelasan komponen:
nbinom2
sering digunakan untuk menangani overdispersi.glmmTMB
mendukung berbagai distribusi untuk model zero-inflated, antara lain:
Link function yang umum digunakan untuk komponen zero-inflation adalah logit link, yang memastikan bahwa probabilitas zero-inflation berada antara 0 dan 1. Namun, glmmTMB juga mendukung link function lain sesuai kebutuhan analisis.
Formula untuk zero-inflation biasanya menggunakan logit link secara default, namun dapat disesuaikan jika diperlukan.
glmmTMB
memungkinkan penggunaan berbagai distribusi dan fungsi link, serta mendukung struktur efek acak yang kompleks.DHARMa
untuk analisis residual.Pemilihan distribusi yang tepat untuk model zero-inflated sangat penting untuk akurasi model. Berikut adalah beberapa panduan:
Untuk menentukan apakah model zero-inflated lebih sesuai dibandingkan model standar tanpa zero-inflation, gunakan kriteria informasi seperti AIC (Akaike Information Criterion). Model dengan nilai AIC lebih rendah dianggap lebih baik.
model_nonzi <- glmmTMB(
counts ~ predictor1 + predictor2 + (1 | random_effect),
family = nbinom2,
data = dataset
)
AIC(model_zi, model_nonzi)
Jika AIC model zero-inflated lebih rendah, maka model tersebut lebih cocok untuk data. Selain itu, pengguna juga dapat melakukan perbandingan menggunakan tes statistik seperti Vuong Test, meskipun paket glmmTMB
tidak secara langsung mendukungnya. Alternatifnya, dapat menggunakan paket lain seperti pscl
untuk melakukan tes tersebut.
Setelah model dibangun, penting untuk melakukan diagnostik untuk memastikan kecocokan model:
DHARMa
untuk simulasi residual dan menguji keberadaan zero-inflation secara statistik.
library(DHARMa)
simulation_output <- simulateResiduals(model_zi)
testZeroInflation(simulation_output)
Hasil tes akan menunjukkan apakah model zero-inflated cocok untuk data tersebut. Jika tes menunjukkan keberadaan zero-inflation, maka model tersebut adalah pilihan yang tepat.
Koefisien dalam model kondisional menggambarkan pengaruh prediktor terhadap jumlah yang diharapkan, mengasumsikan tidak berada dalam keadaan nol struktural.
Koefisien dalam model zero-inflation menggambarkan pengaruh prediktor terhadap probabilitas menjadi nol struktural.
Misalkan kita mendapati hasil berikut dari model zero-inflated Poisson:
summary(model_zi)
Interpretasi hasil:
habitat
: Koefisien positif mengindikasikan bahwa habitat yang lebih baik meningkatkan jumlah spesies yang diharapkan.size
: Koefisien positif menunjukkan bahwa ukuran yang lebih besar mendukung lebih banyak individu spesies.habitat
: Koefisien positif menunjukkan bahwa jenis habitat tertentu (misalnya, urban) memiliki probabilitas nol struktural yang lebih tinggi.size
: Jika ada koefisien negatif, mungkin menunjukkan bahwa ukuran yang lebih besar mengurangi probabilitas nol struktural, meskipun hal ini harus diinterpretasikan dalam konteks penelitian.Berikut adalah langkah-langkah untuk membuat data simulasi yang sesuai dengan model zero-inflated:
set.seed(123)
n <- 1000
habitat <- factor(sample(c("Hutan", "Padang Rumput", "Urban"), n, replace = TRUE))
size <- runif(n, 1, 100)
pi_true <- plogis(-1 + 0.5 * as.numeric(habitat == "Urban"))
is_zero <- rbinom(n, 1, pi_true)
lambda <- exp(0.3 * size)
counts <- ifelse(is_zero == 1, 0, rpois(n, lambda))
data_sim <- data.frame(
counts = counts,
habitat = habitat,
size = size,
site = factor(rep(1:100, each = 10))
)
Penjelasan:
is_zero
.Menggunakan data simulasi untuk membangun model zero-inflated Poisson:
library(glmmTMB)
library(DHARMa)
model_zi <- glmmTMB(
counts ~ habitat + size + (1 | site),
ziformula = ~ habitat,
family = poisson,
data = data_sim
)
summary(model_zi)
Hasil summary akan memberikan informasi tentang koefisien untuk kedua komponen model (kondisional dan zero-inflation), nilai p, dan statistik relevan lainnya.
Untuk perbandingan, membangun model Poisson standar tanpa zero-inflation:
model_standard <- glmmTMB(
counts ~ habitat + size + (1 | site),
family = poisson,
data = data_sim
)
summary(model_standard)
Dengan membandingkan hasil dari model_zi
dan model_standard
, kita dapat menilai apakah model zero-inflated memberikan peningkatan kecocokan yang signifikan.
Gunakan AIC untuk membandingkan kedua model:
AIC(model_zi, model_standard)
Model dengan nilai AIC lebih rendah dianggap lebih baik. Jika model_zi
memiliki AIC lebih rendah, maka model zero-inflated lebih cocok untuk data tersebut.
Selain itu, periksa proporsi nol yang diamati dibandingkan dengan yang diprediksi oleh model:
mean(data_sim$counts == 0)
fitted_zi <- predict(model_zi, type = "response")
mean(fitted_zi == 0)
Perbandingan ini membantu dalam menilai seberapa baik model menangkap kelebihan nol dalam data.
Untuk memastikan kecocokan model, gunakan paket DHARMa
untuk menganalisis residual:
library(DHARMa)
simulation_output <- simulateResiduals(model_zi)
testZeroInflation(simulation_output)
Hasil dari testZeroInflation
akan memberikan indikasi apakah zero-inflation merupakan fitur penting dalam data. Nilai p yang signifikan menunjukkan keberadaan zero-inflation.
Memasukkan covariate dalam model zero-inflation memungkinkan probabilitas nol struktural bervariasi berdasarkan prediktor. Ini meningkatkan fleksibilitas model dan memungkinkan analisis yang lebih mendalam mengenai faktor-faktor yang mempengaruhi nol struktural.
model_zi_adv <- glmmTMB(
counts ~ habitat + size + (1 | site),
ziformula = ~ habitat + size,
family = poisson,
data = data_sim
)
summary(model_zi_adv)
Dalam model ini, baik habitat maupun ukuran lahan mempengaruhi probabilitas nol struktural, memberikan wawasan lebih lanjut tentang bagaimana variabel-variabel tersebut berinteraksi dalam menghasilkan nol dalam data.
Bertentangan dengan model zero-inflated yang mengasumsikan dua proses terpisah menghasilkan nol, model hurdle mengasumsikan bahwa nol hanya berasal dari satu proses, dan positif counts berasal dari distribusi hitungan terpisah.
Model hurdle lebih sesuai ketika nol tidak terbagi menjadi nol struktural dan nol sampling, melainkan hanya berasal dari satu jenis proses.
hurdle_model <- glmmTMB(
counts ~ habitat + size + (1 | site),
family = hurdle_poisson(),
data = data_sim
)
summary(hurdle_model)
glmmTMB juga mendukung model hurdle, yang bisa digunakan sebagai alternatif berdasarkan sifat data dan asumsi yang lebih sesuai.
Untuk data multivariate yang mengandung zero-inflation, glmmTMB
memungkinkan pemodelan beberapa respons dengan struktur zero-inflation yang sama atau berbeda. Hal ini berguna dalam analisis data yang melibatkan beberapa variabel respons yang saling terkait.
model_multivariate_zi <- glmmTMB(
cbind(count1, count2) ~ predictor1 + predictor2 + (1 | random_effect),
ziformula = ~ predictor3 + predictor4,
family = nbinom2,
data = dataset
)
Pemodelan multivariate ini memungkinkan pengguna untuk menangkap hubungan kompleks antara berbagai variabel respons sambil mengontrol zero-inflation secara efisien.
Selain data hitungan, model zero-inflated dapat diperluas untuk berbagai tipe data lainnya, seperti data kontinu yang mengandung banyak nol atau data kategorikal. Ini dilakukan dengan memilih keluarga distribusi yang sesuai dan menyesuaikan komponen model sesuai kebutuhan.
# Contoh model zero-inflated gaussian
model_zi_gaussian <- glmmTMB(
response ~ predictor1 + predictor2 + (1 | random_effect),
ziformula = ~ predictor3,
family = gaussian(),
data = dataset
)
Dengan demikian, fleksibilitas glmmTMB
memungkinkan pengguna untuk menerapkan konsep zero-inflated pada berbagai jenis data sesuai dengan kebutuhan analisis.
Zero-inflated models adalah alat penting dalam analisis data hitungan dengan kelebihan nol, memungkinkan pemisahan antara nol struktural dan nol sampling. Paket glmmTMB
menyediakan kerangka kerja yang fleksibel dan efisien untuk memodelkan data semacam ini, mendukung berbagai distribusi dan struktur efek acak. Dengan pemilihan model yang tepat dan diagnostik yang cermat, pengguna dapat memperoleh estimasi yang lebih akurat dan pemahaman yang lebih baik terhadap proses data. Selain itu, kemampuan untuk memperluas model dengan covariate tambahan, struktur multivariate, dan model tambahan seperti hurdle meningkatkan kegunaan glmmTMB
dalam berbagai aplikasi penelitian.