Inscription / Connexion Nouveau Sujet
Niveau Master
Partager :

estimation des paramètres d'un modèle non linéaire

Posté par
boro2010
13-12-13 à 19:55

bonjour,

en faite l'équation complète de mon modèle est la suivante:

Y = a1 * X13 + a2 * a3X2 (X1, X2:variables indépendantes, Y:var dépendante, a1, a2, a3 paramètres du modèle).

ma mèthode:

1. je fixe X2, le terme a2*a3X2 devient une constante, et là j'aurais un truc du genre Y=a1*X13 + Cste (je me suis dis que je peux trouver a1 en procédant de cette façon en calculant le coef de regression cubique)

2. une fois que le a1 trouvé, là je vais linéariser la fonction qui devient:
ln(Y - a1*X13) = ln(a3) * X2 + ln(a2) et puis je remplace a1 dans le terme à gauche, et là je procède par calcul de coefficient de correlation (regression linéaire) pour trouver la pente de la droite ainsi que l'ordonnée à l'origine.

mais pour l'instant, je me coince au niveau du point 1.

Quelqu'un peut m'aider, SVP

Posté par
Pierre_D
re : estimation des paramètres d'un modèle non linéaire 14-12-13 à 15:32

Bonjour,

Ce genre de bricolage (qui demanderait de toute façon des approximations successives) me rappelle les années 50 où l'on ne disposait pas de programmes, ni d'ailleurs d'ordinateur .
Maintenant, il y a des tas de programmes de statistique qui font de l'ajustement non linéaire, en cherchant pour un modèle donné les valeurs des paramètres qui minimisent une "fonction de perte" (par exemple la somme des carrés des écarts avec les données) ; la part artisanale qui subsiste réside :
- en premier lieu bien sûr dans le choix d'un modèle pertinent, mais cela est toujours le cas
- en second lieu, et ceci est plus spécifique, dans le choix des valeurs initiales des paramètres sur lesquelles le programme va démarrer ses approximations successives.

Posté par
LeDino
re : estimation des paramètres d'un modèle non linéaire 14-12-13 à 19:04

Citation :

Y = a_1.X_1^3 + a_2.a_3.X_2      (X1, X2:variables indépendantes, Y:var dépendante, a1, a2, a3 paramètres du modèle).

Totalement absurde !

(a2*a3) forme un coefficient à lui seul...
Il est IMPOSSIBLE de distinguer a2 et a3 en faisant simplement varier Y et les Xi.

Donc au mieux tu as un modèle du type :   Z = a.X^3 + b.Y
Si c'est le cas, tu peux faire une régression polynomiale (qui revient à linéariser).
Il suffit de calculer  X_3 = X^3  comme nouvelle variable du modèle.

Et tu te ramènes à une régression linéaire à deux variables :  Z = a.X_3 + b.Y

Citation :

... je fixe X2, le terme a2.a3.X2 devient une constante...

Ah bon ?
Et comment tu fais pour "fixer" une variable ?
Si les Xi sont des variables explicatives elles font partie des données à modéliser : tu ne les choisis pas.
Ou alors tu as un problème très particulier, et il faudrait le poser plus clairement...
(un truc du genre, je dispose d'un simulateur qui me donne des séries Y et Xi pour des valeurs fixées de paramètres ai... j'ai déjà vu ce genre de chose mais c'est très rare...)

Citation :

... une fois que le a1 trouvé, là je vais linéariser la fonction qui devient:
ln(Y - a1*X13) = ln(a3) * X2 + ln(a2)

De mieux en mieux...
Ce que tu as écris là ne correspond absolument pas à l'expression de départ de Y.
Pour "linéariser", il suffit de se ramener à un polynôme (voir plus haut).
On prend le log quand on a un produit...

Posté par
Pierre_D
re : estimation des paramètres d'un modèle non linéaire 15-12-13 à 17:26

Salut, LeDino.

Certes le modèle que tu cites serait absurde, mais celui de Boro est :   Y = a_1.X_1^3 + a_2.a_3^{X_2}

Posté par
carpediem
re : estimation des paramètres d'un modèle non linéaire 15-12-13 à 17:35

salut

c'est à croire que maintenant ils ne connaissent même plus l'alphabet ...

Z = aX3 + b.cY

réduirait à néant toute difficulté de lecture ...

Posté par
LeDino
re : estimation des paramètres d'un modèle non linéaire 15-12-13 à 21:19

Ah oui effectivement Pierre_D j'avais mal lu !
C'est plutôt rassurant pour le travail de Boro et sa tentative se comprend mieux.
Je me disais aussi que c'était bizarre que tu n'aies pas mentionné la possibilité d'un modèle polynômial ...

Alors du coup ça rend plus "plausible" ta démarche, Boro .

Mais avec un gros bémol qui est que je ne vois pas trop comment tu peux "bloquer" la variable X2 (ou Y si on veut se reposer les yeux ).
A moins que tu n'aies un volume de données considérables, ainsi qu'un modèle, et des données, supposés très bons ?

Auquel cas, il serait possible en effet de raisonner par "strates" de valeurs de Y très proches, ce qui te permettrait par régression linéaire de "capter" globalement le terme  b.c^y  comme l'ordonnée à l'origine, et le terme  a  comme ton premier coefficient.

En clair, tu considères le modèle :   Z = a.X^3 + b.c^Y
Tu crées des strates de niveau pour Y, où tous les Y sont très voisins.
A l'intérieur de chaque strate, tu régresses linéairement :  Z = a.X' + B   avec  X' = X^3   et  B = b.c^Y
Tu vérifies que a et B sont vraiment stables (faibles écart-types, p-value associée...).
Et tu regardes d'une strate à l'autre, si les différents a que tu trouves sont très variables (B change mais ça c'est normal puisque d'une strate à l'autre, Y change).
Si les variations sont fortes, la méthode sera un peu dans l'impasse.
Si les variations sont faibles, alors tu peux espérer...

Tu fixes alors le coefficient a  (par exemple comme moyenne ou médiane des différents a trouvés).

Et ensuite tu régresses :  W = ln(Z - a.X^3) = b' + c'.Y
Tu en déduis  b'  (qui te donne b)  et  c'  (qui te donne c).

Au final tu mesures la qualité de ton modèle et tu valides si elle est suffisante par rapport aux objectifs.

Posté par
LeDino
re : estimation des paramètres d'un modèle non linéaire 15-12-13 à 21:28

Ayant dit ça, je rejoins Pierre_D sur le fait qu'une régression non linéaire serait probablement préférable.
Elle sera même indispensable si les Y ne peuvent être stratifiés suffisamment, ou si la méthode s'avère instable.

Tu peux aussi, à défaut de régression non linéaire si tu n'as pas les outils, procéder comme indiqué plus haut pour trouver un premier modèle de base.
Pour ensuite essayer d'améliorer toi même ce modèle avec une macro astucieuse du genre je bouge a, b et c de da, db et dc...
... et je regarde comment bouge l'erreur quadratique...
... afin de déplacer (a,b,c) dans le sens le plus prometteur.
C'est une méthode de type gradient qui peut s'avérer intéressante si l'optimum est dans un voisinage raisonnable de la solution de base que tu as trouvée dans un premier temps.

Une autre démarche est de mailler l'espace des (a,b,c) et de calculer l'erreur sur Z. C'est bourrin, mais tellement simple à programmer...

Tout dépend du contexte et des outils.
Puis un petit coup de gradient local là où l'erreur est faible.

Posté par
boro2010
re : estimation des paramètres d'un modèle non linéaire 16-12-13 à 11:33

Merci pour vos réponses

En faite, j'ai procédé avec la méthode citée au début parcequ'en classe, on a traité un exemple
Y = a1*X1 + 1/(a1+a2*X2), et pour trouver a1, le prof a suivi la méthode:
1. il a fixé X2, et puis pour trouver a1 il a calculé le coeff de correlation (par regression lineaire).
2. il a linéarisé le modèle qui devient a2 + a3*X2 = 1/(Y-a1*X1), il a remplacé le a1 du point(1) dans l'equation, puis il trouvé les a2 et a3 (par regression lineaire egalement).

Voilà tout, et moi j'essaye d'appliquer la même méthode que le prof sur mon modèle, mais je trouve que quand je fixe X2 j'obtiens Y = a1*X13+Cste, et là la relation entre Y et X1 n'est pas linéaire (pas une droite, donc on ne peut pas appliquer le coef de corrélation pour calculer a1).

mais bon, je vais essayer le méthode de LeDino, et puis on verra ce que ça va donner

bonne journée à tous

Posté par
boro2010
re : estimation des paramètres d'un modèle non linéaire 16-12-13 à 12:04

re-bonjour,

j'ai essayé la methode de LeDino, voilà ce que ça donne comme valeur de a1 pour chaque strate (4 strates):

40.4551  
30.0032  
30.0146  
29.8055

la moyenne est a1 = 32.5696.

Cependant, des doutes s'installent quand je vois la premiere valeur, alors que les 3 dernieres sont assez proches.

Vous trouvez ça normal ???

Posté par
LeDino
re : estimation des paramètres d'un modèle non linéaire 16-12-13 à 15:04

Bonjour,

Sans voir les données ni le contexte, c'est difficile de te donner un avis sur le fait que ce soit "normal" ou pas.
En général, une modélisation est précédée d'un travail descriptif sur les données étudiées.

Par exemple en traçant les courbes "Y vs X1" pour différentes valeurs de X2, tu dois voir si tes nuages sont régulièrement alignées selon de belles courbes... si il y a des "ruptures, paliers ou seuils"... et si il y a beaucoup de variance autour de la tendance...

Tu dois aussi considérer la façon dont tu as créé ce que j'ai appelé les "strates de X2". Si tes X2 sont "sagement alignés" sur des valeurs régulièrement espacées... alors ça facilite la résolution. Mais si ça n'est pas le cas (et en général ça ne l'est pas), il faut construire ces strates soi même, en regroupant les points selon leurs proximités en X2. Le contexte et la façon dont tu as procédé, et en conséquence, la "variance des X2" qui en découle à l'intérieure de chaque strates ainsi constituées, peuvent évidemment influer sur la qualité du résultat.

La régularité de répartition des X2 peut également jouer.

D'une manière générale, il y a donc plein de raisons pour lesquelles tu peux trouver un coefficient a1 qui ne soit pas rigoureusement le même à chaque fois. C'est bien pour ça que je t'avais alerté dès le départ sur cette possibilité. Toute la question est de savoir si cette variance sur a1 est due à la variance de tes données et à l'éventuelle variance supplémentaire introduite par la stratification, ou si elle provient simplement du fait que ton modèle colle à la réalité pour certaines plages de X2 mais pas pour d'autres...

Concernant les valeurs que tu as trouvées, je les trouve plutôt "rassurantes". La très forte proximité des trois première valeurs, très proches de 30 (à moins de 1% d'écart près), donne à penser que 30 est la valeur légitime pour a1. C'est peut-être la strate où tu trouves a1=40 qui est "hors modèle". Mais là encore sans voir les données, et en particulier les valeurs des X2 sur lesquelles tu as modélisé, il est difficile de se prononcer.

En aide à la décision orientée "business" ou économie, les Xi sont plus dures à stratifier... et surtout, on n'hésitera pas à utiliser une régression non linéaire qui règle tout ça globalement. C'est plutôt ce domaine auquel je suis habitué.

Dans ton cas, il est possible qu'il s'agisse d'une modélisation dans un contexte "scientifique" ou "industriel". C'est à dire que tes Xi sont peut-être déterminés par des plans d'expérience... auquel cas le problème de stratification est quasiment résolu d'entrée. Si les mesures de Y ont été faites en faisant varier les Xi selon une grille régulière et représentative du domaine d'application ultérieur du modèle... alors tu es dans la situation idéale.

Dans ce cas, les valeurs de a1 que tu as trouvées ont d'autant plus de chances d'être significatives, et cela induit que a=30 est la bonne valeur de a pour la plage des X2 qui aboutissent à cette valeur de a.

Si tu as d'autres valeurs de X2, il serait intéressant de calculer les a1 pour chacun, puis de tracer la courbe de a1 en fonction de X2 pour voir s'il y a une continuité... et voir si ton coefficient est réellement constant, ou si il varie avec X2 selon une forme identifiable... Ceci pourrait t'amener à proposer un autre modèle que celui adopté au départ...

Ceci étant dit, je pense que tu peux avancer et passer à l'étape suivante.
En fonction de ton appréciation de la situation (en tenant compte de ce que j'ai dit plus haut) tu fixes une valeur de a1.
Et tu modélises a2 et a3.

Une fois que tes programmes sont écrits, tu peux paramétrer a1, et faire tourner la deuxième partie selon différentes valeurs de a1 pour voir l'impact induit sur a2 et a3, et sur la qualité de l'ajustement.

En principe, si la surface que tu veux modéliser (Z=F(X,Y) définit une surface en 3D) est "régulière", il y a toute une plage de valeurs pour les coefficients ai qui donnent des résultats de qualité assez comparable. Imposer a1=30 ou a1=32 ne va dans ce cas pas bouleverser radicalement la performance de ton modèle.

Essaie de faire ça, et regarde les résidus que tu trouves (écarts entre modèle et réalité). Regarde leur valeur globale. Et regarde la dispersion de ces résidus en fonction de X2 (et idem en fonction de X1). Si les résidus sont "bons", tu as trouvé un "bon modèle". Peut-être pas le meilleur, mais en tout cas assez bon pour être exploitable.

De toutes manières, pour apprécier la qualité et la validité de ton modèle, d'autres considération entrent en jeu comme sa robustesse, sa capacité de généralisation, etc... mais ça c'est pour une autre fois ...



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1715 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !