Como funciona a regressão linear

Regressão Intermediária com statsmodels em Python

Maarten Van den Broeck

Content Developer at DataCamp

O gráfico padrão de regressão linear simples

Um gráfico de dispersão com uma linha de tendência de regressão linear.

Regressão Intermediária com statsmodels em Python

Visualizando resíduos

O gráfico de dispersão com a linha de tendência, mais segmentos dos pontos até a linha, representando os resíduos.

Regressão Intermediária com statsmodels em Python

Uma métrica para o melhor ajuste

A ideia mais simples (que não funciona)

  • Some todos os resíduos.
  • Alguns resíduos são negativos.

A próxima ideia (que funciona)

  • Eleve ao quadrado cada resíduo e some esses quadrados.
  • Isso é chamado de soma dos quadrados.
Regressão Intermediária com statsmodels em Python

Um desvio para otimização numérica

Um gráfico de linha de uma equação quadrática

x = np.arange(-4, 5, 0.1)
y = x ** 2 - x + 10

xy_data = pd.DataFrame({"x": x,
                        "y": y})

sns.lineplot(x="x",
             y="y",
             data=xy_data)

Função quadrática y = x ** 2 - x + 10

Regressão Intermediária com statsmodels em Python

Usando cálculo para resolver a equação

$y = x ^ 2 - x + 10$

$\frac{\partial y}{\partial x} = 2 x - 1$

$0 = 2 x - 1$

$x = 0{,}5$

$y = 0{,}5 ^ 2 - 0{,}5 + 10 = 9{,}75$

  • Nem todas as equações podem ser resolvidas assim.
  • Você pode deixar o Python resolver.

Não se preocupe se isso não fizer sentido; você não vai precisar nos exercícios.

A mesma função quadrática, agora com o mínimo encontrado

Regressão Intermediária com statsmodels em Python

minimize()

from scipy.optimize import minimize
def calc_quadratic(x):
  y = x ** 2 - x + 10
  return y
minimize(fun=calc_quadratic,
         x0=3)
      fun: 9.75
 hess_inv: array([[0.5]])
      jac: array([0.])
  message: 'Optimization terminated successfully.'
     nfev: 6
      nit: 2
     njev: 3
   status: 0
  success: True
        x: array([0.49999998])
Regressão Intermediária com statsmodels em Python

Um algoritmo de regressão linear

Defina uma função para calcular a métrica de soma dos quadrados.

 

Chame minimize() para encontrar coeficientes que minimizem essa função.

def calc_sum_of_squares(coeffs):
  intercept, slope = coeffs
  # More calculation!
minimize(
  fun=calc_sum_of_squares,
  x0=0
)
Regressão Intermediária com statsmodels em Python

Vamos praticar!

Regressão Intermediária com statsmodels em Python

Preparing Video For Download...