Passo 1 - Criando o dataframe de dados
# Cria o dataframe
Xi <- c( 2, 3, 4, 5, 6)
Yi <- c(60, 70, 80, 90, 95)
dados <- data.frame(Xi, Yi)
head(dados,5) # Exibe as cinco primeiras linhas de dados, neste caso, todas!
## Xi Yi
## 1 2 60
## 2 3 70
## 3 4 80
## 4 5 90
## 5 6 95
plot(dados$Xi, dados$Yi, main = "Gráfico de dispersão", xlab = "horas de estudo", ylab = "notas obtidas") # Código alternativo para visualizar o gráfico de dispersão do dataframe dados

Passo 2 - calculando a média das variáveis observadas Xi e Yi
MediaY <- mean(Yi) # (2 + 3 + 4 + 5 + 6) / 5 = 4
MediaX <- mean(Xi) # (60 + 70 + 80 + 90 + 95) / 5 = 79
# mean() é o método utilizado para computar a média
Passo 3 - Calculado os desvios médios x̄ᵢ = Xi - x̄ (3) e ŷᵢ = Yi - ȳ
(4)
DesvioX <- Xi - MediaX # Desvios médios das horas de estudo
DesvioY <- Yi - MediaY # Desvios médios das notas obtidas na prova
Passo 4 - Adicionar os desvios ao dataframe dados
dados <- cbind(dados, DesvioX, DesvioY)
head(dados, 5) # Visualiza dataframe dados atualizado
## Xi Yi DesvioX DesvioY
## 1 2 60 -2 -19
## 2 3 70 -1 -9
## 3 4 80 0 1
## 4 5 90 1 11
## 5 6 95 2 16
Passo 5 - Obtendo o produto dos desvios médios e otendo seu
somatório:
numerador = Σ((Xi - x̄) * (Yi - ȳ))
xiyi <- DesvioY * DesvioX
dados <- cbind(dados, xiyi)
numerador <- sum(xiyi)
Passo 5 - Obtendo o desvio médio de Xi quadrado e seu
somatório:
denominador = Σ((Xi - x̄)²)
xiq <- DesvioX * DesvioX # ou DesvioX^2
dados <- cbind(dados, xiq)
denominador <- sum(xiq)
Passo 6 - Calculando β1=(Σ((Xi - x̄) * (Yi - ȳ)) )/(Σ((Xi - x̄)²))
(6)
β1 <- numerador / denominador
# código alternativo que pula os passos exemplificados# neste tutorial
Beta1 <- beta1 <- sum(DesvioY *DesvioX)/sum(DesvioX^2)
Passo 7 - Calculando β₀ = ȳ - β₁ * x̄ (5)
β0 <- MediaY - β1 * MediaX
Passo 8 - Escrevendo a equação da reta y = β₀ + β₁x + ε (1)
Ye <- β0 + β1*Xi # equação de previsão para cada Xi existente no dataframe dados
dados <- cbind(dados, Ye) # adicionado Y previstos para o dataframe dados
plot(Xi, Yi, main = "Gráfico de dispersão", xlab = "horas de estudo", ylab = "notas obtidas")
abline(a=β0, b = β1, col = "red", lwd = 2) # Código para plotar um gráfico de dispersão com a reta de ajuste para Ye previsto. Adotou-se Ye como variável Y esperada para escrita do código no R

Passo 9 - Fazendo a regressão nativamente pelo R
# em uma única linha fazemos todo o tutorial acima.
reta_vermelha <-lm(Yi ~ Xi, data = dados)
# com a função summary percebemos o intercepto β0 = 43 e β1 = 9
summary(reta_vermelha)
##
## Call:
## lm(formula = Yi ~ Xi, data = dados)
##
## Residuals:
## 1 2 3 4 5
## -1.000e+00 -4.441e-15 1.000e+00 2.000e+00 -2.000e+00
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 43.0000 2.4495 17.55 0.000403 ***
## Xi 9.0000 0.5774 15.59 0.000574 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.826 on 3 degrees of freedom
## Multiple R-squared: 0.9878, Adjusted R-squared: 0.9837
## F-statistic: 243 on 1 and 3 DF, p-value: 0.0005737