En mathématiques, un ajustement affine est la détermination d’une droite approchant au mieux un nuage de points dans le plan.
Il est utilisé notamment en analyse de données pour évaluer la pertinence d’une relation affine entre deux variables statistiques, et pour estimer les coefficients d’une telle relation.
Notre objectif est de retrouver les paramètres de la droite d'ajustement en se basant sur certaines propriétés des variables aléatoires et aussi un peu sur son intuition.
On obtiendra ainsi les formules du coefficient directeur et de l'ordonnée à l'origine de la droite sans utiliser la dérivée ou le minimum d'une fonction.
Note importante :
Pour simplifier l'écriture des sommes de n termes, on notera :
∑xi = x1 + ... + xn
∑yi = y1 + ... + yn
II. Problématique
Soit un ensemble de n points (x1,y1), ..., (xn,yn) que l'on cherche à ajuster par une droite d'équation y = ax + b.
Pour mieux visualiser les choses, prenons 6 points (1,4), (2,5), (3,3), (4,4), (5,5), (6,8) situés dans le plan, et pour lesquels on souhaite déterminer la droite d'ajustement :
En notant ei le résidu ou l'écart d'ajustement égal à la différence entre la valeur de yi et la valeur de axi + b sur la droite, on peut écrire :
ei = (yi - (axi+b))
Il s'agit en fait de la mesure algébrique entre le point Mi(xi,yi) et la droite d'ajustement suivant l'axe des ordonnées (Oy).
On voit bien sur le graphique précédent que si la somme des écarts ei des 3 points situés au dessus de la droite d'ajustement est égale à +3.4, alors, pour ne pas s'en écarter en plus ou en moins, on s'attend à ce que la somme des résidus des 3 points situés en dessous de la droite soit égale à -3.4.
On devrait donc avoir :
e1 + e2 + e3 + e4 + e5 + e6 = 0
Note importante : ces écarts d'ajustement ei ou résidus peuvent être liés à des erreurs de mesures. En statistiques, les erreurs et les résidus sont d'ailleurs deux mesures étroitement liées.
Si on considère maintenant la variable E représentant ces écarts ou résidus, de modalités e1, ..., en.
E varie donc en plus ou en moins autour d'une valeur moyenne égale à 0, et comme on le verra plus loin avec les propriétés de la moyenne, on a par définition :
∑(ei - 0) = ∑ei = 0
On recherche donc la droite d'ajustement des n points (x1,y1), ..., (xn,yn) telle que la somme des résidus ∑ei soit nulle.
C'est une condition nécessaire pour déterminer cette droite mais pas suffisante.
Il nous faut en plus vérifier que les variables X et E ne sont pas linéairement corrélées :
Si on reprend notre exemple précédent, on peut alors représenter sur un graphique les résidus ei en fonction des xi par 6 points (x1,e1), ..., (x6,e6) situés dans le plan :
On constate sur ce graphique que l'axe des abscisses Ox d'équation y = 0 ajuste bien ces 6 points, et en général, conviendrait également pour n points (x1,e1), ..., (xn,en).
Le coefficient directeur de cette droite d'ajustement Ox étant nul, les 2 variables X et E ne semblent donc pas linéairement corrélées et dans ce cas on sait que leur covariance est nulle.
En admettant cette hypothèse, nous allons d'ailleurs retrouver par la suite l'expression du coefficient directeur de la droite d'ajustement sans utiliser les notions de dérivée ou de minimum d'une fonction.
III. Moyenne, variance et covariance
III-A. Moyenne
En mathématiques, la moyenne est un outil de calcul permettant de résumer une liste de valeurs numériques en un seul nombre réel, indépendamment de l’ordre dans lequel la liste est donnée. Par défaut, il s’agit de la moyenne arithmétique, qui se calcule comme la somme des termes de la liste, divisée par le nombre de termes.
Propriétés
Pour notre variable E de valeur moyenne 0, on a donc :
∑(ei - 0) = 0
ou :
∑ei = 0
III-B. Variance
En statistique et en théorie des probabilités, la variance est une mesure de la dispersion des valeurs d'un échantillon ou d'une distribution de probabilité.
Elle exprime la moyenne des carrés des écarts à la moyenne, aussi égale à la différence entre la moyenne des carrés des valeurs de la variable et le carré de la moyenne.
Elle exprime la moyenne des carrés des écarts à la moyenne, aussi égale à la différence entre la moyenne des carrés des valeurs de la variable et le carré de la moyenne.
III-C. Covariance
En théorie des probabilités et en statistique, la covariance entre deux variables aléatoires est un nombre permettant de quantifier leurs écarts conjoints par rapport à leurs espérances respectives. Elle s’utilise également pour deux séries de données numériques (écarts par rapport aux moyennes).
La covariance de deux variables aléatoires indépendantes est nulle, bien que la réciproque ne soit pas toujours vraie.
La covariance de deux variables aléatoires indépendantes est nulle, bien que la réciproque ne soit pas toujours vraie.
Propriétés
Cov(X,Y) = Cov(Y,X)
Si 2 variables statistiques X et Y ne sont pas linéairement corrélées alors leur covariance Cov(X,Y) est nulle.
Pour nos 2 variables X et E linéairement indépendantes, on admet donc que :
Cov(X,E) = 0
ou encore :
Cov(E,X) = 0
avec :
∑(ei - 0) = 0
IV. Détermination de la droite d'ajustement y = ax + b
IV-A. Coefficient directeur a
Déterminons tout d'abord la position du point moyen :
Le point moyen est donc situé sur la droite d'équation y = ax + b.
Déterminons maintenant le coefficient directeur a de la droite :
On retrouve ainsi par un autre chemin la même formule que celle employée dans la méthode des moindre carrée.
IV-B. Ordonnée à l'origine b
Elle s'obtient ainsi directement à partir de l'équation y = ax + b :
V. Application numérique
Reprenons notre série de 6 points (1,4), (2,5), (3,3), (4,4), (5,5), (6,8) situés dans le plan.
On souhaite déterminer le coefficient directeur a et l'ordonnée à l'origine b de la droite d'ajustement de ces points.
Pour cela, on va utiliser les formules vues précédemment :
On obtient après calculs :
a = 0.6
b = 2.73333333333333
VI. Implémentation en Python
La fonction ajustement_affine prend en arguments :
- x : liste des valeurs xi ;
- y : liste des mesures yi.
Elle renvoie le coefficient directeur a et l'ordonnée à l'origine b de la droite d'ajustement des points correspondants aux listes de valeurs.
Code Python : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def ajustement_affine(x,y): # initialisation des variables représentant le numérateur et le dénominateur intervenant dans le calcul du coefficient directeur xy=0; xx=0 µx = sum(x)/len(x) # évaluation de la moyenne des xi µy = sum(y)/len(y) # évaluation de la moyenne des yi # parcours simultané des 2 listes de valeurs x, y for xi,yi in zip(x,y): xy = xy + (yi - µy)*(xi - µx) xx = xx + (xi - µx)*(xi - µx) a = (xy / xx) # évaluation du coefficient directeur de la droite b = (µy - a*µx) # évaluation de l'ordonnée à l'origine de la droite return (a,b) # retourne le coefficient directeur et l'ordonnée à l'origine de la droite d'ajustement |
Test de la fonction :
Code Python : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | # listes de valeurs pour x et y x = [1,2,3,4,5,6] y = [4,5,3,4,5,8] resultat = ajustement_affine(x,y) # appel de la fonction a=resultat[0] # résultat pour le coefficient directeur a b=resultat[1] # résultat pour l'ordonnée à l'origine b # affichage des paramètres de la droite d'ajustement print("a = " + str(a)) print("b = " + str(b)) # vérification des hypothèses de départ : calcul de la somme des écarts Σei et de la covariance entre E et X print("\nVérification des hypothèses de départ :") Σei = 0 # initialisation de la variable pour le calcul de la somme des écarts ei Σex = 0 # initialisation de la variable pour le calcul de la covariance de E et X µx = sum(x)/len(x) # évaluation de la moyenne des xi for i in range(len(y)): # parcours des indices des xi, yi ei=(y[i]-a*x[i] - b) # écart d'indice i Σei = Σei + ei # ajout du résidu à la somme Σex = Σex + ei*(x[i]-µx) # ajout du produit ei*(x[i]-µx) à la somme covEX=Σex/len(x) # calcul de la covariance entre E et X # affichage de la somme des écarts Σei et de la covariance Cov(E,X) print("Σ(yi - a*xi - b) = " + str(Σei)) print("Cov(E,X) = " + str(covEX)) |
Résultats obtenus :
a = 0.6
b = 2.733333333333333
Vérification des hypothèses de départ :
Σ(yi - a*xi - b) = 2.6645352591003757e-15
Cov(E,X) = 2.9605947323337506e-16
On obtient donc le coefficient directeur a et l'ordonnée à l'origine b de la droite, et on peut constater que la somme des écarts Σ(yi - axi - b) est extrêmement proche de zéro.
Les nombres à virgule flottante sont des approximations des nombres réels, il peut donc y avoir de légères imprécisions dans les résultats des calculs portant sur ces nombres.
Si vous souhaitez avoir plus de précision dans les calculs, vous pouvez importer la librairie decimal dans votre module :
Code : | Sélectionner tout |
1 2 | from decimal import Decimal as D #... |
Code Python : | Sélectionner tout |
1 2 3 4 | # listes de valeurs pour x et y x = [D(1),D(2),D(3),D(4),D(5),D(6)] y = [D(4),D(5),D(3),D(4),D(5),D(8)] #... |
On obtient alors :
a = 0.600000000000000000000000
b = 2.733333333333333333333333333
Vérification des hypothèses de départ :
Σ(yi - a*xi - b) = 2E-27
Cov(E,X) = 0E-27
VII. Conclusion
Après avoir remarqué que la somme des écarts ei des points à la droite d'ajustement devait être nulle, et que la variable E représentant ces écarts devait être linéairement indépendante de la variable X, nous avons pu retrouver les formules du coefficient directeur et de l'ordonnée à l'origine de la droite d'ajustement. Enfin, nous avons donné un exemple d'implémentation en Python.
Sources :
https://fr.wikipedia.org/wiki/Ajuste...ns%20le%20plan.
https://fr.wikipedia.org/wiki/Moyenne
https://fr.wikipedia.org/wiki/Varian...C3%A9matiques)
https://fr.wikipedia.org/wiki/Covari...20respectives.
https://fr.wikipedia.org/wiki/Erreur...deur.%20%C2%BB