Como realizar regressão linear múltipla em r
Este guia mostra um exemplo de como realizar regressão linear múltipla em R, incluindo:
- Examine os dados antes de ajustar o modelo
- Ajuste do modelo
- Verificando as suposições do modelo
- Interpretando a saída do modelo
- Avaliando a qualidade do ajuste do modelo
- Use o modelo para fazer previsões
Vamos!
Instalação
Para este exemplo, usaremos o conjunto de dados R integrado mtcars , que contém informações sobre vários atributos de 32 carros diferentes:
#view first six lines of 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, construiremos um modelo de regressão linear múltipla que usa mpg como variável de resposta e disp , hp e drat como variáveis preditoras.
#create new data frame that contains only the variables we would like to use to data <- mtcars[, c("mpg", "disp", "hp", "drat")] #view first six rows of new data frame 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
Revisão de dados
Antes de ajustar o modelo, podemos olhar os dados para entendê-los melhor e também avaliar visualmente se a regressão linear múltipla poderia ou não ser um bom modelo para ajustar esses dados.
Em particular, precisamos verificar se as variáveis preditoras têm uma associação linear com a variável resposta, o que indicaria que um modelo de regressão linear múltipla pode ser adequado.
Para fazer isso, podemos usar a função pairs() para criar um gráfico de dispersão de cada par possível de variáveis:
pairs(data, pch = 18, col = "steelblue")
A partir deste gráfico de pares, podemos ver o seguinte:
- mpg e disponibilidade parecem ter uma forte correlação linear negativa
- mpg e hp parecem ter uma forte correlação linear positiva
- mpg e drat parecem ter uma correlação linear negativa modesta
Observe que também poderíamos usar a função ggpairs() da biblioteca GGally para criar um gráfico semelhante contendo os coeficientes de correlação linear reais para cada par de variáveis:
#install and load the GGally library install.packages("GGally") library(GGally) #generate the pairs plot ggpairs(data)
Cada uma das variáveis preditoras parece ter uma correlação linear notável com a variável de resposta mpg , portanto, procederemos ao ajuste do modelo de regressão linear aos dados.
Ajuste do modelo
A sintaxe básica para ajustar um modelo de regressão linear múltipla em R é:
lm(response_variable ~ predictor_variable1 + predictor_variable2 + ..., data = data)
Usando nossos dados, podemos ajustar o modelo usando o seguinte código:
model <- lm(mpg ~ disp + hp + drat, data = data)
Verificando as suposições do modelo
Antes de proceder à verificação dos resultados do modelo, devemos primeiro verificar se as premissas do modelo foram atendidas. Ou seja, precisamos verificar o seguinte:
1. A distribuição dos resíduos do modelo deve ser aproximadamente normal.
Podemos verificar se esta suposição é atendida criando um histograma simples de resíduos:
hist(residuals(model), col = "steelblue")
Embora a distribuição seja ligeiramente distorcida para a direita , não é anormal o suficiente para causar grande preocupação.
2. A variância dos resíduos deve ser consistente para todas as observações.
Esta condição preferida é conhecida como homocedasticidade. A violação desta suposição é conhecida como heterocedasticidade .
Para verificar se esta suposição é atendida, podemos criar um gráfico de valor ajustado/residual:
#create fitted value vs residual plot plot(fitted(model), residuals(model)) #add horizontal line at 0 abline(h = 0, lty = 2)
Idealmente, gostaríamos que os resíduos fossem igualmente dispersos em cada valor ajustado. Podemos ver no gráfico que a dispersão tende a ficar um pouco maior para valores ajustados maiores, mas esta tendência não é extrema o suficiente para causar muita preocupação.
Interpretando a saída do modelo
Depois de verificarmos que as suposições do modelo foram suficientemente atendidas, podemos examinar a saída do modelo usando a função summary() :
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(>|t|) #(Intercept) 19.344293 6.370882 3.036 0.00513 ** #disp -0.019232 0.009371 -2.052 0.04960 * #hp -0.031229 0.013345 -2.340 0.02663 * #drat 2.714975 1.487366 1.825 0.07863 . #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # #Residual standard error: 3.008 on 28 degrees of freedom #Multiple R-squared: 0.775, Adjusted R-squared: 0.7509 #F-statistic: 32.15 on 3 and 28 DF, p-value: 3.28e-09
Do resultado podemos ver o seguinte:
- A estatística F geral do modelo é 32,15 e o valor p correspondente é 3,28e-09 . Isso indica que o modelo geral é estatisticamente significativo. Em outras palavras, o modelo de regressão como um todo é útil.
- disp é estatisticamente significativo ao nível de significância de 0,10. Em particular, o coeficiente dos resultados do modelo indica que um aumento de uma unidade na disponibilidade está associado a uma diminuição de -0,019 unidades, em média, em mpg , assumindo que a potência e o consumo de combustível permanecem constantes. .
- hp é estatisticamente significativo ao nível de significância de 0,10. Em particular, o coeficiente dos resultados do modelo indica que um aumento de uma unidade na potência está associado a uma diminuição de -0,031 unidades, em média, em mpg , assumindo que disp e drat permanecem constantes.
- drat é estatisticamente significativo ao nível de significância de 0,10. Em particular, o coeficiente dos resultados do modelo indica que um aumento de uma unidade no consumo de gasolina está associado a um aumento médio de 2.715 unidades de mpg , assumindo que a vazão e a potência permanecem constantes.
Avaliando a qualidade do ajuste do modelo
Para avaliar quão bem o modelo de regressão se ajusta aos dados, podemos observar algumas métricas diferentes:
1. Múltiplos R-quadrados
Isso mede a força da relação linear entre as variáveis preditoras e a variável resposta. Um múltiplo R ao quadrado de 1 indica uma relação linear perfeita, enquanto um múltiplo R ao quadrado de 0 indica nenhuma relação linear.
Múltiplo R também é a raiz quadrada de R ao quadrado, que é a proporção da variância na variável de resposta que pode ser explicada pelas variáveis preditoras. Neste exemplo, o múltiplo de R ao quadrado é 0,775 . Portanto, o R ao quadrado é 0,775 2 = 0,601 . Isso indica que 60,1% da variação em mpg pode ser explicada pelos preditores do modelo.
Relacionado: O que é um bom valor de R ao quadrado?
2. Erro padrão residual
Mede a distância média entre os valores observados e a linha de regressão. Neste exemplo, os valores observados desviam em média 3,008 unidades da reta de regressão .
Relacionado: Compreendendo o erro padrão da regressão
Use o modelo para fazer previsões
A partir dos resultados do modelo, sabemos que a equação de regressão linear múltipla ajustada é:
chapéu mpg = -19,343 – 0,019*disp – 0,031*hp + 2,715*drat
Podemos usar esta equação para fazer previsões sobre qual será o mpg para novas observações . Por exemplo, podemos encontrar o valor de mpg previsto para um carro que possui os seguintes atributos:
- exibição = 220
- pc = 150
- droga = 3
#define the coefficients from the model output intercept <- coef(summary(model))["(Intercept)", "Estimate"] disp <- coef(summary(model))["disp", "Estimate"] hp <- coef(summary(model))["hp", "Estimate"] drat <- coef(summary(model))["drat", "Estimate"] #use the model coefficients to predict the value for mpg intercept + disp*220 + hp*150 + drat*3 #[1] 18.57373
Para um carro com disp = 220, hp = 150 e drat = 3, o modelo prevê que o carro atingiria 18,57373 mpg .
Você pode encontrar o código R completo usado neste tutorial aqui .
Recursos adicionais
Os tutoriais a seguir explicam como ajustar outros tipos de modelos de regressão em R:
Como realizar regressão quadrática em R
Como realizar regressão polinomial em R
Como realizar regressão exponencial em R