Regressão Linear: Este experimento utiliza o conjunto de dados “cars”, composto por 50 observações da velocidade de diferentes carros da década de 20 e a respectiva distância alcançada pelos carros durante o experimento.

Siga os comandos abaixo:

str(cars)  # Retorna a estrutura do conjunto de dados.

Antes de ajustar o modelo de Regresão linear, vamos observar o comportamento dos dados com base em algumas  estatísticas. Com a função stat.desc do pacote pastecs[1] podemos verificar estimativas para a média, mediana, variância, dentre outros.

library(pastecs) # Carrega a biblioteca pastecs
stat.desc(cars) # Exibe parâmetros estatísticos sobre a base de dados cars

Para construção de modelo de Regressão Linear Simples (distancia=α.velocidade+β) vamos utilizar a função nativa do R, denominada lm (linear model). Nela escrevemos a equação com a seguinte sintaxe: Y ~ X, ou seja, Y é a variável resposta (distância) e X é a preditora (velocidade).

modelo.simples = lm(cars$dist ~ cars$speed) # cria o modelo de Regressão Linear
summary(modelo.simples) # Exibe informações sobre modelo de Regressão Linear

 

Para uma análise gráfica dos dados, inicialmente vamos plotar um gráfico que mostra os dados de velocidade e distância, assim como a reta criada pelo modelo de Regressão Linear.

par(mar = c(5,4,2,2))
plot(x = cars$speed,
y = cars$dist,
xlab = "Velocidade (mph)",
ylab = "distância (ft)",
pch = 16)
abline(modelo.simples, col="blue")

Mas o que garante um bom modelo de Regressão Linear? A resposta veem das condições do modelo de Mínimo Quadrados, utilizado na Regressão Linear, que diz:

  • Resíduos devem possuir distribuição normal
  • Homoscedasticidade dos resíduos (variância constante)
  • Aleatoriedade dos resíduos frente ao valor predito e às variáveis preditoras

 

Visando analisar esses quesitos, plotaremos os gráficos abaixo:

 

Histograma dos Resíduos – A distribuição de probabilidade dos resíduos pode ser verificada visualmente a partir de um histograma dos resíduos.

par(mar = c(5,4,2,2))hist(x = modelo.simples$residuals,     xlab = "Resíduos",     ylab = "Densidade de Probabilidade",     main = "",     col = "lightgreen",     probability = TRUE) lines(density(modelo.simples$residuals))

Homoscedasticidade dos Resíduos – O Gráfico abaixo mostra a homoscedasticidade dos resíduos, plotando os valores preditos pelo modelo por aqueles observados (distância).

par(mar = c(5,4,2,2))
plot(x = cars$dist,
y = modelo.simples$fitted.values,
xlim = c(0, 120),
ylim = c(0, 120),
pch = 16,
xlab = "Valores observados",
ylab = "Valores preditos")
abline(a = 0, b = 1, lty = 2, col = "red")

Aleatoriedade dos Resíduos – O Gráfico abaixo mostra um painel com dois gráficos que expõem as variáveis: velocidade x resíduo e distância x resíduo.

 

par(mfrow = c(1, 2), mar = c(5,4,2,2)) plot(x = cars$speed,      y = modelo.simples$residuals,     pch = 16,     col = "red",     xlab = "Velocidade (mph)", ylab = "Resíduos") plot(x = cars$dist,      y = modelo.simples$residuals,     pch = 16,     col = "lightblue",     xlab = "Distância (ft)", ylab = "Resíduos")

[1] Caso o pacote pastecs não esteja instalado é necessário proceder sua instalação: install.packages(“pastecs”)

Regressão Linear em R