Régression linéaire par la méthode des coefficients moyennés

Description

Ce code source permet de modéliser un nuage de points selon une droite. Par exemple, {(0,0)(5,5)(20,20)} se fait modéliser par y=x.

Mais généralement, ce genre de travaux mathématiques se fait selon la méthode dite "des moindres carrés", qu'exploitent entre autres les calculettes TI. Sur le site http://www.vbfrance.com/ un code source dédié explique la méthode. Le principe est simple à penser: on fait passer une droite qui tente de minimiser la distance verticale entre la droite et tous les points.

J'avais voulu adapter en Delphi le PDF de l'exemple VisualBasic: ça marchait pour 3 points et pas plus. Y'a forcément une erreur du côté de l'un des protagonistes, mais, alors ennuyé, j'ai pensé à un truc: une nouvelle méthode basée sur une moyennation de coefficients. Le modèle obtenu est du type affine: y=ax+b

Le principe est totalement inofficiel et empirique. N'empêche que c'est également redoutable. Je ne sais pas si ma pensée existait déjà dans une autre, mais j'assure à 100% que ce source est "made in me".

1) On donne au minimum 2 points, sinon il n'y a pas de droite.
2) On considère ensuite toutes les combinaisons de 2 points du nuage. Ca donne un vecteur quel que soit son sens. En calculant le dy/dx, on a un coefficient directeur. En répétant sur tous les vecteurs possibles, et en faisant leur somme, on finit par obtenir au final un coefficient directeur moyen qui stipule une tendance.
3) On refait un calcul similaire. Pour chaque vecteur possible, on a un coefficient directeur définissant une droite. On imagine alors cette droite et on en cherche son ordonnée à l'origine. On fait la somme, puis la moyenne de toutes les ordonnées à l'origine. Ce nombre moyen est notre ordonnée à l'origine pour notre modélisation.
4) Afin de savoir si notre droite y=Amoy * x + Bmoy correspond bien à notre nuage, on peut s'amuser à calculer des distances en se plaçant dans un repère orthonormal. On passe donc notre équation réduite à celle cartésienne: y=ax+b --> -ax+y-b=0. Pour un point M de coordonnées (Xi,Yi), la distance à notre droite est d=|-a*Xi+Yi-b|/RacineCarrée(a²+1). C'est une application directe du produit scalaire. En faisant la somme des distances, puis leur moyenne, on obtient une distance moyenne d'erreur. Plus cette distance tend vers 0 et plus la modélisation est réaliste.

Si je devais caractériser une telle méthode, je dirais qu'elle donne une tendance pour une évolution future et modélise l'essentiel des points qui évoluent pareillement.

Si on veut se renseigner sur les moindres carrés, on peut aller visiter le lien suivant: http://www.sciences-en-ligne.com/momo/chronomath/anx2/meth_carr.html. Pour adapter en Delphi, il faut s'accrocher... mais c'est pas impossible !

Conclusion :


Vous pouvez toujours aller voir: http://altert.family.free.fr/
ainsi que http://altert.family.free.fr/fils/prgms/progd22.html

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.