OVH Cloud OVH Cloud

Problème avec DROITEREG

1 réponse
Avatar
gagwel
Bonjour,

je me suis fait un petit modèle de .xls avec notamment une régression
polynomiale "simulée" par une régression multilinéaire (en gros je fais une
regression linéaire sur plusieurs variable avec mes variables qui sont x,
x^2, x^3,...).

J'avais une quinzaine de tableaux identiques à remplir et tout s'est bien
passé pour les 14 premiers. Pour le quinzième en revanche, les valeurs de la
courbe d'interpolation étaient totalement différentes des valeurs
interpolées, avec pourtant un coeff R²=1.

J'ai alors "tenté l'interpolation" en traçant un graphe et en affichant
l'équation de la courbe de tendance polynomiale de degré identique à mon
calcul initial. En reportant les coeffs du polynome dans la feuille de
donnée, l'interpolation est quasi parfaite!

D'ou peut venir le problème? La seule différence entre la quinzième série de
données (x,f(x)), c'est que les x sont plus gros que pour les autres séries.
Les f(x) ont à peu près les mêmes valeurs...

1 réponse

Avatar
Nicolas B.
Salut,

DROITEREG semble avoir quelques difficultés avec les grands nombres.

La fonction suivante permet de retrouver les mêmes coefficients que ceux
données par l'équation affichée sur le graphique :

Function MoindresCarres(rgX As Range, rgY As Range, p As Integer)
Dim n As Integer
Dim i As Integer
Dim j As Integer
Dim M() As Double
n = rgX.Cells.Count
ReDim M(n - 1, p)
For i = 0 To n - 1
For j = 0 To p
M(i, j) = rgX(i + 1) ^ j
Next
Next
With WorksheetFunction
If rgX.Rows.Count = 1 Then
MoindresCarres = .MMult(.MInverse( _
.MMult(.Transpose(M), M)), .MMult(.Transpose(M), _
.Transpose(rgY)))
Else
MoindresCarres = .MMult(.MInverse( _
.MMult(.Transpose(M), M)), .MMult(.Transpose(M), rgY))
End If
End With
End Function

La syntaxe de la fonction est
=moindrescarres(ValeursX;ValeursY;DegrePolynome)
et elle renvoie une matrice colonne des coefficients du polynôme.


A+
Nicolas B.

Bonjour,

je me suis fait un petit modèle de .xls avec notamment une régression
polynomiale "simulée" par une régression multilinéaire (en gros je fais une
regression linéaire sur plusieurs variable avec mes variables qui sont x,
x^2, x^3,...).

J'avais une quinzaine de tableaux identiques à remplir et tout s'est bien
passé pour les 14 premiers. Pour le quinzième en revanche, les valeurs de la
courbe d'interpolation étaient totalement différentes des valeurs
interpolées, avec pourtant un coeff R²=1.

J'ai alors "tenté l'interpolation" en traçant un graphe et en affichant
l'équation de la courbe de tendance polynomiale de degré identique à mon
calcul initial. En reportant les coeffs du polynome dans la feuille de
donnée, l'interpolation est quasi parfaite!

D'ou peut venir le problème? La seule différence entre la quinzième série de
données (x,f(x)), c'est que les x sont plus gros que pour les autres séries.
Les f(x) ont à peu près les mêmes valeurs...