IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

User

[Actualité] Ajustement affine et variables aléatoires

Note : 2 votes pour une moyenne de 5,00.
par , 22/08/2022 à 09h16 (4237 Affichages)
I. Introduction

Nom : Linear_regression.png
Affichages : 5580
Taille : 15,5 Ko

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 :

Nom : graphique1.png
Affichages : 4200
Taille : 24,3 Ko

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 :
Nom : graph1.png
Affichages : 4159
Taille : 11,6 Ko

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.
Moyenne des n termes x1, ..., xn :

Nom : moyenne.png
Affichages : 4456
Taille : 1,4 Ko

Propriétés

Nom : proprietes_moyenne.png
Affichages : 4166
Taille : 12,7 Ko

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.
Variance de la variable X :

Nom : variance.png
Affichages : 4452
Taille : 2,8 Ko


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.
Covariance des variables X et Y :

Nom : covariance.png
Affichages : 4455
Taille : 3,1 Ko


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 :

Nom : point_moyen.png
Affichages : 4111
Taille : 20,7 Ko

Le point moyen est donc situé sur la droite d'équation y = ax + b.


Déterminons maintenant le coefficient directeur a de la droite :

Nom : coefficient_directeur.png
Affichages : 4141
Taille : 32,4 Ko

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 :

Nom : ordonnee_origine.png
Affichages : 4136
Taille : 17,1 Ko


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 :

Nom : coefficients.png
Affichages : 4452
Taille : 2,2 Ko

On obtient après calculs :

a = 0.6
b = 2.73333333333333

Nom : graphique2.png
Affichages : 3839
Taille : 28,2 Ko


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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
1
2
from decimal import Decimal as D
#...
Puis initialiser vos listes de valeurs comme ceci par exemple :

Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
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

Envoyer le billet « Ajustement affine et variables aléatoires » dans le blog Viadeo Envoyer le billet « Ajustement affine et variables aléatoires » dans le blog Twitter Envoyer le billet « Ajustement affine et variables aléatoires » dans le blog Google Envoyer le billet « Ajustement affine et variables aléatoires » dans le blog Facebook Envoyer le billet « Ajustement affine et variables aléatoires » dans le blog Digg Envoyer le billet « Ajustement affine et variables aléatoires » dans le blog Delicious Envoyer le billet « Ajustement affine et variables aléatoires » dans le blog MySpace Envoyer le billet « Ajustement affine et variables aléatoires » dans le blog Yahoo

Mis à jour 25/08/2022 à 11h00 par User

Catégories
Programmation , Python , Algorithmique

Commentaires