régression non linéaire
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

régression non linéaire



  1. #1
    invitefaad1b29

    Question régression non linéaire


    ------

    bonjour
    j'ai un problème de régression non linéaire
    mon modèle est comme suit y=a+xc et il est donc impossible de faire une transformation des variables qui me permette de me retrouver avec un modèle linéaire auquel j'appliquerais les méthodes de régression linéaire comme les moindres carrés.
    si quelqu'un à une idée d'une façon de faire (à la main sans l'utilisation de logiciels) merci d'éclairer ma lanterne.

    -----

  2. #2
    invitea3eb043e

    Re : régression non linéaire

    Une méthode assez bestiale mais qui marche très bien : tu traces en abscisse log(x) et en ordonnée log(y-a) et tu tâtonnes sur a jusqu'à obtention d'une droite ; la pente donnera c.
    Avec Excel, c'est facile, on met a en paramètre et en avant.

  3. #3
    invitefaad1b29

    Re : régression non linéaire

    merci Jean paul
    j'ai essayer de faire ça mais c'est pas vraiment pratique (j'ai essayer de faire ç amais c'est super galère) sachant que j'ai plus de 1000 données de plus j'aimerais arriver à une vrai régression sans avoir besoin de passer par un tatonage.
    Il doit bien y avoir des méthodes connus pour arriver à une solution robuste??
    en tout cas c'est simpa d'avoir répondu aussi vite

  4. #4
    invitea3eb043e

    Re : régression non linéaire

    Je ne connais pas ton problème mais il ne faut pas se faire trop d'illusions :es-tu bien certain(e) que dans ton y tu n'as pas de termes en x^b ou autres puissances ?
    En général, en affirmant qu'il n'y a qu'une puissance de x, on pollue davantage le résultat qu'en faisant ça "au pif".
    Par ailleurs, je ne vois pas pourquoi cela serait compliqué, même avec 1000 points. Bien-sûr, il ne faut pas le faire à la main mais encore une fois, Excel le fait facilement.

  5. A voir en vidéo sur Futura
  6. #5
    invitefaad1b29

    Re : régression non linéaire

    En fait mon problème est le suivant j'ai une suite de points et je dois mettre en place un modèle pour trouver une courbe de tendance(je sais que ça aussi on peut le faire sous excel mais mon projet fais que je dois écrire l'algo qui le fait et non juste donner un résultat...)
    donc le but est réellement de faire la régression non linéaire
    voila

  7. #6
    invitea3eb043e

    Re : régression non linéaire

    OK, mais je trouve aussi bizarre que tu écrives : y = a + x^c, j'aurais plutôt imaginé quelque chose du genre y = a + b*x^c, pour des raisons de dimensions.
    Faut voir...

  8. #7
    invitefaad1b29

    Re : régression non linéaire

    oui tu as raison c'est juste une erreur que j'ai comise, le modèle est effectivement y=a+b*x^c, mais ça ne change pas le fait que je sais pas comment m'y prendre pour le résoudre, j'ai déja testé le passage à la forme linéaire (en faisant ln(y)-ln(a)=b*x^c) mais dès que j'essayer de tracer la courbe en repassant grâce à l'exp au modèle non linéaire je me retrouvais avec une courbe qui n'approximait en rien mes données, donc c'est pour ça que je voulais savoir s'il n'y a pas autre chose pour faire une regression non linéaire sans passer par la regression linéaire

  9. #8
    invitea3eb043e

    Re : régression non linéaire

    Citation Envoyé par fleur_d_oranger
    oui tu as raison c'est juste une erreur que j'ai comise, le modèle est effectivement y=a+b*x^c, mais ça ne change pas le fait que je sais pas comment m'y prendre pour le résoudre, j'ai déja testé le passage à la forme linéaire (en faisant ln(y)-ln(a)=b*x^c) mais dès que j'essayer de tracer la courbe en repassant grâce à l'exp au modèle non linéaire je me retrouvais avec une courbe qui n'approximait en rien mes données, donc c'est pour ça que je voulais savoir s'il n'y a pas autre chose pour faire une regression non linéaire sans passer par la regression linéaire
    Je rappelle quand même que ln(y-a) n'est pas égal à ln(y)-ln(a) mais ce doit être un lapsus.
    Si tu veux absolument un algorithme, tu peux essayer plusieurs valeurs de a prises au hasard (pas trop quand même !) et pour chaque valeur de a, faire une régression linéaire sur ln(y-a) et ln(x), qui est une droite, donc très classique.
    Chaque valeur de a te donnera la somme des carrés des écarts par rapport à la droite.
    Par itération tu peux chercher la valeur de a qui minimise cette somme. Ca doit marcher mais je reste persuadé qu'une méthode au pif donnerait le même résultat, surtout si les données vérifient assez bien la loi cherchée.

  10. #9
    invitefaad1b29

    Re : régression non linéaire

    ln(y)-ln(a)=ln(y/a) je le sais , par contre je ne vois pas ce que tu veux dire par une méthode au pif sachant qu'apres mon algo doit marcher tout seul donc sans avoir besoin de moi pour lui donner cette valeur!!!
    par contre j'ai déja essayer la méthode que tu décris (faire la régression linéaire de ln(y-a) et ln(x) et la droite obtenu est pas mal) mais tjs est il que dès que je repasses à l'exponentiel je me retrouve avec une courbe qui ne m'approxime en rien mes données

  11. #10
    invitea3eb043e

    Re : régression non linéaire

    C'est tout le problème des régressions non-linéaires : quand on a des variables qui varient beaucoup, et si on ne travaille pas sur des logarithmes, il est évident que les fortes valeurs de y vont peser beaucoup plus lourd que les faibles. Autrement dit, l'algorithme va faire de son mieux pour que la courbe passe près des points à droite (si c>0). La régression linéaire ne présente pas ce problème : la droite est la même aux 2 bouts.
    Il faut donc faire un choix : regarder la courbe en coordonnées ordinaires et subir l'inconvénient ci-dessus ou bien regarder en coordonnées logarithmiques et être satisfait quand la courbe se marie au mieux avec les points aux 2 bouts.
    Tout dépend de la réalité du problème : les petites valeurs de x ont-elles une vraie signification ou pas ? Le problème n'est donc pas que mathématique.

  12. #11
    invitefaad1b29

    Re : régression non linéaire

    donc il n'y a pas d'autre solution que celle ci??
    ce que tu me dis c'est que je ne peux rien faire d'autre qu'une boucle qui approxime au mieux mon a et de déterminer le b et le c grâce à la méthode des moindres carrés appliqué au log
    mais je vais avoir un problème parceque ce n'est pas vraiment le boulot qu'on me demande
    mais il doit bien exister une méthode autre que le passage par la méthode linéaire non??

  13. #12
    invitea3eb043e

    Re : régression non linéaire

    Il y a une infinité de solutions. Pour une régression linéaire, la méthode des moindres carrés repose sur le fait qu'elle donne la solution la plus probable pour des erreurs aléatoires. Mais on pourrait imaginer d'autres critères, par exemple minimiser la somme des distances entre les points et la droite, le résultat sera différent.
    Pour le cas non-linéaire, il faut bien préciser quel est la fonction erreur qu'on souhaite minimiser : est-ce la somme des carrés entre yi et le point sur la courbe au point xi ? Mais alors on tombe sur le problème déjà évoqué que l'on donne trop de poids aux grandes valeurs. Ou bien la somme des erreurs relatives (y - yi)/yi qui favoriserait plutôt l'approche par les logarithmes ?
    En fait, tout dépend de la source des données, de leur qualité, de la nature du bruit et du domaine d'application de la loi en puissance de x.
    Il faut vraiment réfléchir à la signification de la loi puissance, notamment si elle est censée s'appliquer sur une large dynamique de variables x.

  14. #13
    invitefaad1b29

    Re : régression non linéaire

    mais même si on utilise la somme des erreurs relatives je retombe dans le même cas de figure puisque je reste dans le domaine d'une régression non linéaire qui a été "linéarisé" grâce au passage par le log...
    ce que j'aimerais savoir c'est est ce qu'il n'y a pas de moyen direct pour minimiser la distance entre mes points et ma courbe sans avoir a passer par la droite.
    si c'est non alors je ne vois pas de moyen technique pour arriver à un résultat autrement qu'en fesant un algo qui calcul la distance pour plusieurs valeurs du trio (a,b,c)??mais ce n'est pas vraiment ce à quoi je dois arriver, le but étant d'utiliser des méthodes de modélisations qui existent, ceci dit je te remercie pour le temps que tu consacre à ce sujet parecque tu es le seul à avoir répondu!!

  15. #14
    invite1b83f37c

    Re : régression non linéaire

    bonjour tout le monde !

    je tiens à répondre à ce post car il est la première entrée que fournit google lorsqu'on tape "regression non lineaire", et ne contient pas la reponse qui convient.

    en effet j'ai moi meme eu un probleme tres similaire à celui de fleur_d_oranger : ma fonction est du type L * (1 - exp(ax + b)) et mon but etait d'obtenir la limite L.

    la technique de tatonage fonctionne et est meme automatisable, cependant elle n'est pas très précise à cause du calcul de R² lors de la regression lineaire de la fonction linearisée.

    la bonne solution qui est tout à fait adaptée a la creation d'un algorithme est d'utiliser la methode de Gauss-Newton qui est décrite à cette adresse http://fr.wikipedia.org/wiki/Moindre..._non_linéaires (tout simplement ^^).

    j'ai finalement opté pour une version simplifiée valable pour les fonctions f1(x)=L * (1- exp(a*x+b)) et f2(x)=L + exp(-a*x + b) :
    il faut 3 valeurs de la fonction experimentale prises _à intervalles réguliers_ :
    y1 = f(x1)
    y2 = f(x2)
    y3 = f(x3)
    puis on cherche la valeur de L telle que la linéariasation correspondante donne trois points alignés (solution unique, doù les 3 points) ce qui donne :
    (ln(y2 - L) - ln(y1 - L))/delta_x = (ln(y3 - L) - ln(y2 - L))/delta_x (si on etudit f2)
    ....
    L = (y2^2-y1*y3)/(2*y2-y1-y3)

    et voila ! le resonnement est le meme pour f1 et il se trouve qu'on obtient la même formule.

Discussions similaires

  1. régression non linéaire
    Par invite5f2e931b dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 10/10/2007, 17h46
  2. Régression linéaire
    Par invite0fadfa80 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 15/09/2007, 19h31
  3. Régression Linéaire
    Par invite9af41ef3 dans le forum Mathématiques du collège et du lycée
    Réponses: 6
    Dernier message: 18/07/2007, 09h45
  4. régression non linéaire
    Par invite88d513bd dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 26/04/2007, 10h11
  5. Régression non linéaire
    Par invite84b64e53 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 23/04/2007, 00h44