Pressupostos dos modelos de regressão
Regressão Diagnóstico Pressupostos
Introdução
Você não precisa usar o R, mas provavelmente é uma boa ideia.
Os modelos de regressão linear são um dos melhores procedimentos estatísticos quando utilizados corretamente. Quando usados de uma forma ingênua, eles podem ser enganadores ou pouco informativos.
Como todos os métodos úteis, os modelos lineares têm limitações. Eles não podem ser utilizados em toda base de dados que você encontrar ai. Em algum momento você precisa avaliar os seu pressupostos.
Os intervalos de confiança e os testes estatísticos só serão válidos se essas premissas forem verdadeiras para os dados que estão sendo analisados. Isso porque que todos os testes e intervalos baseiam-se, nas suas equações, em erros e resíduos. Portanto, é necessário verificar se essas premissas estão presentes antes de analisar a regressão
Quando as pressuposições são violadas, a confiabilidade de todos os testes paramétricos ficam comprometidas podendo levar a falsas conclusões.
A função lm()
Os comandos lm() e summary() são uma combinação útil para produzir valores agregados ou resumidos de um bancos de dados.
Usaremos o banco de dados CARROS para essas atividades.
source('https://raw.githubusercontent.com/DATAUNIRIO/Miscellaneous_Functions_Rstats/master/CARROS.R',encoding = "UTF-8")
library(DT)
CARROS %>% datatable(options = list(pageLength = 5, dom = 'tip'),fillContainer = FALSE,
caption = 'Tabela 1: Base de dados CARROS.')
O modelo
fit <- lm(Kmporlitro~+HP+Peso+Amperagem_circ_eletrico, data=CARROS)
summary(fit)
Call:
lm(formula = Kmporlitro ~ +HP + Peso + Amperagem_circ_eletrico,
data = CARROS)
Residuals:
Min 1Q Median 3Q Max
-3.3598 -1.8374 -0.5099 0.9681 5.7078
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 29.394934 6.156303 4.775 5.13e-05 ***
HP -0.032230 0.008925 -3.611 0.001178 **
Peso -3.227954 0.796398 -4.053 0.000364 ***
Amperagem_circ_eletrico 1.615049 1.226983 1.316 0.198755
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.561 on 28 degrees of freedom
Multiple R-squared: 0.8369, Adjusted R-squared: 0.8194
F-statistic: 47.88 on 3 and 28 DF, p-value: 3.768e-11
Pressupostos da Regressão
- Linearidade
- Ausência de outliers e observações influentes
- Normalidade
- Variancia do erro constante
- Independência entre as observações
- Multicolinearidade (não é bem um pressuposto, mas deve ser avaliado)
Vou apresentar alguns procedimetos para avaliar um modelo de regressão. Todos os outros procedimentos podem ser vistos aqui. Esse artigo também está muito bom.
Os resíduos são normais
residuos<-residuals(fit)
shapiro.test(residuos)
Shapiro-Wilk normality test
data: residuos
W = 0.91718, p-value = 0.01744
Variancia constante
#Computes a score test of the hypothesis of constant error variance against the alternative that the error variance changes with the level of the response (fitted values), or with a linear combination of predictors.
library("lmtest")
bptest(fit, data = CARROS, studentize = TRUE)
studentized Breusch-Pagan test
data: fit
BP = 1.5987, df = 3, p-value = 0.6597
Outliers
library(car)
outlierTest(fit)
No Studentized residuals with Bonferroni p < 0.05
Largest |rstudent|:
rstudent unadjusted p-value Bonferroni p
Toyota Corolla 2.576771 0.015758 0.50427
Um pacote do para diagnóstico de modelos de regressão
A função gvlma() no pacote gvlma realiza uma validação global dos pressupostos de modelos lineares, bem como avaliações separadas de assimetria, curtose e heterocedasticidade.
# Global test of model assumptions
library(gvlma)
gvmodel <- gvlma(fit)
summary(gvmodel)
Call:
lm(formula = Kmporlitro ~ +HP + Peso + Amperagem_circ_eletrico,
data = CARROS)
Residuals:
Min 1Q Median 3Q Max
-3.3598 -1.8374 -0.5099 0.9681 5.7078
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 29.394934 6.156303 4.775 5.13e-05 ***
HP -0.032230 0.008925 -3.611 0.001178 **
Peso -3.227954 0.796398 -4.053 0.000364 ***
Amperagem_circ_eletrico 1.615049 1.226983 1.316 0.198755
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.561 on 28 degrees of freedom
Multiple R-squared: 0.8369, Adjusted R-squared: 0.8194
F-statistic: 47.88 on 3 and 28 DF, p-value: 3.768e-11
ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
Level of Significance = 0.05
Call:
gvlma(x = fit)
Value p-value Decision
Global Stat 13.852150 0.007782 Assumptions NOT satisfied!
Skewness 4.280466 0.038553 Assumptions NOT satisfied!
Kurtosis 0.008505 0.926519 Assumptions acceptable.
Link Function 8.802895 0.003008 Assumptions NOT satisfied!
Heteroscedasticity 0.760284 0.383240 Assumptions acceptable.
Duas referências: * https://www.statmethods.net/stats/rdiagnostics.html *http://r-statistics.co/Assumptions-of-Linear-Regression.html
Para fazer o download do banco de dados CARROS (e outros), copie e cole no R um desses dois códigos abaixo.
Código 1 - sem instalação de pacotes (para usuários do windows)
source('https://raw.githubusercontent.com/DATAUNIRIO/aulauniriov2/master/download_das_bases_de_dados_do_curso_de_estatistica.R')
Código 2 - necessário instalar o pacote usethis (para usuários do macOS/apple, linux ou windows)
install.packages("usethis")
usethis::use_course("https://github.com/DATAUNIRIO/Base_de_dados/archive/master.zip")
Para saber sobre outras funções no R e no Python, você pode acessar o meu blog https://blog.metodosquantitativos.com/ ou o meu site pessoal https://steven.metodosquantitativos.com/