Fonctionnement de la régression linéaire

Régression intermédiaire avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Graphique standard de régression linéaire simple

Nuage de points avec une droite de tendance de régression linéaire.

Régression intermédiaire avec statsmodels en Python

Visualiser les résidus

Nuage de points avec la droite de régression et des segments jusqu'à la droite, représentant les résidus.

Régression intermédiaire avec statsmodels en Python

Une mesure pour le meilleur ajustement

L'idée la plus simple (qui ne fonctionne pas)

  • Additionner tous les résidus.
  • Certains résidus sont négatifs.

L'idée suivante (qui fonctionne)

  • Mettre chaque résidu au carré, puis additionner ces carrés.
  • On appelle cela la somme des carrés.
Régression intermédiaire avec statsmodels en Python

Parenthèse sur l'optimisation numérique

Tracé d'une équation quadratique

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)

Fonction quadratique y = x ** 2 - x + 10

Régression intermédiaire avec statsmodels en Python

Résoudre l'équation avec le calcul différentiel

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

  • On ne peut pas résoudre toutes les équations ainsi.
  • Vous pouvez laisser Python le faire.

Ne vous en faites pas si cela n'est pas clair : vous n'en aurez pas besoin pour les exercices.

La même fonction quadratique, résolue pour trouver le minimum

Régression intermédiaire avec 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])
Régression intermédiaire avec statsmodels en Python

Algorithme de régression linéaire

Définir une fonction qui calcule la mesure de somme des carrés.

 

Appeler minimize() pour trouver les coefficients qui minimisent cette fonction.

def calc_sum_of_squares(coeffs):
  intercept, slope = coeffs
  # More calculation!
minimize(
  fun=calc_sum_of_squares,
  x0=0
)
Régression intermédiaire avec statsmodels en Python

Passons à la pratique !

Régression intermédiaire avec statsmodels en Python

Preparing Video For Download...