Cómo funciona la regresión lineal

Regresión intermedia con statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

El gráfico estándar de regresión lineal simple

Un diagrama de dispersión con una línea de tendencia de regresión lineal.

Regresión intermedia con statsmodels en Python

Visualizar residuos

El diagrama de dispersión con la línea de tendencia de regresión lineal y segmentos desde los puntos a la línea, que representan los residuos.

Regresión intermedia con statsmodels en Python

Una métrica para el mejor ajuste

La idea más simple (que no funciona)

  • Sumar todos los residuos.
  • Algunos residuos son negativos.

La siguiente idea más simple (que sí funciona)

  • Elevar al cuadrado cada residuo y sumar los cuadrados.
  • Se llama la suma de cuadrados.
Regresión intermedia con statsmodels en Python

Un desvío por la optimización numérica

Un gráfico de línea de una ecuación cuadrá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)

Función cuadrática y = x ** 2 - x + 10

Regresión intermedia con statsmodels en Python

Usar cálculo para resolver la ecuación

$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$

  • No todas las ecuaciones se pueden resolver así.
  • Deja que Python lo calcule.

No te preocupes si no tiene sentido; no lo necesitarás en los ejercicios.

La función cuadrática anterior, ahora resuelta para encontrar el mínimo

Regresión intermedia con statsmodels en 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])
Regresión intermedia con statsmodels en Python

Un algoritmo de regresión lineal

Define una función para calcular la métrica de suma de cuadrados.

 

Llama a minimize() para encontrar los coeficientes que minimizan esta función.

def calc_sum_of_squares(coeffs):
  intercept, slope = coeffs
  # ¡Más cálculo!
minimize(
  fun=calc_sum_of_squares,
  x0=0
)
Regresión intermedia con statsmodels en Python

¡Vamos a practicar!

Regresión intermedia con statsmodels en Python

Preparing Video For Download...