Régression plane

Accueil

Régression d'une fonction

Régression selon le critère des moindres carrés

9 Régression multiple du 10ème degré

1 Combinaison linéaire de fonctions

2 Application au lissage polynomial

3 Droite des moindres carrés

4 Parabole des moindres carrés

5 Polynôme du troisième degré

6 Lissage Savitzky et Golay

7 Régression multiple

8 Régression plane

9 Régression multiple du 10ème degré

 

10 Régression d'une fonction

 


  Dans la page précédente le programme "Rgrs_Mult" réalise une régression plane. Ici il sera utilisé jusqu'au 10ème degré. Après une brève présentation de la structure de son sous-programme essentiel , RGRS_MULT , quelques démo souligneront ses possibilités


  Si l'on se contentait d'un polynôme de régression du second degré du type :

le système d'équations  serait :

la sommation portant sur tous les points concernés.

  La résolution du système relèverait déjà du calcul matriciel.

  La description d'une surface un peu tourmentée exigera de recourir à des polynômes de degrés supérieurs.
  Ainsi, au dixième degré, elle sera décrite par une équation comportant les 66 coefficients :

dont la résolution nécessite l'inversion d'une matrice 66 x 66. Au delà, la double précision devient insuffisante, l'inversion de la matrice serait impérativement effectuée en multi-précision.

  Le programme étant susceptible de traiter des régressions du premier au dixième degré, la première étape consiste à déterminer le nombre de termes du polynôme c'est à dire les dimensions de la matrice correspondant au degré choisi, selon une formule semblable à celle qui exprime la somme des N premiers nombres.

 
'Calcul des dimensions de la matrice
Dim_Mat = (Deg + 1) * (Deg + 2) / 2

 

  La seconde étape est consacrée au calcul des deux suites d'exposants de x et de y dans la suite des termes du tableau ci-dessus :  0    0 1    0 1 2    0 1 2 3    0 1 2 3 4 ... pour x et :   0   1 0    2 1 0    3 2 1 0    4 3 2 1 0 ... , pour y.

  Qui correspondent aux exposants de x et de y dans la suite des termes : Constante , Y, X , Y^2 , YX , X^2, Y^3 , Y2X , YX^2, X^3, ...

'Calcul des deux suites d'exposants :
K = 0
For I = 0 To Deg
    For J = 0 To I
        Exp_I(K) = J
        Exp_J(K) = I - J
        K = K + 1
    Next J
Next I

 
  Disposant de ces séries d'exposants, les deux matrices sont constituées dans la troisième étape

'Constitution de la matrice carrée
For I = 1 To Dim_Mat
    For J = 1 To Dim_Mat
        Som = 0
        For K = 1 To N_Pt
            Som = Som + XYZ(1, K) ^ (Exp_I(Dim_Mat - J) + Exp_I(Dim_Mat - I)) * XYZ(2, K) ^ (Exp_J(Dim_Mat - J) + Exp_J(Dim_Mat - I))
        Next K
        A(I, J) = Som
    Next J
Next I

'Constitution de la matrice ligne

For I = 1 To Dim_Mat
    Som = 0
    For K = 1 To N_Pt
        Som = Som + XYZ(1, K) ^ Exp_I(Dim_Mat - I) * XYZ(2, K) ^ Exp_J(Dim_Mat - I) * XYZ(3, K)
    Next K
    Mat_Ligne(I) = Som
Next I

  Suit l'inversion de matrice, décrite avec l'ensemble du sous-programme, dans l'annexe 3.

  Le sous-programme se termine par le calcul des coefficients du polynômes en multipliant la matrice inversée par la matrice ligne.


  Lignes de niveau

  Le tracé des lignes de niveau sur le domaine de mesure apporte une représentation classique de  la topologie.

  Les lignes de niveau résultent d'un traitement graphique selon le procédé décrit à propos des isothermes : "... seront noircies toutes les cellules dont au moins 1 des 8 plus proches voisines appartient à une zone de température inférieure."

  Lignes de plus grande pente

  Elles seront tracées pas par pas. Disposant de l'équation de la surface des moindres carrés, le programme calcule les deux dérivées en un point  x1,y1.

'Calcul de la dérivée partielle par rapport à X ( en évitant tout risque d'exposant négatif )
Som_dZ_dX = 0
For K = 1 To Dim_Mat
E1 = Exp_I(K - 1) - 1
E2 = Exp_J(K - 1)
If E1 >= 0 And E2 >= 0 Then Som_dZ_dX = Som_dZ_dX + Coef(K) * Exp_I(K - 1) * ((X1 / 100) ^ E1) * (((500 - Y1) / 100) ^ E2)
Next K

'Calcul de la dérivée partielle par rapport à Y ( en évitant tout risque d'exposant négatif )
Som_dZ_dY = 0
For K = 1 To Dim_Mat
E1 = Exp_I(K - 1)
E2 = Exp_J(K - 1) - 1
If E1 >= 0 And E2 >= 0 Then Som_dZ_dY = Som_dZ_dY + Coef(K) * ((X1 / 100) ^ E1) * Exp_J(K - 1) * (((500 - Y1) / 100) ^ E2)
Next K

dérivées permettant  de calculer les coordonnées du point suivant, en pondérant d'un pas prédéfini et par la racine de la somme de carrés des deux dérivées

'Défini la seconde extrémité d'un segment de pente
Q = Sqr(Som_dZ_dX ^ 2 + Som_dZ_dY ^ 2)
If Q <> 0 Then Relais = Sens * Pas / Q Else Relais = 0.1
X2 = X1 + Relais * Som_dZ_dX
Y2 = Y1 - Relais * Som_dZ_dY

qui se traduit géométriquement par :


  La variable " Sens " prendra successivement les valeurs -1 et +1 afin d'explorez la ligne de plus grande pente dans les deux sens.

  Après avoir tracé le segment joignant Xn,Yn à Xn+1,Yn+1 l'opération reprend depuis Xn+1,Yn+1 pour définir le segment suivant.

  Le procédé est aussi exploité pour le tracé des lignes de flux thermique dans les pages " Diffusion de la chaleur " .


Télécharger Rgrs_Mult

  Cette version est téléchargeable dans  " C:\Program Files " de la même façon que Rgrs_Pol .
  Bien qu'il soit possible d'y introduire vos données personnelles, soit manuellement , soit sous forme de fichier, il sera préférable d'incorporer le sous-programme "Public Sub Rgrs_Mult" dans votre propre programme. En effet, dans ce programme de démonstration, les coordonnées étant limitées à 0<x<5  et 0<y< 5 , les changements de variables sont impératifs

Télécharger Rgrs_Mult

  L'aide décrit les différentes fonctions du menu.


Démos

1- 

La première démo s'applique sur 36 points de la "selle de cheval" d'équation :

Z = X² + 5 (Y-X ) - Y²

  Courbes de niveau et lignes de plus grande pente y forment deux réseaux orthogonaux particulièrement esthétiques

  Les coordonnées de 36 points considérés correspondant précisément aux valeurs de la fonction, les coefficients du polynôme sont parfaitement restitués ( en rouge ).
  Quelques lignes de plus grandes  pentes sont tracées depuis deux origines différentes, seul un léger épaississement permet de les distinguer.

2- 

La seconde démo représente une excavation carrée de profondeurs définies en 121 points par l'équation :

  Ici aussi les coordonnées sont régulièrement réparties et les profondeurs recalculées correspondent exactement aux valeurs théoriques. Le polynôme calculé est identique au polynôme initial à 10-8 près.

3- 

Même bassin mais avec une répartition aléatoire des mesures de profondeur, affectées d'erreurs statistiques

  Pour mieux simuler un cas concret les profondeurs sont affectée d'une erreur calculée selon l'algorithme Box-Muller , deux appels successif de la démonstrations conduiraient donc à des figures différentes.

 Le lissage joue parfaitement son rôle et si les coefficients sont légèrement modifiés, la forme générale est respectée bien que deux zones d'altitudes négatives apparaissent. Les coordonnées à l'emplacement de la flèche s'affichent en .rouge.

4- 

Cette dernière démo constitue une application cartographique

  Elle travaille sur un petit secteur d'une carte IGN dont les altitudes sont relevées en 199 points.     

  Avec un polynôme du dixième degré les écarts se révèlent insignifiants en dehors des bords. Il devient possible de tracer des courbes de niveau supplémentaires et d'évaluer l'altitude du col signalé par la flèche pourtant éloigné de  tout pointé.
  A noter la convergence des lignes de plus grande pente vers le talweg.


Extraire la page pour l'enregistrer ou l'imprimer