IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Méthodes prédictives Discussion :

Régression linéaire et point d'inflexion


Sujet :

Méthodes prédictives

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Régression linéaire et point d'inflexion
    Bonjour

    Pour calculer la tendance d'une sute de resultat sur une echelle de temps j'utilise une formule de régression linéaire simple

    Mais j'aimerais aussi essayer de determiner si la tendance generale entre les dates extreme a subit une inflexion significative

    Existe-t-il une formule permettant de calculer cela ?

    Merci de votre aide
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    euh...

    Ta régression linéaire te donne un coeff...


    Et une équation Y = AX + B


    Si Ys et Ye sont les Y de début et fin, alors tu peux calculer ton Dy pour tes début et fin (par rapport à la régression).

    • Si ils sont dans l'erreur, pas de distortion signifcative.
    • Si Ys est hors de l'intervalle moyen, alors c'est quasi dès le départ (ou bien à calculer) qu'il y a eu distortion.
    • Si Ye est hors de l'intervalle moyen, alors il y a (sans doute) distortion du signe de Ye-Ys.


    Mais si ton problème est celui-ci, peut-être que la régression linéaire n'est pas la meilleure manière... Peut-être qu'une formule donnant une courbure (spline par exemple) serait plus adaptée ? A moins d'avoir déjà une idée de la forme que cela pourrait prendre...

    Car qui dit "tendance générale" dit "intervalle sur lequel la calculer", ou à l'opposé "courbe"..

    A moins que tu ne forces les points de départ et d'arrivée à être au centre de ta "régression" linéaire, et alors tu as simplement une droite, allant de l'un à l'autre, et tu dois calculer les écarts entre les 2..

    Mais disons que la philosophie est relativement antinomique entre "régression linéaire" (sur l'ensemble) et "détermination d'un point d'inflexion"...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Mais disons que la philosophie est relativement antinomique entre "régression linéaire" (sur l'ensemble) et "détermination d'un point d'inflexion"...
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  4. #4
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Mais disons que la philosophie est relativement antinomique entre "régression linéaire" (sur l'ensemble) et "détermination d'un point d'inflexion"...
    En theorie oui mais dans la pratique j'ai peut être mal exprimé l'hypothese
    Voici un contexte
    1° J'analyse des magazins dont les resultat pour certains produit ont une tres grande volatilité
    2° Je dois identifier des magasins dont les résultats sont en baisse ou en hausse au cours d'une année. Le coeff A de la regression linéaire me donne cette tendance
    Maintenant j'essaye d'identifier si un événement annuel a pu determiner cette tendance. Imaginons que le magasin avait de bons résultat en légere hausse sur les 3 premiers mois de l'année et et qu'un vendeur a quité le magazin peu apres. La tendance annuelle pourrait etre en baisse mais liée a un événement au cours de l'année
    Je cherche donc a determiner s'il y a eu inversion de tendance au cours d'une année en vue le cas échéant d'en chercher la cause
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Citation Envoyé par Souviron34
    Peut-être qu'une formule donnant une courbure (spline par exemple)
    Merci de ton aide Souviron

    Pour connaitre l'inflexion eventelle, tu as certainement raison je pourrais ensuite determiner les sommet de la courbe
    Mais quel est la bonne formule pour calculer une courbe sur un nuage de point s'étallant sur l'axe des X ?

    N.B. : j'applique tout cela en C#
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Membre habitué Avatar de M.Max
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 90
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par olibara Voir le message

    Mais quel est la bonne formule pour calculer une courbe sur un nuage de point s'étallant sur l'axe des X ?
    Une régression polynomiale ?

    y = b0 + b1*x + b2*x^2 + b3*x^3 +... + bk*x^k

    où tu rajoutes autant d'ordre que nécessaire et où tu estimes les Betas par une simple OLS

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci M.Max

    Effectivement une regression Polynomiale semble donner ce que je cherche

    Mais non seulement je suis asser nul en representation de formules
    Et je n'ai pas encore trouvé un bon exemple de formule de regression polynomiale sufisemment claire et que je pourrais traduire en C#
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par olibara Voir le message
    Je cherche donc a determiner s'il y a eu inversion de tendance au cours d'une année en vue le cas échéant d'en chercher la cause
    Alors tu as 2 solutions.

    La plus simple est de déterminer une pente de point à point.. Quitte à faire un lissage (moyenne pondérée sur 3 points par exemple). Un changement de signe te donnera (si il persiste) le point d'inflexion si il existe..

    La second est effectivement une approximation polynomiale.. J'avais cité le spline, mais effectivement il y en a tout un tas.. Les algos se trouvent un peu partout.. Pour le spline, un coup d'oeil à Numerical Recipes, une recherche avec "spline cubique", ou tout simplement ici (par exemple dans la rubrique Contribuez) te donnera plusieurs codes


    Citation Envoyé par olibara Voir le message
    Mais quel est la bonne formule pour calculer une courbe sur un nuage de point s'étallant sur l'axe des X ?

    N.B. : j'applique tout cela en C#
    Voir indications ci-dessus...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci Sauviron34

    La pente de point a point meme en lissant n'est pas vraiment pertinente dans mon cas (voir image tu comprendras) ou alors je dois vraiment iterer sur plusieurs points avec une methode qui sera plus brico qu'autre chose

    Par contre la regression polynomiale me seduit
    J'ai un peu cherché des exemples en code cet apres midi avec mais la peche est encore maigre je vais essayer les mots clef "spline cubique"
    Images attachées Images attachées  
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  10. #10
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    1) tes données ont une forte dépendance quotidienne . En traçant des résultats hebdomadaires tu aurais une vue plus claire.
    2) Sur le fond, tu veux faire des statistiques avec un échantillon trop petit. Dans ce cas, la seule méthode justifiable est le "doigt mouillé".
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  11. #11
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci Nebulix

    Resultat quotidiens ou hebdomadaires, la droite de regression linéaire sur les résultat qutidiend me donne déja un tres bon apperçu de la tendance. Et elle ne devrait pas changer sur des resultats hebdomadaire !

    J'admet que si on se contente d'une analyse a l'oeil ou au doigt mouillé le cumul hebdomadaire diminuerait le bruit mais j'aimerais isoler de maniere automatique les relevés ou l'on peut voir apparaitre une inversion de tendance car des graph comme celui en exemple j'en ai plusieurs centaine et je ne peux pas passer le temps a les analyser tous a l'oeil ou au doigt mouillé comme tu dis
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  12. #12
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonsoir,
    peut-être devrais-tu demander à google ce qu'il sait sur les séries chronologiques. Il y a sûrement de bonnes idées/méthodes à récupérer.

  13. #13
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci Aleph69

    Effectivement, les articles sur le sujet illustrent tres bien mon contexte d'investigation

    Et je suis d'autant plus convaincu qu'une regression polynomiale est ce qu'il me faut (en complement de la regression linéaire que je fais déja)

    La regression linéaire me donne un appercu de tendance moyenne sur une periode, la regression polynomiale devrait (je pense) permettre d'identifier s'il y a eu inversion significative de tendance durant la periode

    Mais pour le moment je n'ai pas encore trouvé la recette a appliquer sur mes points pour y arriver et c'est ce que je continue a a chercher
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  14. #14
    Membre expérimenté
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Points : 1 453
    Points
    1 453
    Par défaut
    Si tu as des centaines de courbes, une régression linéaire te permets de sélectionner celles qui ont des tendances sensiblement meilleures ou pires que les autres et y exercer ta sagacité.
    Ou faire un fit du 2e degré et sélectionner celles qui ont un coeff du 2e degré trop négatif.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  15. #15
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par olibara Voir le message
    Et je suis d'autant plus convaincu qu'une regression polynomiale est ce qu'il me faut (en complement de la regression linéaire que je fais déja)
    Personnellement, je n'en suis pas du tout convaincu. Je ne comprend pas bien à quoi te servirait de faire une régression : ne serait-ce pas plutôt une approximation/interpolation polynômiale. Ensuite, il est quand même relativement difficile d'établir un modèle polynomial de ton signal : si tu interpoles tu t'exposes à des tas de problèmes numériques (phénomène de Gibbs, etc) et si tu approches naïvement (moindres carrés, etc) tu risques de perdre l'information que tu cherches. Enfin, en supposant que tu trouves un bon modèle, il faut encore que tu valides statistiquement (test d'hypothèse) que la cause que tu crois être à l'origine du phénomène observé est pertinente. Comme mentionné par une autre personne, tu as peut-être un problème de sous-échantillonnage. Tu peux aussi avoir du bruit à éliminer ou des périodes/saisons facilement identifiables. C'est la raison pour laquelle il me semble que ce que tu cherches à faire se trouve dans la théorie des séries chronologiques plutôt que dans une simple approche polynomiale. N'oublie pas non plus que tu peux analyser ton signal avec des séries d'exponentielles (transformées de Fourier, ondelettes, etc).

    Bon courage en tous cas!

  16. #16
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Déjà, tu dois décider (=définir) ce qu'un un "évenement".

    Je partirais plus sur

    - des données normalisées à la moyenne annuelle (ou plusieurs moyennes sur plusieurs périodes, s'il y a saisonnalité - plus que probable, un magazin de jouet taffe plus à Noel par exemple)

    - soit une étude sur les moyennes mobiles d'ordre 7jrs par exemple, avec décomposition du signal en tendance + bruit

    - soit sur le nuage des points (date, valeur), en recherchant le nombre de régions différentiantes - par médoïsation par exemple; pour une région R donnée (par exemple où les valeurs sont faibles, tu peux déterminer les périodes concernées par R - en regardant l'intersection (en %) d'une période [j1,j2] avec les dates de R par exemple.
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  17. #17
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci a tous

    Pour Aleph69 concernant le sous-echantillonage, je ne peux pas "inventer" plus d'info que celle disponible : a savoir des résultats quotidiens sur une année

    Pour nemerle oui peut etre que la bonne methode est peut etre tres empirique

    Soit :
    - Calculer la regression par trimestre
    - Evaluer les moyennes sur des fenetre de temps

    Et bricoler mes fenetres de temps
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  18. #18
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par olibara Voir le message
    Pour Aleph69 concernant le sous-echantillonage, je ne peux pas "inventer" plus d'info que celle disponible : a savoir des résultats quotidiens sur une année
    Si tu regardes les méthodes associées au données manquantes, les méthodes semi-supervisées ou encore la théorie de l'échantillonnage (Shanon), tu vas te rendre compte que beaucoup de personnes "inventent" l'information qu'ils n'ont pas a priori.

    Dans le cas de ton exemple avec les magasins, je commencerais par étudier un sous-échantillon de courbes de manière empirique de manière à identifier quelques causes de changement de tendance. Cela va te permettre d'étiqueter tes courbes. Ensuite, tu pourras utiliser une approche semi-supervisée (self-training, co-training) pour étiqueter un plus grand nombre de courbes et valider sur une base de test.

    Une autre approche consisterait à faire de l'analyse de données (acp,...) ou encore recourir à une démarche de classification automatique (clustering, k-means, cah, expectation-maximization, cartes de Kohonen) pour trouver des classes de courbes "naturelles" que tu pourras analyser localement.

    Faire de la sélection de variable te permettrait également de trouver les moments/périodes qui discriminent le mieux tes classes.

    Bref, il faut extraire de l'information avant tout.

    Le prétraitement est également indispensable mais tu as déjà eu des propositions intéressantes sur le sujet (lissage par moyennes mobiles, décomposition de signal avec bruit, ...).

  19. #19
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Deux petits exemples ci-joint de valeurs journalières, représentées par le graphe des (valeurs, No de jour):

    - le 1ier représente les prix du gaz à Zeebrugge

    - le 2nd est un stack de 3 phénomènes aléatoires saisonniers


    La dernière est triviale; concernant la 1ière, le mieux qu'un "algorithme" puisse faire, c'est par exemple


    Mais le petit paquet est identifié, c'est ce qui t'intéresse (il est identifié comme bon par la petite taille de son diametre).
    Nemerle, mathématicopilier de bars, membre du triumvirat du CSTM, 3/4 centre

  20. #20
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci Nemerle

    Je vais me replonger dans tout ca
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

Discussions similaires

  1. la pente par régression linéaire sur N points
    Par idoune dans le forum MATLAB
    Réponses: 5
    Dernier message: 28/04/2014, 09h08
  2. [Toutes versions] Régression linéaire forcée passant par un point (non origine
    Par Spartac69 dans le forum Excel
    Réponses: 1
    Dernier message: 15/07/2013, 17h23
  3. Réponses: 6
    Dernier message: 11/04/2013, 11h38
  4. Réponses: 1
    Dernier message: 09/07/2012, 11h16
  5. Module qui permet de faire des régression linéaire ?
    Par Anti-T dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 04/09/2009, 13h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo