Como realizar a regressão ols em r (com exemplo)


A regressão de mínimos quadrados ordinários (OLS) é um método que nos permite encontrar uma linha que melhor descreve a relação entre uma ou mais variáveis preditoras e uma variável de resposta .

Este método nos permite encontrar a seguinte equação:

ŷ=b 0 + b 1 x

Ouro:

  • ŷ : O valor estimado da resposta
  • b 0 : A origem da linha de regressão
  • b 1 : A inclinação da linha de regressão

Esta equação pode nos ajudar a compreender a relação entre o preditor e a variável de resposta e pode ser usada para prever o valor de uma variável de resposta dado o valor da variável preditora.

O exemplo passo a passo a seguir mostra como realizar a regressão OLS em R.

Etapa 1: crie os dados

Para este exemplo, criaremos um conjunto de dados contendo as duas variáveis a seguir para 15 alunos:

  • Número total de horas estudadas
  • Resultado de exame

Realizaremos uma regressão OLS, usando horas como variável preditora e pontuação no exame como variável resposta.

O código a seguir mostra como criar esse conjunto de dados falso em R:

 #create dataset
df <- data. frame (hours=c(1, 2, 4, 5, 5, 6, 6, 7, 8, 10, 11, 11, 12, 12, 14),
                 score=c(64, 66, 76, 73, 74, 81, 83, 82, 80, 88, 84, 82, 91, 93, 89))

#view first six rows of dataset
head(df)

  hours score
1 1 64
2 2 66
3 4 76
4 5 73
5 5 74
6 6 81

Etapa 2: visualize os dados

Antes de realizar uma regressão OLS, vamos criar um gráfico de dispersão para visualizar a relação entre horas e nota do exame:

 library (ggplot2)

#create scatterplot
ggplot(df, aes(x=hours, y=score)) +
  geom_point(size= 2 )

Uma das quatro suposições da regressão linear é que existe uma relação linear entre o preditor e a variável de resposta.

No gráfico podemos ver que a relação parece ser linear. À medida que o número de horas aumenta, a pontuação também tende a aumentar linearmente.

Em seguida, podemos criar um boxplot para visualizar a distribuição dos resultados dos exames e verificar se há outliers.

Nota : R define uma observação como outlier se for 1,5 vezes o intervalo interquartil acima do terceiro quartil ou 1,5 vezes o intervalo interquartil abaixo do primeiro quartil.

Se uma observação for atípica, um pequeno círculo aparecerá no boxplot:

 library (ggplot2)

#create scatterplot
ggplot(df, aes(y=score)) +
  geom_boxplot() 

Não há pequenos círculos no boxplot, o que significa que não há valores discrepantes em nosso conjunto de dados.

Etapa 3: realizar a regressão OLS

A seguir, podemos usar a função lm() em R para realizar uma regressão OLS, usando horas como variável preditora e pontuação como variável de resposta:

 #fit simple linear regression model
model <- lm(score~hours, data=df)

#view model summary
summary(model)

Call:
lm(formula = score ~ hours)

Residuals:
   Min 1Q Median 3Q Max 
-5,140 -3,219 -1,193 2,816 5,772 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 65,334 2,106 31,023 1.41e-13 ***
hours 1.982 0.248 7.995 2.25e-06 ***
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.641 on 13 degrees of freedom
Multiple R-squared: 0.831, Adjusted R-squared: 0.818 
F-statistic: 63.91 on 1 and 13 DF, p-value: 2.253e-06

A partir do resumo do modelo, podemos ver que a equação de regressão ajustada é:

Pontuação = 65,334 + 1,982*(horas)

Isso significa que cada hora adicional estudada está associada a um aumento médio na pontuação do exame de 1.982 pontos.

O valor original de 65.334 nos indica a nota média esperada no exame para um aluno que estuda zero horas.

Também podemos usar essa equação para encontrar a pontuação esperada no exame com base no número de horas que um aluno estuda.

Por exemplo, um aluno que estuda 10 horas deverá obter nota 85,15 no exame:

Pontuação = 65,334 + 1,982*(10) = 85,15

Veja como interpretar o restante do resumo do modelo:

  • Pr(>|t|): Este é o valor p associado aos coeficientes do modelo. Como o valor p para horas (2,25e-06) é significativamente menor que 0,05, podemos afirmar que existe uma associação estatisticamente significativa entre horas e pontuação .
  • Múltiplo R-quadrado: Este número nos diz que a porcentagem de variação nas notas dos exames pode ser explicada pelo número de horas estudadas. Em geral, quanto maior o valor R-quadrado de um modelo de regressão, melhores serão as variáveis preditoras em prever o valor da variável resposta. Nesse caso, 83,1% da variação nas notas pode ser explicada pelas horas estudadas.
  • Erro padrão residual: é a distância média entre os valores observados e a linha de regressão. Quanto menor este valor, mais uma linha de regressão é capaz de corresponder aos dados observados. Nesse caso, a pontuação média observada no exame diverge em 3.641 pontos da pontuação prevista pela reta de regressão.
  • Estatística F e valor p: A estatística F ( 63,91 ) e o valor p correspondente ( 2.253e-06 ) nos dizem a significância geral do modelo de regressão, ou seja, se as variáveis preditoras no modelo são úteis para explicar a variação . na variável de resposta. Como o valor p neste exemplo é inferior a 0,05, nosso modelo é estatisticamente significativo e as horas são consideradas úteis para explicar a variação da pontuação .

Etapa 4: criar gráficos residuais

Finalmente, precisamos criar gráficos residuais para verificar as suposições de homocedasticidade e normalidade .

A suposição de homocedasticidade é que os resíduos de um modelo de regressão têm variância aproximadamente igual em cada nível de uma variável preditora.

Para verificar se esta suposição é atendida, podemos criar um gráfico de resíduos versus ajustes .

O eixo x exibe os valores ajustados e o eixo y exibe os resíduos. Contanto que os resíduos pareçam estar distribuídos de forma aleatória e uniforme ao longo do gráfico em torno do valor zero, podemos assumir que a homocedasticidade não é violada:

 #define residuals
res <- resid(model)

#produce residual vs. fitted plot
plot(fitted(model), res)

#add a horizontal line at 0 
abline(0,0)

Os resíduos parecem estar espalhados aleatoriamente em torno de zero e não mostram nenhum padrão perceptível, portanto esta suposição é atendida.

A suposição de normalidade afirma que os resíduos de um modelo de regressão são distribuídos aproximadamente normalmente.

Para verificar se esta suposição é atendida, podemos criar um gráfico QQ . Se os pontos do gráfico estiverem ao longo de uma linha aproximadamente reta formando um ângulo de 45 graus, então os dados serão distribuídos normalmente:

 #create QQ plot for residuals
qqnorm(res)

#add a straight diagonal line to the plot
qqline(res) 

Os resíduos desviam-se um pouco da linha de 45 graus, mas não o suficiente para causar séria preocupação. Podemos assumir que a suposição de normalidade foi atendida.

Como os resíduos são normalmente distribuídos e homocedásticos, verificamos que os pressupostos do modelo de regressão OLS são atendidos.

Assim, a saída do nosso modelo é confiável.

Nota : Se uma ou mais das suposições não fossem atendidas, poderíamos tentar transformar nossos dados.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Como realizar regressão linear múltipla em R
Como realizar regressão exponencial em R
Como realizar a regressão de mínimos quadrados ponderados em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *