- Configuração
- Examinar os dados
- Ajustar o modelo
- Verificação dos pressupostos do modelo
- Interpretação dos resultados do modelo
- Avaliação da adequação do modelo
- Utilizar o modelo para fazer previsões
Este guia apresenta um exemplo de como efetuar uma regressão linear múltipla em R, incluindo:
- Examinar os dados antes de ajustar o modelo
- Ajustar o modelo
- Verificação dos pressupostos do modelo
- Interpretar os resultados do modelo
- Avaliação da adequação do modelo
- Utilizar o modelo para fazer previsões
Vamos lá!
Configuração
Para este exemplo, vamos utilizar o conjunto de dados incorporado no R mtcars que contém informações sobre vários atributos de 32 automóveis diferentes:
#ver as primeiras seis linhas de mtcars head(mtcars) # mpg cyl disp hp drat wt qsec vs am gear carb #Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 #Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 #Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 #Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 #Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 #Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Neste exemplo, vamos construir um modelo de regressão linear múltipla que utiliza mpg como variável de resposta e disp , hp e rata como variáveis de previsão.
#criar uma nova estrutura de dados que contenha apenas as variáveis que gostaríamos de utilizar para os dados <- mtcars[ , c("mpg", "disp", "hp", "drat")] #ver as primeiras seis linhas da nova estrutura de dados head(data) # mpg disp hp drat #Mazda RX4 21.0 160 110 3.90 #Mazda RX4 Wag 21.0 160 110 3.90 #Datsun 710 22.8 108 93 3.85 #Hornet 4 Drive 21.4 258 110 3.08 #Hornet Sportabout 18.7 360 175 3.15 #Valiant 18.1 225 105 2.76
Examinar os dados
Antes de ajustarmos o modelo, podemos examinar os dados para os compreender melhor e também avaliar visualmente se a regressão linear múltipla pode ou não ser um bom modelo para ajustar a estes dados.
Em particular, precisamos de verificar se as variáveis preditoras têm um linear associação com a variável de resposta, o que indicaria que um modelo de regressão linear múltipla pode ser adequado.
Para o fazer, podemos utilizar o pares() para criar um gráfico de dispersão de todos os pares de variáveis possíveis:
pairs(data, pch = 18, col = "steelblue")
A partir deste gráfico de pares, podemos ver o seguinte:
- mpg e disp parecem ter uma forte correlação linear negativa
- mpg e hp parecem ter uma forte correlação linear positiva
- mpg e rata parecem ter uma correlação linear negativa modesta
Note que também poderíamos usar o ggpairs() da função GGally para criar um gráfico semelhante que contenha os coeficientes de correlação linear reais para cada par de variáveis:
#instalar e carregar o GGally library install.packages("GGally") library(GGally) #gerar o gráfico de pares ggpairs(data)
Cada uma das variáveis preditoras parece ter uma correlação linear notável com a variável de resposta mpg e, por isso, vamos proceder ao ajuste do modelo de regressão linear aos dados.
Ajustar o modelo
A sintaxe básica para ajustar um modelo de regressão linear múltipla em R é a seguinte:
lm(variável_resposta ~ variável_preditor1 + variável_preditor2 + ..., dados = dados)
Utilizando os nossos dados, podemos ajustar o modelo utilizando o seguinte código:
model <- lm(mpg ~ disp + hp + drat, data = data)
Verificação dos pressupostos do modelo
Antes de procedermos à verificação dos resultados do modelo, é necessário verificar primeiro se os pressupostos do modelo são respeitados, nomeadamente o seguinte:
1) A distribuição dos resíduos do modelo deve ser aproximadamente normal.
Podemos verificar se este pressuposto é cumprido criando um histograma simples de resíduos:
hist(resíduos(modelo), col = "steelblue")
Embora a distribuição seja ligeiramente enviesada para a direita, não é suficientemente anormal para causar grandes preocupações.
2) A variância dos resíduos deve ser consistente para todas as observações.
A violação deste pressuposto é conhecida como heteroscedasticidade.
Para verificar se este pressuposto é cumprido, podemos criar um valor ajustado vs. gráfico residual:
#criar valor ajustado vs gráfico residual plot(fitted(model), residuals(model)) #adicionar linha horizontal em 0 abline(h = 0, lty = 2)
Podemos ver no gráfico que a dispersão tende a tornar-se um pouco maior para valores ajustados maiores, mas este padrão não é suficientemente extremo para causar demasiada preocupação.
Interpretação dos resultados do modelo
Depois de verificarmos que os pressupostos do modelo são suficientemente cumpridos, podemos ver o resultado do modelo utilizando a função resumo() função:
summary(model) #Call: #lm(formula = mpg ~ disp + hp + drat, data = data) # #Residuals: # Min 1Q Median 3Q Max #-5.1225 -1.8454 -0.4456 1.1342 6.4958 # #Coefficients: # Estimate Std. Error t value Pr(>0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 ' ' 1 # #Erro padrão residual: 3,008 em 28 graus de liberdade #Múltiplo R-quadrado: 0,775, R-quadrado ajustado: 0,7509 #Estatística F: 32,15 em 3 e 28 DF, valor p: 3,28e-09
A partir do resultado, podemos ver o seguinte:
- A estatística F global do modelo é 32.15 e o valor p correspondente é 3.28e-09 Isto indica que o modelo global é estatisticamente significativo. Por outras palavras, o modelo de regressão no seu conjunto é útil.
- disp é estatisticamente significativo ao nível de significância de 0,10. Em particular, o coeficiente do modelo de saída indica que um aumento de uma unidade em disp está associada a uma diminuição de -0,019 unidades, em média, em mpg , assumindo que hp e rata são mantidos constantes.
- hp é estatisticamente significativo ao nível de significância de 0,10. Em particular, o coeficiente do modelo de saída indica que um aumento de uma unidade em hp está associado a uma diminuição de -0,031 unidades, em média, em mpg , assumindo que disp e rata são mantidos constantes.
- rata é estatisticamente significativo ao nível de significância de 0,10. Em particular, o coeficiente do modelo de saída indica que um aumento de uma unidade em rata está associado a um aumento de 2,715 unidades, em média, em mpg , assumindo que disp e hp são mantidos constantes.
Avaliação da adequação do modelo
Para avaliar o quão "bom" é o modelo de regressão que se ajusta aos dados, podemos olhar para algumas métricas diferentes:
1. múltiplo R-quadrado
Um R-quadrado múltiplo de 1 indica uma relação linear perfeita, enquanto um R-quadrado múltiplo de 0 indica que não existe qualquer relação linear.
O R múltiplo é também a raiz quadrada do R-quadrado, que é a proporção da variância na variável de resposta que pode ser explicada pelas variáveis preditoras. Neste exemplo, o R-quadrado múltiplo é 0.775 Assim, o R-quadrado é 0,7752 = 0.601 Isto indica que 60.1% da variância em mpg pode ser explicado pelos factores de previsão do modelo.
Relacionadas: O que é um bom valor R-quadrado?
2. erro padrão residual
Este valor mede a distância média a que os valores observados se afastam da reta de regressão. Neste exemplo, os valores observados afastam-se em média de 3.008 unidades da reta de regressão .
Relacionadas: Compreender o erro padrão da regressão
Utilizar o modelo para fazer previsões
A partir do resultado do modelo, sabemos que a equação de regressão linear múltipla ajustada é a seguinte
mpg chapéu = -19,343 - 0,019*disp - 0,031*hp + 2,715*drat
Podemos utilizar esta equação para fazer previsões sobre o que mpg Por exemplo, podemos encontrar o valor previsto de mpg para um automóvel que tenha os seguintes atributos:
- disp = 220
- hp = 150
- rata = 3
#definir os coeficientes do modelo de saída intercept <- coef(summary(model))["(Intercept)", "Estimate"] disp <- coef(summary(model))["disp", "Estimate"] hp <- coef(summary(model))["hp", "Estimate"] drat <- coef(summary(model))["drat", "Estimate"] #utilizar os coeficientes do modelo para prever o valor de mpg interceção + disp*220 + hp*150 + drat*3 # 18,57373
Para um automóvel com disp = 220, hp = 150, e rata = 3, o modelo prevê que o automóvel teria um mpg de 18.57373 .
Pode encontrar o código R completo utilizado neste tutorial aqui.