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”)