Ось що мені зазвичай подобається робити (для ілюстрації я використовую наддисперсні і не дуже легко модельовані дані про квочки днів учнів, відсутніх у школі MASS
):
Перевірте та графічте вихідні дані підрахунку , побудувавши спостережувані частоти та встановлені частоти (див. Розділ 2 у Дружньому ), який підтримується vcd
пакетом R
у великих частинах. Наприклад, з goodfit
і a rootogram
:
library(MASS)
library(vcd)
data(quine)
fit <- goodfit(quine$Days)
summary(fit)
rootogram(fit)
або з графіками Орда, які допомагають визначити, яка модель даних підрахунку лежить в основі (наприклад, тут нахил є позитивним і перехоплення позитивним, що говорить про негативний біноміальний розподіл):
Ord_plot(quine$Days)
або з сюжетами "XXXXXXness", де XXXXX - це розподіл за вибором, скажімо про сюжет Пуассонесса (який говорить проти Пуассона, спробуйте також type="nbinom"
):
distplot(quine$Days, type="poisson")
Перевірте звичайні показники корисності придатності (такі як статистика ймовірності відносно нульової моделі чи подібних):
mod1 <- glm(Days~Age+Sex, data=quine, family="poisson")
summary(mod1)
anova(mod1, test="Chisq")
Перевірте наявність надмірної / меншої дисперсії, ознайомившись з residual deviance/df
офіційною статистикою тесту (наприклад, див. Цю відповідь ). Тут ми маємо явно перевищення:
library(AER)
deviance(mod1)/mod1$df.residual
dispersiontest(mod1)
Перевірте наявність впливових та важельних точок , наприклад, із упаковкою influencePlot
в car
упаковці. Звичайно, тут багато моментів дуже впливають, тому що Пуассон - це погана модель:
library(car)
influencePlot(mod1)
Перевірте нульову інфляцію , встановивши модель даних про підрахунок та її аналог з нульовим надуванням / перешкодою та порівняйте їх (як правило, з AIC). Тут нульова завищена модель підходила б краще, ніж проста Пуассона (знову ж, мабуть, через перевищення):
library(pscl)
mod2 <- zeroinfl(Days~Age+Sex, data=quine, dist="poisson")
AIC(mod1, mod2)
Накресліть залишки (необроблені, відхилені або масштабовані) на осі y порівняно з прогнозованими значеннями (log) (або лінійним предиктором) на осі x. Тут ми бачимо кілька дуже великих залишків і істотне відхилення залишків відхилення від норми (виступаючи проти Пуассона; Редагувати: @ Відповідь Флоріана Гартіга говорить про те, що нормальності цих залишків не слід очікувати, тому це не є переконливою підказкою):
res <- residuals(mod1, type="deviance")
plot(log(predict(mod1)), res)
abline(h=0, lty=2)
qqnorm(res)
qqline(res)
Якщо цікавить, побудуйте половину нормальної діаграми ймовірності залишків, побудувавши впорядковані абсолютні залишки проти очікуваних нормальних значень Аткінсона (1981) . Особливістю буде моделювати довідкову лінію та конверт із змодельованими / завантаженими довірчими інтервалами (не показано, однак):
library(faraway)
halfnorm(residuals(mod1))
Діагностичні графіки для лінійних моделей журналів для даних лічильників (див. Глави 7.2 та 7.7 в книзі Дружнього). Сюжет передбачив порівняно зі спостережуваними значеннями, можливо, з деякою інтервальною оцінкою (я робив саме для вікових груп - тут ми знову бачимо, що ми досить далеко за нашими оцінками через перевищення, можливо, у групі F3. Рожеві точки є точкове прогнозування одна стандартна помилка):±
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)
Це повинно дати вам багато корисної інформації про ваш аналіз і більшість кроків роботи для всіх стандартних розподілів даних підрахунку (наприклад, Пуассон, Негативний Біном, COM Поассон, Закони про владу).