Page d'accueil Description du projet

Régression linéaire

Accès rapide

Commentaires

  1. Objectifs
  2. Lorsque j'ai eu besoin d'utiliser une régression linéaire dans un programme, j'avais déjà suivi le cours de statistiques qui me donnait les formules nécessaires. Malheureusement, je ne l'avais plus sous la main. Finalement en cherchant sur le web, j'ai fini par trouver la page d'un passionné de calculatrice qui donnait un programme pour faire ce petit calcul.

  3. Principe
  4. 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

Exemple

La figure suivante montre la droite (en vert) interpolant un ensemble de 100 points (en rouge). Pour chaque point,

On obtient : y = 1.029300 * x + 0.980529 . r2 vaut 0.962339, les données sont donc décrites correctement par cette équation.

Sources

  1. TAR.GZ archive
  2. 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
    > make
    
    Le 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
    

  3. Fichiers