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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *