Régression linéaire

Dernière mise à jour : 20 Septembre 1999


  1. Théorie

    1. Droite des moindres carrés

    2. Qualité de l'ajustement

      1. Coefficients de détermination et de corrélation
      2. Variance expliquée, variance résiduelle
      3. Précision des paramètres

    3. Formulation matricielle de la régression linéaire

    4. Régression linéaire multiple

    5. Interprétation probabiliste de la régression linéaire

      1. Introduction
      2. Test des résidus
      3. Test des paramètres
      4. Analyse de la variance

    6. Régression linéaire pondérée

  2. Programmation en Turbo Pascal

    1. Régression non pondérée
    2. Régression pondérée
    3. Tests de la régression
    4. Tests des paramètres
    5. Choix de l'algorithme
    6. Choix de l'indice du premier point

    I. Théorie


    I.A. Droite des moindres carrés

    On cherche à exprimer la relation entre deux variables x et y :

    On va chercher une relation de la forme : y = b0 + b1x. C'est l'équation d'une droite, d'où le terme de régression linéaire (Figure 1).

    Figure 1 : Droite des moindres carrés


    Du fait de l'erreur sur y, les points expérimentaux, de coordonnées (xk, yk), ne se situent pas exactement sur la droite. Il faut donc trouver l'équation de la droite qui passe le plus près possible de ces points.

    La méthode des moindres carrés consiste à chercher les valeurs des paramètres b0 et b1 qui rendent minimale la somme des carrés des écarts résiduelle (SSr : sum of squared residuals ) entre les valeurs observées yk et les valeurs calculées de y :

    où n est le nombre de points et :

    d'où :

    Cette relation fait apparaître la somme des carrés des écarts comme une fonction des paramètres b0 et b1. Lorsque cette fonction est minimale, les dérivées par rapport à ces paramètres s'annulent :

    soit :

    Le système (5) est dit système des équations normales. Il admet pour solutions :



    I.B. Qualité de l'ajustement


    I.B.1. Coefficients de détermination et de corrélation

    On montre que :

    C'est l'équation d'analyse de la variance.

    Si l'équation de la droite représente correctement les valeurs expérimentales, on a :

    r2 est le coefficient de détermination. Il représente la part des variations de y qui est "expliquée" par x.

    r est le coefficient de corrélation. Il est affecté du signe + ou - selon que la pente de la droite (b1) est positive ou négative. r est toujours compris entre -1 et 1.

    Remarques :
    1. Si la droite passe exactement par les points, r2 = 1 et r = ± 1
    2. Si les variables x et y sont indépendantes, r = 0. Toutefois la réciproque n'est pas vraie : r peut être égal à 0 si la relation est non linéaire.
    3. Il vaut mieux utiliser r2 que r. En effet r < 1 donc r2 < r. Par exemple une valeur de r égale à 0.70 peut sembler correcte, alors qu'on n'a expliqué que 50% des variations de y (r2 = 0.49).

    I.B.2. Variance expliquée, variance résiduelle

    On définit :

    où p désigne le nombre de paramètres du modèle (soit p = 2 pour une droite).

    Si l'équation de la droite représente correctement les valeurs expérimentales, SSr doit tendre vers 0 et le rapport F = Ve / Vr doit tendre vers l'infini.

    L'écart-type résiduel (sr) est égal à la racine carrée de la variance résiduelle. C'est une estimation de l'erreur commise sur la mesure de y. Cette erreur est supposée constante et indépendante de y (hypothèse d'homoscédasticité).


    I.B.3. Précision des paramètres

    Il est possible d'associer à chaque paramètre (b0 ou b1) un écart-type (s0 ou s1) qui constitue une estimation de l'erreur commise sur la détermination du paramètre.

    On montre que ces écart-types sont donnés par :



    I.C. Formulation matricielle de la régression linéaire

    Le système des équations normales (5) s'écrit sous forme matricielle :

    A est la matrice du système, B le vecteur des paramètres et C le vecteur des termes constants (on a omis l'indice k pour alléger l'écriture).

    Introduisons la matrice U et le vecteur Y tels que :

    On vérifie que :

    où le symbole T désigne la transposition matricielle (échange des lignes et des colonnes).

    On en déduit :

    La matrice inverse A-1 est donnée par :

    où det A est le déterminant de la matrice.

    On en déduit :

    Soit :

    On retrouve ainsi les équations (6).

    La matrice de variance-covariance V est telle que : V = Vr A-1, où Vr est la variance résiduelle. Les termes diagonaux de V donnent les variances des paramètres, c'est-à-dire les carrés des écart-types s0 et s1. Il vient donc :

    On retrouve ainsi les équations (9).

    Le terme non diagonal, V01 (égal à V10 puisque la matrice est symétrique) représente la covariance des deux paramètres. On en déduit leur coefficient de corrélation r01 (à ne pas confondre avec le coefficient de corrélation r entre les variables x et y) :


    I.D. Régression linéaire multiple

    On suppose ici que la variable dépendante y est fonction de m variables x1,... xm :

    Les xi peuvent être des variables indépendantes ou des fonctions d'une même variable x, par exemple dans la régression polynômiale (où xi = xi) :

    Les paramètres bi sont estimés en minimisant la somme des carrés des écarts résiduelle :

    où n désigne le nombre d'observations et xik la valeur prise par la variable xi pour l'observation k.

    Les formules de la régression linéaire simple sont encore valables sous leur forme matricielle :

    avec :

    et :

    L'analyse de variance s'effectue comme dans le cas de la régression linéaire simple, sauf qu'ici p = m+1 (nombre de paramètres estimés).

    Les variances des paramètres sont données par les termes diagonaux de la matrice de variance-covariance, V = Vr A-1, les autres termes donnant les covariances. On en déduit les coefficients de corrélation entre paramètres :

    Les valeurs de r2, sr et F se calculent comme précédemment. Toutefois, le coefficient de corrélation r est ici toujours positif.

    On peut définir le coefficient de détermination ajusté par : r2a = 1 - (1 - r2) · (n - 1) / (n - p). Lorsque le nombre de paramètres (p) tend vers le nombre d'observations (n), ce coefficient tend vers 0, alors que r2 tend vers 1. L'examen de la valeur de r2a permet d'éviter l'utilisation d'un trop grand nombre de variables explicatives.


    I.E. Interprétation probabiliste de la régression linéaire


    I.E.1. Introduction

    Réécrivons le modèle sous la forme :

    où ek représente l'erreur de mesure de yk (encore appelée résidu).

    Les calculs précédents supposent que :

    1. x est connu sans erreur.
    2. L'erreur de mesure ek est constante et indépendante de y.
    L'interprétation probabiliste consiste à considérer l'erreur ek comme une variable aléatoire distribuée selon une loi normale de moyenne 0 et d'écart-type s. On montre alors que :
    1. Minimiser la somme des carrés des écarts résiduelle revient à maximaliser la probabilité des résultats observés yk. C'est le critère du maximum de vraisemblance.
    2. s est estimé par l'écart-type résiduel sr

    I.E.2. Test des résidus

    Les résidus normalisés, ek / sr, sont distribués selon une loi normale réduite (c'est-à-dire de moyenne 0 et d'écart-type 1). La figure 2 indique l'allure de la distribution (courbe de Gauss) et donne la proportion de résidus qui doivent tomber dans un intervalle donné.


    Figure 2 : Distribution des résidus normalisés


    Un résidu normalisé hors de l'intervalle [-3, 3] doit faire suspecter un point aberrant. Il peut alors être utile de recalculer la droite de régression après avoir supprimé ce point.

    Il faut aussi vérifier que les résidus ne manifestent pas de tendance à varier en fonction de y. Dans le cas contraire on doit recourir à la régression pondérée.


    I.E.3. Test des paramètres

    Pour chaque paramètre estimé bi, le quotient :

    (où ßi désigne la vraie valeur du paramètre) est distribué selon une loi de Student à (n - p) degrés de liberté.

    On peut alors, pour chaque paramètre, tester l'hypothèse nulle :

    Sous H0, ti = bi / si et on peut calculer la probabilité :

    Si cette probabilité est suffisamment faible (p.ex. < 0.05 ou < 0.10) on rejette H0 au risque p. Dans le cas contraire, on accepte H0.

    Remarques :
    1. Dans le cas d'une droite de régression, tester ß0 = 0 revient à tester si la droite passe par l'origine.
    2. Accepter H0 pour le paramètre bi revient à admettre que la variable correspondante xi n'a pas d'influence sur y. Dans ce cas, il peut être utile de recalculer l'équation de régression après avoir supprimé cette variable.

    I.E.4. Analyse de la variance

    Le rapport de variances F est distribué selon une loi de Snedecor à (p - 1) et (n - p) degrés de liberté. On peut alors tester l'hypothèse nulle :

    (H0) : La variance expliquée est égale à la variance résiduelle.

    Sous H0, on calcule la probabilité p = Prob(F > Fobs), où Fobs désigne la valeur observée de F. Si cette probabilité est suffisamment faible, on rejette H0 au risque p, ce qui revient à admettre que la variance expliquée est significativement supérieure à la variance résiduelle, donc que l'équation de régression représente correctement les données expérimentales.


    I.F. Régression linéaire pondérée

    On considère ici que la variance de l'erreur de mesure ek n'est plus constante mais dépend de yk, selon une relation du type : vk = Vr g(yk), où vk est la variance de ek, Vr la variance résiduelle et g une fonction définie par l'utilisateur, p.ex. g(yk) = yk2 pour un coefficient de variation constant. (Nous verrons dans un autre cours qu'il existe des méthodes pour déterminer automatiquement cette fonction).

    Les sommes de carrés d'écarts deviennent alors :

    où wk désigne le "poids", égal à 1/g(yk)

    Les paramètres B sont estimés par :

    W est la matrice diagonale des poids :

    Les valeurs de r2, sr et F, ainsi que la matrice de variance-covariance, se calculent comme précédemment. Le résidu normalisé pour l'observation k est égal à (ek / sr) · wk½. Ces résidus normalisés doivent suivre la loi normale réduite.


    II. Programmation en Turbo Pascal

    La programmation des calculs précédents peut être réalisée au moyen de la bibliothèque TP MATH.

    L'archive TPMATH1.ZIP contient deux unités relatives à la régression :

    Nous ne présentons ici que les procédures de régression linéaire contenues dans REGRESS.PAS. L'unité MODELS.PAS, ainsi que les programmes de démonstration, font l'objet d'un chapitre séparé.


    II.A. Régression non pondérée

    Les fonctions suivantes sont disponibles, pour la régression linéaire, multiple, et polynômiale :

      function LinFit(X, Y : PVector;
                      N    : Integer;
                      B    : PVector;
                      V    : PMatrix) : Integer;
    
      function MulFit(X        : PMatrix;
                      Y        : PVector;
                      N, Nvar  : Integer;
                      ConsTerm : Boolean;
                      B        : PVector;
                      V        : PMatrix) : Integer;
    
      function PolFit(X, Y   : PVector;
                      N, Deg : Integer;
                      B      : PVector;
                      V      : PMatrix) : Integer;
    

    La signification des paramètres est la suivante :

      En entrée
      ---------------------------------------------------------
      X        = Vecteur ou matrice des variables indépendantes
      Y        = Vecteur de la variable dépendante
      N        = Nombre d'observations
      Nvar     = Nombre de variables indépendantes 
      Deg      = Degré du polynôme de régression
      ConsTerm = Indique la présence d'un terme constant (b0)
    
      En sortie
      ---------------------------------------------------------
      B = Vecteur des paramètres de la régression
      V = Inverse de la matrice des équations normales
          (soit A-1 des équations (13), (22) et (31))
    

    Remarque : Pour la définition des types PVector et PMatrix, voir le cours sur le calcul matriciel.

    Ces fonctions retournent l'un des codes d'erreur suivants (définis dans MATRICES.PAS) :

      Symbole      Valeur   Signification
      ---------------------------------------------------------
      MAT_OK          0     Pas d'erreur
      MAT_SINGUL     -1     Singularité de la matrice 
                            des équations normales
    

    II.B. Régression pondérée

    Les 3 fonctions précédentes ont leurs homologues en régression pondérée :

      function WLinFit(X, Y, W : PVector; 
                       N       : Integer;
                       B       : PVector; 
                       V       : PMatrix) : Integer;
    
      function WMulFit(X        : PMatrix;
                       Y, W     : PVector; 
                       N, Nvar  : Integer; 
                       ConsTerm : Boolean; 
                       B        : PVector; 
                       V        : PMatrix) : Integer;
    
      function WPolFit(X, Y, W : PVector; 
                       N, Deg  : Integer;
                       B       : PVector; 
                       V       : PMatrix) : Integer;
    

    Il y a un paramètre supplémentaire en entrée : le vecteur des poids W.


    II.C. Tests de la régression

    Les procédures suivantes sont disponibles, pour la régression non pondérée et pondérée :

      procedure RegTest(Y, Ycalc          : PVector; 
                        N, Lbound, Ubound : Integer; 
                        V                 : PMatrix; 
                        var Test          : TRegTest);
    
      procedure WRegTest(Y, Ycalc, W       : PVector;
                         N, Lbound, Ubound : Integer;
                         V                 : PMatrix;
                         var Test          : TRegTest);
    

    La signification des paramètres est la suivante :

      En entrée
      ---------------------------------------------------------
      Y      = Vecteur de la variable dépendante
      Ycalc  = Valeurs calculées de Y
      W      = Vecteur des poids (si nécessaire)
      N      = Nombre d'observations
      Lbound = Indice du premier paramètre ajusté
               (0 s'il y a un terme constant b0, sinon 1)
      Ubound = Indice du dernier paramètre ajusté
      V      = Inverse de la matrice des équations normales
    
      En sortie
      ---------------------------------------------------------
      V    = Matrice de variance-covariance
      Test = Résultats des tests de la régression
    

    Test est une variable de type TRegTest, défini comme suit :

      type TRegTest = record
        Vr,                   { Variance résiduelle }
        R2,                   { Coefficient de détermination }
        R2a,                  { Coeff. de détermination ajusté }
        F,                    { Rapport de variances }
        Prob : Float;         { Probabilité de F }
      end;
    

    II.D. Tests des paramètres

    La procédure suivante teste la signification des paramètres de la régression. Elle doit être appelée après RegTest ou WRegTest car elle utilise la matrice de variance-covariance.

      procedure ParamTest(B                 : PVector;
                          V                 : PMatrix;
                          N, Lbound, Ubound : Integer;
                          S, T, Prob        : PVector);
    

    La signification des paramètres est la suivante :

      En entrée
      ---------------------------------------------------------
      B      = Vecteur des paramètres de la régression
      V      = Matrice de variance-covariance
      N      = Nombre d'observations
      Lbound = Indice du premier paramètre ajusté
      Ubound = Indice du dernier paramètre ajusté
    
      En sortie
      ---------------------------------------------------------
      S    = Ecart-types des paramètres
      T    = t de Student
      Prob = Probabilités des valeurs de t
    

    II.E. Choix de l'algorithme

    Le type TRegAlgo définit l'algorithme de résolution des équations linéaires, qui peut ensuite être choisi par la procédure SetRegAlgo, et retourné par la fonction GetRegAlgo :

      type TRegAlgo = (
        GAUSS_JORDAN,   { Algorithme de Gauss-Jordan }
        SVD);           { Décomposition en valeurs singulières }
    
      procedure SetRegAlgo(Algo : TRegAlgo);
    
      function GetRegAlgo : TRegAlgo;
    

    L'algorithme de Gauss-Jordan et la décomposition en valeurs singulières sont étudiés dans le cours sur le calcul matriciel.

    L'algorithme par défaut est la décomposition en valeurs singulières, qui requiert plus de mémoire mais est moins sensible aux erreurs d'arrondi.


    II.F. Choix de l'indice du premier point

      procedure SetFirstPoint(Index : Integer);
    
      function GetFirstPoint : Integer;
    

    Ces procédures permettent de fixer et de retourner l'indice du premier point (en général 0 ou 1). La valeur par défaut est 1, c'est-à-dire que les points vont de (X^[1], Y^[1]) à (X^[N], Y^[N]), soit N points.

    Si l'on fait p.ex. SetFirstPoint(0) les points iront de (X^[0], Y^[0]) à (X^[N], Y^[N]), soit N+1 points.