Cet article propose une exploration du concept de régression linéaire, un outil fondamental en statistique et qui est déjà tombé par le passé, aux écrits comme aux oraux. Il se concentre sur la méthode des moindres carrés en Python, un article sur l’aspect purement mathématique de cette méthode ayant déjà été rédigé. Nous rappellerons toutefois les points majeurs de la méthode, avant d’étudier une première manière de la coder en Python, puis une deuxième plus efficace.
Rappel des aspects mathématiques de la méthode
La régression linéaire est une technique de modélisation statistique qui permet d’étudier la relation entre une variable dépendante et une ou plusieurs variables indépendantes. Dans sa forme la plus simple, la régression linéaire simple, nous cherchons à modéliser une variable \(Y\) en fonction d’une seule variable \(X\) par une relation de la forme \(Y = aX + b\).
Les données ne s’alignent jamais parfaitement sur une droite. La question se pose alors : quelle est la « meilleure » droite pour résumer la relation entre ces deux variables ?
Soit un ensemble de \(N\) points expérimentaux \((x_i, y_i)_{i=1, \dots, N}\). L’objectif est de trouver la droite d’équation \(y = ax+b\) qui « colle » au mieux à ces points.
Pour chaque point \((x_i, y_i)\), la valeur prédite par le modèle est \(ax_i + b\). L’erreur ou le résidu pour ce point est la différence entre la valeur observée et la valeur prédite : \(\epsilon_i = y_i – (ax_i + b)\).
La méthode des moindres carrés consiste à minimiser la somme des carrés des résidus. C’est-à-dire trouver les coefficients \(a\) et \(b\) qui minimisent la fonction d’erreur \(S(a,b)\) :
\[S(a,b) = \sum_{i=1}^N \epsilon_i^2 = \sum_{i=1}^N (y_i – (ax_i + b))^2\]
Nous passerons la démonstration et admettrons le résultat suivant :
On obtient finalement l’expression de \(a\) et \(b\)
\(a = \frac{\text{Cov}(X,Y)}{\text{Var}(X)}\)
\(b = \bar{y} – a\bar{x}\)
En pratique, on peut les calculer à la main pour un petit nombre de points, mais pour des jeux de données plus importants, la programmation est indispensable.
Première méthode Python
La bibliothèque numpy est parfaite pour ce type de problème, car elle permet de manipuler des vecteurs, ce qui facilite le travail sur les jeux de données.
Dans cette première méthode, nous allons devoir écrire un script qui permet de calcul \(a\) et \(b\) grâce aux formules déterminées précédemment, tandis que dans la deuxième méthode, nous automatiserons le calcul grâce à une méthode déjà toute prête pour nous aider !
Supposons que nous ayons les données suivantes :
\(X=[1, 2, 3, 4, 5, 6, 7]\) et \(Y =[1.5, 2.5, 3.8, 4.2, 5.0, 6.1, 7.3]\)
Voici le script qui permet d’afficher la droite de régression linéaire déterminée grâce à la méthode des moindres carrés :
On obtient alors le graphique suivant et l’on voit que la droite passe le plus proche possible des points :
Le graphique généré montre bien les points de données et la droite qui minimise la somme des carrés des erreurs. Cette première méthode est donc envisageable, mais il est possible de gagner du temps.
Deuxième méthode Python
Une fois que l’on a compris comment fonctionne la méthode et que l’on est capable de l’appliquer en Python, on peut valablement utiliser des fonctions Python qui permettent de gagner du temps pour résoudre ce problème de régression linéaire.
Pour cela, on peut utiliser la fonction numpy.polyfit() sans oublier d’importer la bibliothèque associée (import numpy as np).
Cette fonction prend en argument le vecteur X et Y, puis le nombre qui correspond au type de régression linéaire (simple ou multiple). Dans notre cas, puisque l’on se restreint à la régression linéaire simple, on affectera la valeur \(1\).
Imaginons par exemple cinq individus pour lesquels on demande l’âge (données du vecteur X) et la taille (données du vecteur Y). Notons déjà qu’il ne semble pas y avoir une corrélation clairement établie entre l’âge et la taille d’un individu adulte pris au hasard.
On peut ainsi écrire le script suivant pour modéliser la droite de régression linéaire simple :
On obtient alors le graphique suivant :
On obtient donc un résultat satisfaisant sans calculer à la main les valeurs de \(a\) et \(b\).
Nota bene : la première valeur est dite « aberrante », car éloignée fortement de la droite de régression.
Conclusion
La méthode des moindres carrés n’est pas qu’une simple formule statistique, c’est un excellent exemple de l’application de l’analyse (optimisation d’une fonction à plusieurs variables) à un problème concret. L’utilisation de Python et de bibliothèques comme numpy et matplotlib permet de passer rapidement de la théorie à la pratique, en rendant les concepts abstraits tangibles. Maîtriser ce processus est une compétence clé, non seulement pour les mathématiques et la physique, mais aussi pour tout domaine impliquant l’analyse de données.
Ce travail peut être étendu à la régression linéaire multiple (plusieurs variables indépendantes), où le problème se résout élégamment par l’algèbre linéaire, utilisant les matrices pour minimiser la fonction d’erreur. C’est une porte ouverte vers des concepts plus avancés, comme l’apprentissage automatique.
Tu peux retrouver le méga-répertoire qui contient toutes les annales de concours et les corrigés. Tu peux également accéder à toutes nos autres ressources mathématiques !




