(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
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).
Além disso, podemos fazer um histograma dos resíduos para verificar a presença de dados discrepantes (outliers).
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.
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