Regressão Linear Simples no R

A Regressão Linear assume uma relação causal entre duas variáveis contínuas.

Onde Y é a variável resposta, a o intercepto, b o coeficiente angular e X a variável explanatória. Ou seja, em uma regressão linear, Y varia em função de bX mais um valor constante a. Quando X = 0, a = Y (intercepto). O coeficiente angular b representa a taxa com que Y aumento em relação a X. A partir de um conjunto de dados é possível estimar os valores de a e b, assim com os erros associados a estes parâmetros. Ao fazer isso, podemos traçar a reta que melhor se ajusta aos nossos dados, ou seja, aquela que minimiza a soma de quadrados do Erro. Vamos ver um exemplo:

Exemplo:

Entrada de dados:

Y <- c(6.5,5.8,7.8,8.1,10.4,12.3,13.1,17.4,20.1,24.5,25.5,27.1) # Variável resposta
X <- c(1.4,1.5,1.7,1.9,2.1,2.2,2.4,3.2,3.7,4.2,4.8,5.2)       # Variável explicativa
dados <- data.frame(Y,X)
dados
##       Y   X
## 1   6.5 1.4
## 2   5.8 1.5
## 3   7.8 1.7
## 4   8.1 1.9
## 5  10.4 2.1
## 6  12.3 2.2
## 7  13.1 2.4
## 8  17.4 3.2
## 9  20.1 3.7
## 10 24.5 4.2
## 11 25.5 4.8
## 12 27.1 5.2

Ajustando um modelo de regressão linear aos dados:

modelo.regressao <- lm(Y ~ X, data= dados)
summary(modelo.regressao)  # Estimativa dos parâmetros, Erro, R2 do modelo
## 
## Call:
## lm(formula = Y ~ X, data = dados)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.41982 -0.81114  0.02095  0.61668  1.80359 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -1.7619     0.7603  -2.317    0.043 *  
## X             5.8234     0.2431  23.954 3.66e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.069 on 10 degrees of freedom
## Multiple R-squared:  0.9829, Adjusted R-squared:  0.9812 
## F-statistic: 573.8 on 1 and 10 DF,  p-value: 3.655e-10
anova(modelo.regressao)    # Tabela de ANOVA
## Analysis of Variance Table
## 
## Response: Y
##           Df Sum Sq Mean Sq F value    Pr(>F)    
## X          1 655.49  655.49  573.79 3.655e-10 ***
## Residuals 10  11.42    1.14                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Gráfico (opção 1):

plot (Y ~ X,pch=16 ,data = dados)
abline(modelo.regressao,col="red") # Esta função ajusta a reta do modelo aos dados

Gráfico (opção 2):

library(ggplot2)
ggplot(data=dados,aes(y=Y,x=X))+geom_point()+geom_smooth(method="lm")

Para avaliar os resíduos do modelo:

plot(resid(modelo.regressao) ~ predict(modelo.regressao),pch=16) # Resíduos vs. Y esperado
abline(0,0,col="red") # Coloca uma reta no Y = 0

par(mfrow=c(2,2))
plot(modelo.regressao) # Diagnóstico completo dos resíduos

Outras funções interssantes:

coef(modelo.regressao)      # Coeficientes do modelo (intercepto e beta)
predict(modelo.regressao)   # Valores previstos pelo modelo
residuals(modelo.regressao) # Resíduos do modelo

Gustavo Paterno - 2014 (paternogbc@gmail.com)