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