Diagnostics de régression dans R
L'ouvrage de John Fox, intitulé Overview of Regression Diagnostics (Aperçu des diagnostics de régression), constitue une excellente étude des diagnostics de régression. Dr. Le progiciel Fox's car fournit des utilitaires avancés pour la modélisation de la régression.
# Assume that we are fitting a multiple linear regression
#
on the MTCARS data
library(car)
fit <- lm(mpg~disp+hp+wt+drat, data=mtcars)
Cet exemple n'a qu'une valeur indicative. Nous ne tiendrons pas compte du fait qu'il ne s'agit peut-être pas d'une bonne façon de modéliser cet ensemble particulier de données !
Valeurs aberrantes
# Assessing Outliers
outlierTest(fit) # Bonferonni p-value for most extreme obs
qqPlot(fit, main="QQ Plot") #qq plot for studentized resid
leveragePlots(fit) # leverage plots
Observations influentes
# Influential Observations
# added variable plots
av.Plots(fit)
# Cook's D plot
# identify D values > 4/(n-k-1)
cutoff <- 4/((nrow(mtcars)-length(fit$coefficients)-2))
plot(fit, which=4, cook.levels=cutoff)
# Influence Plot
influencePlot(fit, id.method="identify", main="Influence Plot", sub="Circle size is proportial to Cook's Distance" )
Non-normalité
# Normality of Residuals
# qq plot for studentized resid
qqPlot(fit, main="QQ Plot")
# distribution of studentized residuals
library(MASS)
sresid <- studres(fit)
hist(sresid, freq=FALSE,
main="Distribution of Studentized Residuals")
xfit<-seq(min(sresid),max(sresid),length=40)
yfit<-dnorm(xfit)
lines(xfit, yfit)
Variance d'erreur non constante
# Evaluate homoscedasticity
# non-constant error variance test
ncvTest(fit)
# plot
studentized residuals vs. fitted values
spreadLevelPlot(fit)
Multi-collinéarité
# Evaluate Collinearity
vif(fit) # variance inflation factors
sqrt(vif(fit)) > 2 # problem?
Non-linéarité
# Evaluate Nonlinearity
# component + residual plot
crPlots(fit)
# Ceres plots
ceresPlots(fit)
Non-indépendance des erreurs
# Test for Autocorrelated Errors
durbinWatsonTest(fit)
Aide supplémentaire au diagnostic
La fonction gvlma( ) du package gvlma effectue une validation globale des hypothèses du modèle linéaire ainsi que des évaluations séparées de l'asymétrie, de l'aplatissement et de l'hétéroscédasticité.
# Global test of model assumptions
library(gvlma)
gvmodel <- gvlma(fit)
summary(gvmodel)
Aller plus loin
Si vous souhaitez approfondir les diagnostics de régression, deux livres écrits par John Fox peuvent vous aider : Analyse de régression appliquée et modèles linéaires généralisés (2e édition) et Un compagnon R et S-Plus pour la régression appliquée.