Introdução a Correlação e Regressão

Correlação e Regressão

(Fonte: minicurso de Estatística básica: Introdução ao software R. Disponível em: http://www.ufsm.br/pet-ee)

A equação de regressão linear pode ser obtida no R por meio da função lm() que serve para calcular a regressão linear simples.

#Exemplo:
x <- c(201,225,305,380,560,600,685,735)
y <- c(17,20,21,23,25,24,27,27)
dados <- data.frame(x,y) #criando um data.frame
is.data.frame(dados) #verifica se dados é um data.frame
## [1] TRUE
regressao<-lm(y~x,data=dados) 
regressao
## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Coefficients:
## (Intercept)            x  
##    15.65995      0.01591

Para verificarmos os resultados da função lm(), inclusive os coeficientes da regressão linear, devemos utilizar o comando:

summary(regressao)
## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.8577 -0.5662  0.4366  0.5560  1.2946 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 15.659947   1.035959   15.12 5.29e-06 ***
## x            0.015909   0.002066    7.70 0.000251 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.148 on 6 degrees of freedom
## Multiple R-squared:  0.9081, Adjusted R-squared:  0.8928 
## F-statistic:  59.3 on 1 and 6 DF,  p-value: 0.0002513

Assim como a maioria das funções do R, armazenamos os resultados retornados pela função lm() em um objeto. O valor retornado por lm() é uma lista.

is.list(regressao) #verifica se "regressão" é uma lista
## [1] TRUE
names(regressao)
##  [1] "coefficients"  "residuals"     "effects"       "rank"         
##  [5] "fitted.values" "assign"        "qr"            "df.residual"  
##  [9] "xlevels"       "call"          "terms"         "model"

Alguns comandos úteis são listados a seguir:

regressão$fitted.values: calcula os valores preditos da variável resposta para cada elemento da amostra (faz uma previsão);

regressão$residuals: calcula o erro ou os resíduos (valor observado - valor predito) para cada ponto da amostra;

regressão$coefficients: obtém uma estimativa dos coeficientes da regressão.

regressao$fitted.values
##        1        2        3        4        5        6        7        8 
## 18.85767 19.23949 20.51222 21.70540 24.56903 25.20540 26.55767 27.35312
regressao$residuals
##          1          2          3          4          5          6 
## -1.8576726  0.7605094  0.4877828  1.2946016  0.4309667 -1.2053966 
##          7          8 
##  0.4423314 -0.3531227
regressao$coefficients
## (Intercept)           x 
## 15.65994700  0.01590908

Gráfico com a reta da regressão

#plot(x,y) ou
z = plot(x,y)
grid(z) #aplicando grid ao gráfico
abline(regressao)

Outros componentes do ajuste são úteis para propósito de diagnóstico. Por exemplo, pode-se examinar o gráfico de valores ajustados contra resíduos. Este comando pode nos mostrar os desvios dos dados em relação ao modelo linear (estimado).

plot(regressao$fitted.values,regressao$residuals)

Além disso, podemos fazer um histograma dos resíduos para verificar a presença de dados discrepantes (outliers).

hist(regressao$residuals)

Podemos identificar diferentes classes que são atribuídas a diferentes objetos do R. Este mecanismo facilita a automação de diversas tarefas no R. Por exemplo, podemos descobrir qual a classe atribuída a um objeto que armazena resultados da função lm(). lm é a sigla em inglês para linear model (modelo de regressão linear)

class(regressao)
## [1] "lm"

O estudo sobre regressão exige que o modelo seja diagnosticado antes de ser usado para análises. O comando a seguir fornece alguns resultados sobre o modelo ajustado. É possível avaliar os resíduos, normalidade e dados discrepantes.

plot(regressao)

Coeficiente de Correlação (r) e Coeficiente de Determinação r2

Através do gráfico de dispersão pode-se indicar se a correlação linear é positiva, negativa ou a inexistência de correlação. Além disso, podemos identificar, por meio do coeficiente de correlação (r), o grau da correlação

cor(x,y)
## [1] 0.9529494

Por exemplo, para r = +0,953, temos uma correlação positiva forte, ou seja, a variável dependente y cresce quase na mesma proporção que a variável independente x.

O Coeficiente de Determinação explica o grau de ajuste do modelo, ou o percentual de variação de y que é explicada pela variabilidade de x. Seu valor varia de 0 a 1.

cor(x,y)^2
## [1] 0.9081126

Um exemplo aplicado

Para uma amostra de oito operadores de máquina, foram coletados o número de horas de treinamento (x) e o tempo necessário para completar o trabalho (y).

Pede-se: a) Faça o gráfico de dispersão para esses dados. b) Determine o modelo de regressão linear simples entre as variáveis “x” e “y”. c) Em seguida, trace, no gráfico anterior, a reta de regressão. d) Calcule e intereprete os coeficientes de correlação (r) e determinação (r2).

y <- c(5.2,5.1,4.9,4.6,4.7,4.8,4.6,4.9)
x <- c(13,15,18,20,19,17,21,16)

y #apresentação do vetor y
## [1] 5.2 5.1 4.9 4.6 4.7 4.8 4.6 4.9
x #apresentação do vetor x
## [1] 13 15 18 20 19 17 21 16
z = plot(x,y)
grid(z) #aplicando grid ao gráfico

dados <- data.frame(x,y) #criando um data.frame

is.data.frame(dados) #verifica se dados é um data.frame
## [1] TRUE
regressao<-lm(y~x,data=dados) 
regressao
## 
## Call:
## lm(formula = y ~ x, data = dados)
## 
## Coefficients:
## (Intercept)            x  
##      6.2261      -0.0792
abline(regressao) # adiciona o modelo de regressão
#coeficiente de correlação
cor(x,y) 
## [1] -0.9592155
#coeficiente de determinação
cor(x,y)^2
## [1] 0.9200944