Page d'accueil | Description du projet |
On suppose que l'on dispose d'un ensemble de données (xi,yi)i=1..n et on cherche s'il existe une droite d'équation y=a1.x + a0 qui corresponde bien aux données.
En faisant une minimisation aux moindres carres, on obtient les resultats suivants :
Pour simplifier les calculs, on peut constater que :
Le résultats ci-dessus viennent d'une feuille de calcul Maple.
On examine ensuite le coefficient de corrélation r2 :
Plus il est proche de 1, mieux les données sont décrites par une droite
La figure suivante montre la droite (en vert) interpolant un ensemble de 100 points (en rouge). Pour chaque point,
x est tiré au hasard dans [0;1]
y est obtenu par : y = x + 1 + 0.1 p, où p est une perturbation répartie uniformément dans [-1;1]
On obtient : y = 1.029300 * x + 0.980529 . r2 vaut 0.962339, les données sont donc décrites correctement par cette équation.
Comme toutes les sources sur mes pages web, l'archive fournie ici est sensée fonctionner en l'état.
> tar zxf linreg.tgz > cd linreg > makeLe programme test.c est lancé automatiquement à la fin de la compilation pour en tester le résultat. Sur ma machine, j'obtiens :
gcc -c -o test.o test.c gcc -c -o linreg.o linreg.c gcc -o test_reg linreg.o test.o ./test_reg y = 1.029300 * x + 0.980529 with a precision of 0.962339