Voici ce que j'aime habituellement faire (à titre d'illustration, j'utilise les données quine surdispersées et difficilement modélisées des jours d'absence de l'école MASS
):
Testez et tracez graphiquement les données de comptage d'origine en traçant les fréquences observées et les fréquences ajustées (voir le chapitre 2 dans Amical ), qui sont prises en charge par le vcd
package R
en grande partie. Par exemple, avec goodfit
et a rootogram
:
library(MASS)
library(vcd)
data(quine)
fit <- goodfit(quine$Days)
summary(fit)
rootogram(fit)
ou avec des tracés Ord qui aident à identifier quel modèle de données de comptage est sous-jacent (par exemple, ici, la pente est positive et l'interception est positive, ce qui parle d'une distribution binomiale négative):
Ord_plot(quine$Days)
ou avec les tracés "XXXXXXness" où XXXXX est la distribution de choix, par exemple le tracé Poissoness (qui parle contre Poisson, essayez également type="nbinom"
):
distplot(quine$Days, type="poisson")
Inspectez les mesures habituelles de qualité de l'ajustement (telles que les statistiques du rapport de probabilité par rapport à un modèle nul ou similaire):
mod1 <- glm(Days~Age+Sex, data=quine, family="poisson")
summary(mod1)
anova(mod1, test="Chisq")
Vérifiez la surdispersion / sous-dispersion en consultant residual deviance/df
ou en consultant une statistique de test formel (par exemple, reportez-vous à cette réponse ). Ici, nous avons clairement une surdispersion:
library(AER)
deviance(mod1)/mod1$df.residual
dispersiontest(mod1)
Vérifiez les points d'influence et de levier , par exemple avec influencePlot
le car
contenu de l' emballage. Bien entendu, de nombreux points ont une grande influence car Poisson est un mauvais modèle:
library(car)
influencePlot(mod1)
Vérifiez que l’ inflation n’est pas nulle en ajustant un modèle de données de comptage et son équivalent zéro / non corrigé et comparez-les (généralement avec AIC). Ici, un modèle à zéro gonflé conviendrait mieux que le simple Poisson (encore probablement en raison d'une surdispersion):
library(pscl)
mod2 <- zeroinfl(Days~Age+Sex, data=quine, dist="poisson")
AIC(mod1, mod2)
Tracez les résidus (bruts, déviance ou mis à l'échelle) sur l'axe des y par rapport aux valeurs prédites (log) (ou le prédicteur linéaire) sur l'axe des x. Nous voyons ici des résidus très importants et une déviance substantielle des résidus de déviance par rapport à la normale (parlant contre le Poisson; Edit: @ La réponse de FlorianHartig suggère qu'il ne faut pas s'attendre à une normalité de ces résidus, ce n'est donc pas un indice décisif):
res <- residuals(mod1, type="deviance")
plot(log(predict(mod1)), res)
abline(h=0, lty=2)
qqnorm(res)
qqline(res)
Si cela vous intéresse, tracez un graphique de probabilité demi-normale des résidus en traçant les résidus absolus ordonnés par rapport aux valeurs normales attendues Atkinson (1981) . Une fonction spéciale serait de simuler une "ligne" de référence et une enveloppe avec des intervalles de confiance simulés / initialisés (non représentés cependant):
library(faraway)
halfnorm(residuals(mod1))
Tracés de diagnostic pour les modèles log-linéaires pour les données de comptage (voir les chapitres 7.2 et 7.7 du livre de Friendly). Les valeurs prédites de la parcelle par rapport aux valeurs observées sont peut-être associées à une estimation d'intervalle (ce que je viens de faire pour les groupes d'âge - nous voyons encore une fois que nous sommes assez loin de nos estimations en raison de la surdispersion, à part peut-être dans le groupe F3. Les points roses sont la prédiction de points une erreur standard):±
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)
Cela devrait vous fournir une grande partie des informations utiles sur votre analyse et la plupart des étapes fonctionnent pour toutes les distributions de données de comptage standard (par exemple, Poisson, Binôme négatif, COM Poisson, Lois de puissance).