DEV Community

Cover image for setup matemático regressão linear simples

setup matemático regressão linear simples

Fazendo o curso de Mestrado em Machine Learning do IMPA, do Prof. Paulo Orenstein, tive contato com os conceitos matemático por trás da construção dos parâmetros analisados da Regressão Linear Simples.
O intuito desse artigo é resumir o setup matemático aprendido nas aulas 01 e 02 do curso. Com futura continuação a medida que eu avançar no conteúdo 😉

Modelo geral:
image_slr

Na regressão linear simples, assumimos que (f(X)) é uma função linear:

image_slr

O modelo estimado é:

image_slr

O erro residual é:

image_slr


1. Hipóteses matemáticas do modelo

A regressão linear simples parte de:

image_slr

image_slr

image_slr

image_slr

Logo:

image_slr

image_slr

Overview

Matematicamente, essas hipóteses dizem que o erro não tem viés, possui variância constante, não é correlacionado entre observações e, para inferência estatística, segue distribuição Normal.


2. Estimação dos coeficientes por mínimos quadrados (OLS)

Queremos encontrar Beta 0 ao quadrado e Beta 1 ao quadrado que minimizam:

image_slr

Substituindo valor previsto pelo modelo para a observação i:

image_slr

Derivando em relação a os coeficientes estimados pelo modelo:

image_slr

image_slr

Disso surgem as equações normais:

image_slr

image_slr

A partir da primeira:

image_slr

Dividindo por n:

image_slr

Logo:

image_slr

Substituindo na segunda equação:

image_slr

Overview

B^1 mede a inclinação da reta.

B^0 garante que a reta passe pelo ponto médio X barra e Y barra.

Código R

model <- lm(y ~ X)

coef(model)
Enter fullscreen mode Exit fullscreen mode

Código Python

import statsmodels.api as sm

X_model = sm.add_constant(X)

model = sm.OLS(y, X_model).fit()

model.params
Enter fullscreen mode Exit fullscreen mode

3. Predição e resíduos

Com os coeficientes estimados:

image_slr

O resíduo é:

image_slr

Substituindo:

image_slr

Overview

O resíduo mede o erro individual entre o valor observado e o valor previsto pela reta.

Código R

residuals(model)
Enter fullscreen mode Exit fullscreen mode

Código Python

model.resid
Enter fullscreen mode Exit fullscreen mode

4. RSS — Residual Sum of Squares

Partimos dos resíduos:

image_slr

Elevando ao quadrado e somando:

image_slr

Logo:

image_slr

Substituindo Y^:

image_slr

Overview

O RSS mede o erro total não explicado pelo modelo.

Código R

deviance(model)
Enter fullscreen mode Exit fullscreen mode

Código Python

model.ssr
Enter fullscreen mode Exit fullscreen mode

5. RSE — Residual Standard Error

O RSS soma os erros ao quadrado:

image_slr

Para transformar isso em uma estimativa da variância residual:

image_slr

Usamos (n-2) porque estimamos dois parâmetros:

image_slr

Então:

image_slr

Logo:

image_slr

Ou:

image_slr

Overview

O RSE mede o tamanho típico do erro do modelo na mesma unidade de Y.

Quanto menor, melhor.

Código R

summary(model)$sigma
Enter fullscreen mode Exit fullscreen mode

Código Python

(model.ssr / model.df_resid) ** 0.5
Enter fullscreen mode Exit fullscreen mode

6. TSS — Total Sum of Squares

A média de Y é:

image_slr

A variação total de Y em relação à média é:

image_slr

Overview

O TSS mede toda a variabilidade presente em Y antes do modelo.


7. R^2 — Coeficiente de determinação

A variação total é:

image_slr

O erro não explicado é:

image_slr

A variação explicada é:

image_slr

Logo:

image_slr

Reorganizando:

image_slr

Overview

R^2 responde quanto da variação dos dados o modelo consegue explicar.

image_slr

Código R

summary(model)$r.squared
Enter fullscreen mode Exit fullscreen mode

Código Python

model.rsquared
Enter fullscreen mode Exit fullscreen mode

8. Variância do coeficiente B^1

Partimos do estimador:

image_slr

Sob as hipóteses do modelo:

Como sigma^2 é desconhecido:

image_slr

Logo:

image_slr

E:

image_slr

Overview

Quanto menor a variação de X, maior a incerteza da inclinação estimada.

Código R

summary(model)$coefficients[2, "Std. Error"]
Enter fullscreen mode Exit fullscreen mode

Código Python

model.bse["X"]
Enter fullscreen mode Exit fullscreen mode

9. Variância do intercepto B^0

Sabemos que:

image_slr

A variância do intercepto é:

image_slr

Substituindo (sigma^2):

image_slr

Overview

O intercepto também possui incerteza associada.

Código R

summary(model)$coefficients[1, "Std. Error"]
Enter fullscreen mode Exit fullscreen mode

Código Python

model.bse["const"]
Enter fullscreen mode Exit fullscreen mode

10. Teste t de Student

Queremos testar:

image_slr

image_slr

A estatística de teste é:

image_slr

Forma geral:

image_slr

Overview

O teste t mede quantos erros padrão o coeficiente está distante de zero.

Quanto maior o módulo de (t), maior a evidência contra (H_0).

Código R

summary(model)$coefficients[, "t value"]
Enter fullscreen mode Exit fullscreen mode

Código Python

model.tvalues
Enter fullscreen mode Exit fullscreen mode

11. p-value

A estatística t segue:

image_slr

O p-value bilateral é:

image_slr

Ou:

image_slr

Overview

O p-value mede a evidência contra a hipótese nula.

image_slr

Código R

summary(model)$coefficients[, "Pr(>|t|)"]
Enter fullscreen mode Exit fullscreen mode

Código Python

model.pvalues
Enter fullscreen mode Exit fullscreen mode

12. Intervalo de confiança

Para um nível de confiança de 95%:

image_slr

Para beta 1:

image_slr

Para beta 0:

image_slr

Overview

Representa a faixa plausível para o coeficiente verdadeiro.

Código R

confint(model)
Enter fullscreen mode Exit fullscreen mode

Código Python

model.conf_int(alpha=0.05)
Enter fullscreen mode Exit fullscreen mode

13. Resumo matemático final

image_slr


14. Anotações de Aula Completas

Link anotações completas das aulas 01 e 02 voltadas a Regressão Linear Simples.

Top comments (0)