Inilah yang biasanya saya sukai (untuk ilustrasi saya menggunakan data quine yang terlalu banyak disebarkan dan tidak mudah dimodelkan dari hari-hari murid absen dari sekolah MASS
):
Tes dan grafik data penghitungan asli dengan memplot frekuensi yang diamati dan frekuensi yang sesuai (lihat bab 2 dalam Friendly ) yang didukung oleh vcd
paket dalam R
sebagian besar. Misalnya, dengan goodfit
dan rootogram
:
library(MASS)
library(vcd)
data(quine)
fit <- goodfit(quine$Days)
summary(fit)
rootogram(fit)
atau dengan plot Ord yang membantu mengidentifikasi model data hitungan mana yang mendasarinya (misalnya, di sini kemiringan positif dan intersepnya positif yang berbicara untuk distribusi binomial negatif):
Ord_plot(quine$Days)
atau dengan plot "XXXXXXness" di mana XXXXX adalah distribusi pilihan, katakan plot Poissoness (yang berbicara menentang Poisson, coba juga type="nbinom"
):
distplot(quine$Days, type="poisson")
Periksa pengukuran good-of-fit yang biasa (seperti statistik rasio kemungkinan vs model nol atau serupa):
mod1 <- glm(Days~Age+Sex, data=quine, family="poisson")
summary(mod1)
anova(mod1, test="Chisq")
Periksa over / underdispersion dengan melihat residual deviance/df
atau pada statistik uji formal (misalnya, lihat jawaban ini ). Di sini kami memiliki penayangan berlebih:
library(AER)
deviance(mod1)/mod1$df.residual
dispersiontest(mod1)
Periksa poin pengaruh dan pengaruh , misalnya, dengan yang ada influencePlot
dalam car
paket. Tentu saja di sini banyak poin yang sangat berpengaruh karena Poisson adalah model yang buruk:
library(car)
influencePlot(mod1)
Periksa nol inflasi dengan memasang model data hitungan dan mitra zeroinflated / hurdle dan membandingkannya (biasanya dengan AIC). Di sini model nol yang digelembungkan akan lebih cocok daripada Poisson sederhana (sekali lagi mungkin karena penyebaran berlebihan):
library(pscl)
mod2 <- zeroinfl(Days~Age+Sex, data=quine, dist="poisson")
AIC(mod1, mod2)
Plot residual (mentah, penyimpangan atau diskalakan) pada sumbu y vs nilai prediksi (log) (atau prediktor linier) pada sumbu x. Di sini kita melihat beberapa residu yang sangat besar dan penyimpangan substansial residu penyimpangan dari normal (berbicara melawan Poisson; Edit: @ FlorianHartig menjawab bahwa normalitas residu ini tidak diharapkan sehingga ini bukan petunjuk konklusif):
res <- residuals(mod1, type="deviance")
plot(log(predict(mod1)), res)
abline(h=0, lty=2)
qqnorm(res)
qqline(res)
Jika berminat, plot setengah plot probabilitas normal residual dengan memplot residu absolut terurut vs. nilai normal yang diharapkan Atkinson (1981) . Fitur khusus akan mensimulasikan 'garis' referensi dan amplop dengan interval kepercayaan yang disimulasikan / dibooting (tidak ditampilkan):
library(faraway)
halfnorm(residuals(mod1))
±
plot(Days~Age, data=quine)
prs <- predict(mod1, type="response", se.fit=TRUE)
pris <- data.frame("pest"=prs[[1]], "lwr"=prs[[1]]-prs[[2]], "upr"=prs[[1]]+prs[[2]])
points(pris$pest ~ quine$Age, col="red")
points(pris$lwr ~ quine$Age, col="pink", pch=19)
points(pris$upr ~ quine$Age, col="pink", pch=19)
Ini akan memberi Anda banyak informasi berguna tentang analisis Anda dan sebagian besar langkah berfungsi untuk semua distribusi data jumlah standar (misalnya, Poisson, Binomial Negatif, COM Poisson, Power Laws).
Untuk pendekatan menggunakan plot diagnostik standar tetapi ingin tahu seperti apa bentuknya, saya suka makalahnya:
Salah satu pendekatan yang disebutkan di sana adalah untuk membuat beberapa set data simulasi di mana asumsi-asumsi yang menarik adalah benar dan membuat plot diagnostik untuk set data-data yang disimulasikan ini dan juga membuat plot diagnostik untuk data nyata. letakkan semua plot ini di layar pada saat yang sama (secara acak menempatkan plot berdasarkan data nyata). Sekarang Anda memiliki referensi visual tentang seperti apa plot seharusnya dan jika asumsi berlaku untuk data nyata maka plot tersebut akan terlihat seperti yang lain (jika Anda tidak tahu mana data sebenarnya, maka asumsi yang diuji kemungkinan dekat) cukup untuk benar), tetapi jika plot data nyata terlihat jelas berbeda dari yang lain, maka itu berarti bahwa setidaknya satu asumsi tidak berlaku. The
vis.test
fungsi dalam paket TeachingDemos untuk R membantu menerapkan ini sebagai ujian.sumber
Ini adalah pertanyaan lama, tetapi saya pikir akan bermanfaat untuk menambahkan bahwa paket DHARMa R saya (tersedia dari CRAN, lihat di sini ) sekarang menyediakan residu standar untuk GLM dan GLMM, berdasarkan pada pendekatan simulasi yang serupa dengan apa yang disarankan oleh @GregSnow .
Dari deskripsi paket:
@Momo - Anda mungkin ingin memperbarui rekomendasi Anda 6, itu menyesatkan. Normalitas residual penyimpangan pada umumnya tidak diharapkan di bawah Poisson , seperti yang dijelaskan dalam sketsa DHARMa atau di sini ; dan melihat residu penyimpangan (atau residual standar lainnya) yang berbeda dari garis lurus dalam plot qqnorm karena itu pada umumnya tidak ada perhatian sama sekali . Paket DHARMa menyediakan plot qq yang dapat diandalkan untuk mendiagnosis penyimpangan dari Poisson atau keluarga GLM lainnya. Saya telah membuat contoh yang menunjukkan masalah dengan residu penyimpangan di sini .
sumber
Ada fungsi yang disebut
glm.diag.plots
dalam paketboot
, untuk menghasilkan plot diagnostik untuk GLM. Apa fungsinya:sumber