Suposições de regressão linear: como conduzi-las corretamente!

A regressão linear em si, é um conjunto de análises que busca avaliar se apenas uma ou mais variáveis ​​preditoras conseguem explicar a variável dependente (critério). A partir de agora veremos os detalhes das suposições de regressão linear e como conduzi-las corretamente. 

As Suposições de regressão linear

Construir um modelo de regressão linear é apenas metade do trabalho. Para ser realmente utilizável na prática, o modelo deve estar em conformidade com os pressupostos da regressão linear. Confira:

Suposição 1O modelo de regressão é linear em parâmetros

O modelo de regressão é linear em parâmetros. Um exemplo de equação do modelo que é linear nos parâmetros:

Y  =  a  + (β1*X1) + (β2*X2²)

Porém, o X2 é elevado à potência 2, a equação ainda é linear nos parâmetros beta. Portanto, a suposição é satisfeita neste caso.

Suposição 2 – A média dos resíduos é zero.

Como verificar? Verifique a média dos resíduos. Se for zero (ou muito próximo), essa suposição é considerada verdadeira para esse modelo. Este é o padrão, a menos que você faça correções explicitamente, como definir o termo de interceptação como zero. Veja:

mod <- lm(dist ~ speed, data=cars)
mean(mod$residuals)
#=> 2.442491e-17

Como a média dos resíduos é aproximadamente zero, esta suposição é verdadeira para este modelo.

Suposição 3 – Homocedasticidade de resíduos ou variância igual.

Como verificar? Uma vez que o modelo de regressão é construído, defina par (mfrow=c(2, 2)), em seguida, plote o modelo usando plot(lm.mod). Isso produz quatro plotagens. Os gráficos superior esquerdo e inferior esquerdo mostram como os resíduos variam conforme os valores ajustados aumentam:

par(mfrow=c(2,2))  # set 2 rows and 2 column plot layout
mod_1 <- lm(mpg ~ disp, data=mtcars)  # linear model
plot(mod_1)
Suposições de regressão linear

No primeiro gráfico (canto superior esquerdo), conforme os valores ajustados ao longo de x aumentam, os resíduos diminuem e, em seguida, aumentam. Esse padrão é indicado pela linha vermelha, que deve ser aproximadamente plana se os distúrbios forem homocedásticos. O gráfico na parte inferior esquerda também verifica isso, e é mais conveniente, pois o termo de perturbação no eixo Y é padronizado.

Nesse caso, há um padrão definido observado. Portanto, existe heterocedasticidade. Vamos verificar isso em um modelo diferente.

mod <- lm(dist ~ speed, data=cars[1:20, ])  #  linear model
plot(mod)
Suposições de regressão linear - Residuais

Agora, os pontos aparecem aleatórios e a linha parece bastante plana, sem tendência de aumento ou diminuição. Assim, a condição de homocedasticidade pode ser aceita.

Suposição 4 – Sem autocorrelação de resíduos

Isso é aplicável especialmente para dados de séries temporais. A autocorrelação é a correlação de uma série temporal com atrasos em si mesma. Quando os resíduos são autocorrelacionados, significa que o valor atual é dependente dos valores anteriores (históricos) e que existe um padrão inexplicável definido na variável Y que aparece nas perturbações.

Como verificar a autocorrelação?
Abaixo, estão 3 maneiras de verificar a autocorrelação de resíduos:

Usando acf plot

# Metodo 1: Visualise com acf plot
library(ggplot2)
data(economics)
lmMod <- lm(pce ~ pop, data=economics)
acf(lmMod$residuals)  # altamente autocorrelacionado da imagem.
Altamente autocorrelacionado da imagem. - acf-plot

O eixo X corresponde às defasagens do residual, aumentando em passos de 1. A primeiríssima linha (à esquerda) mostra a correlação do resíduo consigo mesmo (Lag 0), portanto, será sempre igual a 1.

Se os resíduos não foram autocorrelacionados, a correlação (eixo Y) da próxima linha imediata em diante cairá para um valor próximo de zero abaixo da linha azul tracejada (nível de significância). Claramente, este não é o caso aqui. Portanto, podemos concluir que os resíduos são autocorrelacionados.

Usando o teste de execução:

# Metodo 2: Executa o teste para testar a aleatoriedade
lawstat::runs.test(lmMod$residuals)
#=>   Runs Test - Two sided

#=> data:  lmMod$residuals
#=> Standardized Runs Statistic = -23.812, p-value < 2.2e-16

Com um valor de p <2,2e-16, rejeitamos a hipótese nula de que é aleatório. Isso significa que há um padrão definido nos resíduos.

Usando o teste Durbin-Watson:

# Metodo 3: Durbin-Watson test
e
lmtest::dwtest(lmMod)
#=>   Durbin-Watson test
e

#=> data:  lmMod
#=> DW = 0.0021559, p-value < 2.2e-16
#=> hipótese alternativa: a autocorrelação verdadeira é maior que 0

Portanto, dwtest também confirma nosso achado.

Como retificar?
Adicione lag1 de residual como uma variável X ao modelo original. Isso pode ser feito de forma conveniente usando a função slide no pacote DataCombine.

library(DataCombine)
econ_data <- data.frame(economics, resid_mod1=lmMod$residuals)
econ_data_1 <- slide(econ_data, Var="resid_mod1", NewVar = "lag1", slideBy = -1)
econ_data_2 <- na.omit(econ_data_1)
lmMod2 <- lm(pce ~ pop + lag1, data=econ_data_2)

Vamos verificar se o problema de autocorrelação de resíduos é resolvido usando este método.

Verifique 1

acf(lmMod2$residuals)
acf-plot2 - verificação

Ao contrário do gráfico acf de lmMod, os valores de correlação caem abaixo da linha azul tracejada do próprio lag1. Portanto, a autocorrelação não pode ser confirmada.

Verificar 2

runs.test(lmMod2$residuals)  # runs test
#=>   Runs Test - Two sided
#=> 
#=> data:  lmMod2$residuals
#=> Standardized Runs Statistic = 0.96176, p-value = 0.3362

valor de p = 0.3362. Não se pode rejeitar a hipótese nula de que é aleatório. Com um valor de p = 0.3362, não podemos rejeitar a hipótese nula. Portanto, podemos assumir com segurança que os resíduos não são autocorrelacionados.

Verificar 3

lmtest::dwtest(lmMod2)
#=>   Durbin-Watson test
e
#=> 
#=> data:  lmMod2
#=> DW = 2.0431, p-value = 0.6672
#=> hipótese alternativa: a autocorrelação verdadeira é maior que 0

Com um valor alto de p de 0,667, não podemos rejeitar a hipótese nula de que a verdadeira autocorrelação é zero. Portanto, a suposição de que os resíduos não devem ser autocorrelacionados é satisfeita por este modelo.

Se, mesmo depois de adicionar lag1 como uma variável X, não satisfizer a suposição de autocorrelação de resíduos, você pode tentar adicionar lag2 ou ser criativo ao criar variáveis ​​explicativas derivadas ou termos de interação significativos. Isso é mais como arte do que um algoritmo.

Suposição 5 – As variáveis ​​X e resíduos não estão correlacionados

Como verificar? Faça um teste de correlação na variável X e os resíduos:

mod.lm <- lm(dist ~ speed, data=cars)
cor.test(cars$speed, mod.lm$residuals)  # do correlation test 
#=>   Pearson's product-moment correlation
#=> 
#=> data:  cars$speed and mod.lm$residuals
#=> t = -8.1225e-17, df = 48, p-value = 1
#=> hipótese alternativa: a correlação verdadeira não é igual a 0
#=> Intervalo de confiança de 95 por cento:
#=> -0.2783477  0.2783477
#=> estimativas de amostra:
#=>           cor 
#=> -1.172376e-17

O valor p é alto, portanto, a hipótese nula de que a correlação verdadeira é 0 não pode ser rejeitada. Portanto, a suposição é verdadeira para este modelo.

Suposição 6

O número de observações deve ser maior que o número de Xs. Isso pode ser observado diretamente olhando os dados.

Suposição 7

A variabilidade nos valores de X é positiva. Isso significa que os valores X em uma determinada amostra não devem ser todos iguais (ou quase iguais).

Como verificar?

var(cars$speed)  
#=> [1] 27.95918

A variância na variável X acima é muito maior do que 0. Portanto, essa suposição é satisfeita.

Conclusão

Como disse na introdução, do meu ponto de vista, As suposições de regressão linear mais importantes são os da independência e da homogeneidade dos resíduos porque têm uma forte influência na estatística do teste de declive. A suposição de linearidade também é importante, mas acho que alguma flexibilidade pode ser mantida, assim como a suposição de normalidade.

Espero que este artigo seja útil para você e que lhe permita realizar suas regressões lineares nas melhores condições possíveis e que você saiba o que fazer e como fazer quando uma ou mais hipóteses não forem satisfeitas.

Compartilhe

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp
Share on print
imprimir
Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on print

O que achou deste artigo?

Leia também