Bonjour à tous,
Je cherche actuellement à fitter (encore et toujours) les ensembles de points suivants, par une courbe ayant une allure exponentielle croissante** :
X1 = 1926, 1928, 1932, 1936
Y1 = 7.1685, 7.2333, 7.2860, 7.2926
X2 = 1937, 1938, 1939, 1955
Y2 = 7.2993, 7.3801, 7.5047, 7.5686
X3 = 1955, 1962, 1973, 1976
Y3 = 7.5686, 7.6702, 7.7146, 7.7295
etc.
Ces séries peuvent comporter de 2 à N données (ici il y en a 3 par exemple a chaque fois, mais c'est un hasard :-)).
J'ai tout d'abord essayé une régression logarithmique qui me donne des résultats intéressants*, mais je pense que je pourrais arriver à quelque chose de plus intéressant encore avec une régression non linéaire utilisant la formule : y = 1-a*exp(bx) + c
De plus, l'intérêt de cette formule est que je peux étudier les coéfficients qui m'indique la "pente" de l'exponentielle par exemple.
Je travaille sous Octave, je fais donc une régression non linéaire*** (algorithme de Levenberg-Marquardt) ou il faut initialiser les coéfficients a,b,c de l'équation. Mon initialisation est [1, 1, min(Yi)] (=[a,b,c])
Lorsque l'algorithme converge, il donne bien "souvent" de meilleurs résultats que le logarithme, mais il arrive très souvent que celui ne converge pas... d'ou mon problème... s'agit'il d'une mauvaise initialisation des paramètres ? (doivent-ils être plus "prêt" de la solution) ? voyez vous des améliorations (simple étant donné mes compétences dans le domaine) ?
*:
On peut comparer les résultats avec le R2 :
(X1,Y1) :
R2 (log) = 0.98255
R2 (y) = 0.99855
(X2,Y2) :
R2 (log) = 0.82977
R2 (y) = convergence non atteinte : R2 = 0.60520
(X3,Y3) :
R2(log) = 0.99743
R2 (y) = 0.99686
etc.
**:
***:
Arpès avoir réduit les données en X pour éviter les overflows (nb trop grands).
voir topic suivant.
Partager