Diagnóstico de regressão no R
Uma excelente análise dos diagnósticos de regressão é fornecida no livro Overview of Regression Diagnostics (Visão geral dos diagnósticos de regressão), de John Fox . Dr. O pacote car da Fox oferece utilitários avançados para modelagem de regressão.
# Assume that we are fitting a multiple linear regression
#
on the MTCARS data
library(car)
fit <- lm(mpg~disp+hp+wt+drat, data=mtcars)
Este exemplo é apenas para fins de exposição. Ignoraremos o fato de que essa pode não ser uma ótima maneira de modelar esse conjunto específico de dados!
Excedentes
# 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
Observações 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" )
Não normalidade
# 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)
Variância de erro não constante
# Evaluate homoscedasticity
# non-constant error variance test
ncvTest(fit)
# plot
studentized residuals vs. fitted values
spreadLevelPlot(fit)
Multi-colinearidade
# Evaluate Collinearity
vif(fit) # variance inflation factors
sqrt(vif(fit)) > 2 # problem?
Não linearidade
# Evaluate Nonlinearity
# component + residual plot
crPlots(fit)
# Ceres plots
ceresPlots(fit)
Não-independência de erros
# Test for Autocorrelated Errors
durbinWatsonTest(fit)
Ajuda adicional para diagnóstico
A função gvlma( ) do pacote gvlma executa uma validação global das suposições do modelo linear, bem como avaliações separadas de distorção, curtose e heterocedasticidade.
# Global test of model assumptions
library(gvlma)
gvmodel <- gvlma(fit)
summary(gvmodel)
Indo além
Se você quiser se aprofundar no diagnóstico de regressão, dois livros escritos por John Fox podem ajudar: Applied regression analysis and generalized linear models (2ª ed) e An R and S-Plus companion to applied regression.