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

MATLAB Discussion :

Coefficient de corrélation [Débutant]


Sujet :

MATLAB

  1. #41
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    A oui ça marche parfaitement!

    Bien vue tachmou

    Mon programme est bientôt fini
    Mais bien sûr avant ça, il y a une question bonus : Tracer les courbes de tendances pour chaque domaine linéaire (c'est à dire pour nos point où Rcorr > 0.9 ).

    Le but est en faite de tracer une courbe de tendance jusqu'à ce que Rcorr < 0.9, si par exemple on a 3 points successif où Rcorr > 0.9 et que pour le 4em Rcorr < 0.9 on trace une la courbe de tendance pour les 3 premiers points

    Utilisation de la fonction "polyfit" ? boucle while, même s'il faut éviter ?

    Merci d'avance pour votre aide

    Vincent

  2. #42
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Rien ne t'empêche de calculer tes courbes de tendances pour tous les R ? Bah fais le, ne te complique pas la vie ==> pour k allant du "premier R" = "1" au "dernier R" = "length(R)" = "N" ==> boucle for

    Ensuite, tu peux analyser tranquillement.

    Et si vraiment tu es limité niveau mémoire, tu pourras essayer d'optimiser avec des while, mais franchement, je pense que c'est inutile

    polyfit : approximation aux moindres carrés
    interp1 : interpolation en faisant passer la courbe par les points exactement (mais la forme générale peut être "divergente")

    N'hésites pas à passer du temps sur ce tutoriel, il est vraiment très bien fait.

  3. #43
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    ah d'accord je pense que je vois

    Mais en faite je cherche à faire les courbes de tendances de chaque domaines linéaires, car leur pente me donne la donnée que l'on souhaite trouver ^^.

    ps: j'ai commencé ce tutoriel, et effectivement il n'est pas ma du tout

    Un grand merci tachmou

    Vincent

  4. #44
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Tu peux enregistrer les coefficients "coefs" dans un tableau de cellule "solutions{k}" :

    Exemple bidon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    coefs = 0;
     
    %Coefficients de ton premier polynôme
    coefs(1) = 555;
    coefs(2) = 556;
    coefs(3) = 557;
    %Enregistrement des coefficients de ton premier polynôme dans la première cellule d'un "cell array" :
    solutions{1} = coefs;
     
    clear coefs;
     
    %Coefficients de ton second polynôme
    coefs(1) = 995;
    coefs(2) = 996;
    coefs(3) = 997;
    coefs(4) = 998;
    coefs(5) = 999;
    coefs(6) = 1000;
    coefs(7) = 1001;
    coefs(8) = 1002;
    %Enregistrement des coefficients de ton second polynôme dans la seconde cellule d'un "cell array" :
    solutions{2} = coefs;
     
    clear coefs;
    Tu récupères tes coefficients via solutions{1} et solutions{2}. Avantage : tu peux mettre des ordres différents pour chaque polynôme si besoin.

    Fais déjà solutions{1}, en l'appliquant à ton problème (même si elle ne fait pas partie des solutions que tu cherches pour l'instant).

  5. #45
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Les coefficients de mes polynômes je ne les connais pas,

    Je les détermine par la courbe de tendance et ensuite j'utilise la solution{1} ?

    Vincent

  6. #46
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Citation Envoyé par 3vince-fr Voir le message
    Je les détermine par la courbe de tendance et ensuite je les enregistre dans solution{1} ?
    Exactement

    [EDIT] Je viens de réaliser un truc (je suis fatigué) : tu veux faire les courbes de tendance de... quoi ?

  7. #47
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Bon maintenant, il faut que j'arrive à faire une courbe de tendance ^^

    j'ai trouvais plusieurs scripts, mais j'ai souvent du mal à les comprendre, afin de pouvoir les adaptés.

    Enfin bon, je vais travailler la dessus.

    Encore merci tachmou

    Vincent

  8. #48
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Bonjour,

    Pour être plus clair je vais faire un exemple

    Nom : f11.JPG
Affichages : 155
Taille : 25,2 Ko

    C'est une courbe tracé à partir du programme réalisé, on voit qu'il y a deux domaines linéaires.
    Le but est de tracer la courbe de tendances pour ses deux domaines.

    Si tu as d'autre question n'hésite pas

    Vincent

  9. #49
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Salut,

    Ah ok, je vois. Tu vas donc avoir besoin de faire une approximation linéaire de chaque "série de points" que tu auras généré avec tous les R>0.9. Tu as donc déjà besoin de lister tes séries de points, avec les indices qui t'intéressent. Je suppose que deux points qui se suivent qui ont R>0.9 formeront nécessairement la même "série de points" (dis moi si c'est bon?)

    Ok. Donc la première étape est de repérer tes séries de points. Pour cela, tu as besoin de savoir quand elles commencent et quand elles s'arrêtent. Tu peux tester ça déjà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    indices_linearisation = zeros(N+1,1)
    indices_linearisation(Rcorr,1) = 1
    indices_linearisation = diff(indices_linearisation)
    indices_linearisation(1,1) = 0
    A partir de là, il faut que tu comptes le nombre de "série de points" ("nombre_serie_point") dont tu disposes : tu connais donc la taille de "solution{k}". De plus, pour chacune de ces solutions, tu sais aussi où (je parle des indices) elles commencent (tu peux les stocker dans une variable "debut{k}" par exemple) et où elles se terminent ("fin{k}"). A partir de là, tu peux appliquer polyfit pour chaque série de points (boucle for de 1 à nombre_serie_point)

    Cordialement,

  10. #50
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Je suppose que deux points qui se suivent qui ont R>0.9 formeront nécessairement la même "série de points" (dis moi si c'est bon?)
    Merci tachmou c'est exactement ça

    je vais essayer tout ça, et je te tiens au courant

    Vincent

  11. #51
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Re-bonjour,

    Je dois avouer que pour le moment j'ai un peu de mal à mettre en place tout ça,

    A partir de là, il faut que tu comptes le nombre de "série de points" ("nombre_serie_point") dont tu disposes : tu connais donc la taille de "solution{k}"
    Ici je compte le nombre de série moi-même ? Idem pour depart{k} et fin{k}, on saisit leur valeur manuellement ?

    Pour le nombre de série :
    pour automatiser ça, j'avais pensé à faire une boucle avec k variant de 1 à N en regardant combien de fois indices_linearisation est différent de 0.

    Est-ce une bonne idée ?

    voici la boucle que j'ai réalisé pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
        %% Courbes de tendances
     
      % initialisation
    indices_linearisation = zeros(N,1)
    indices_linearisation(Rcorr,1) = 1
    indices_linearisation(1,1) = 0
     
    w=1;
    u=0;
     
      % calcul du nombre de série
     
        while w <= numel(indices_linearisation)
     
         if (indices_linearisation(w) ~= 0 )
            u=u+1;
            nombre_serie_point=u;
         else
     
         end
         w=w+1;
        end
    problème: - double boucle, dont une while
    mais ça semble fonctionner

    Merci d'avance pour votre aide

    Vincent

  12. #52
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    En fait, la puissance de "indice_linearisation", c'est que ça contient des 1, des 0 et des -1. A quoi correspondent ces 1, 0 et -1 ? Ne pourrais tu pas utiliser leurs nombre et leurs positions pour déterminer tout ce dont tu as besoin (sans boucle et en beaucoup moins de ligne et plus re-lisible). Tu peux utiliser find et length pour répondre à toutes tes questions en 3 ou 4 lignes de codes (pas seulement pour compter le nombre de série de points, mais pour le reste aussi !)

    Il faut vraiment que tu réfléchisses en vecteurs et en indices... ce n'est pas simple, je le conçois :-)

    D'ailleurs, tous les codes que je t'ai plus ou moins donné déjà : essaye de te poser la question suivante... serais-je capable de refaire pareil ? Si oui, alors tant mieux, applique ! Si non, alors potasse un peu les précédents codes : les idées sont identiques ! Et rappelle toi comment tu as fait au début

    Après ce que tu as fait doit certainement fonctionner. D'ailleurs, tu peux tout faire de cette manière (je faisais ça au début, aussi). Mais dans ce cas, tu n'as plus besoin de moi :-) ça vaut le coup de prendre en main ces outils puissants, car ce sera forcément plus rapide qu'utiliser des boucles.

    Si tu es perdu, pense de manière fonctionnelle : à quoi servent ces codes find, length etc... ? En quoi peuvent-ils t'ils t'être utile ? ==> doc find / help find etc. te donneront les réponses à ces questions

  13. #53
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Bonjour à tous,

    Voilà ce que j'ai esquissé pour le moment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    %% Courbes de tendances
     
      % initialisation
     
    indices_linearisation = zeros(N+1,1);
    indices_linearisation(Rcorr,1) = 1;
    indices_linearisation(1,1) = 0;
     
     
     
      % calcul du nombre de série
     
       indices_linearisation(1,1) = 0;
     
       u=find (indices_linearisation ~= 0);
       nombre_serie_point = length(u)-1;
     
      % répérage début et fin de chaque série
     
       indices_linearisation = diff(indices_linearisation);
     
       depart{k} = find (indices_linearisation ==1 )+1;
       fin{k} = find ( indices_linearisation == -1 );
    Dites moi ce que vous en pense.

    Ps: je me pose pour le moment pas mal de question sur comment paramétrer mon polyfit ^^

    Merci d'avance pour votre aide

    Vincent

  14. #54
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    %% Courbes de tendances
     
      % initialisation
     
    indices_linearisation = zeros(N+2,1);
    indices_linearisation(Rcorr+1,1) = 1;
    indices_linearisation = diff(indices_linearisation);
    tmp = find(indices_linearisation == 1)
    indices_linearisation( tmp + 1 ) = 1;
    indices_linearisation( tmp ) = 0;
    indices_linearisation = indices_linearisation(2:end);
     
     
      % calcul du nombre de série
     
       u = find (indices_linearisation == 1);
     
       nombre_serie_point = length(u);
     
      % répérage début et fin de chaque série
     
       depart = find (indices_linearisation == 1 );
       fin = find ( indices_linearisation == -1 );
    Bien

    Citation Envoyé par tachmou Voir le message
    A partir de là, il faut que tu comptes le nombre de "série de points" ("nombre_serie_point") dont tu disposes : tu connais donc la taille de "solution{k}". De plus, pour chacune de ces solutions, tu sais aussi où (je parle des indices) elles commencent (tu peux les stocker dans une variable "debut{k}" par exemple) et où elles se terminent ("fin{k}"). ==> terminé

    A partir de là, tu peux appliquer polyfit pour chaque série de points (boucle for k de 1 à nombre_serie_point) ==> à faire
    ps: je viens de réaliser que j'avais fait quelques erreurs dans ce que je t'avais donné... désolé

    ps2: tu as compris le principe maintenant, c'est le principal

  15. #55
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Merci beaucoup tachmou, effectivement c'est mieux

    ensuite j'avais pensé à faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    solution{k} = (debut{k}: fin{k});
    Problème: seul la première série valeur s’enregistre dans solution{k} ..

    était-ce une bonne idée ?
    que faut-il changer ?

    Vincent

  16. #56
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    J'avais fait quelques bêtises... j'ai modifié mon précédent message, ça devrait être plus clair maintenant. Essaye d'appliquer polyfit pour ta première série de point, au lieu de toutes les faire, fais-en déjà une.

    Donc, dans solution{1} tu auras donc un tableau contenant les coefficients issus du résultat de l'application de polyfit de ta première série de point, en utilisant depart(1) et fin(1).

    Je te laisse essayer de continuer seul ? Je pense t'avoir remis sur les rails. Et tu as vu : comme je ne suis pas sur le problème, les indications que je te donne sont parfois un peu à côté de la plaque... tu as du t'en rendre compte. Donc tu es largement capable de te débrouiller avec tout ce que tu as appris maintenant Le plus important, c'est de penser avec tes vecteurs, tes indices et d'utiliser les quelques commandes que tu as appris là.

    Les cell-array te permettent d'enregistrer des données de tous types (tableaux, chaînes de caractères, structures) dans des tableaux de cellules. L'avantage est la structure "maléable" : elle n'est donc pas adapté pour du produit matriciel par exemple, mais vraiment pour enregistrer des données multiples.

    Par exemple, si dans solution{1} tu enregistres un tableau à 2 paramètres, tu peux très bien enregistrer un tableau à 5 paramètres dans solution{2}, et tu peux enregistrer un nom 'name' dans solution{3}. De plus, comme ce sont des cellules, tu "sépares" vraiment tes solutions pour chaque cas.

  17. #57
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    d'accord je veux bien essayer de finir seul ^^

    mais j'avoue que si je pouvais une indication sur la boucle for avec polyfit, ça m'aiderait bien car je séche pour le moment :/

    voilà ce que j'ai fait pour l'instant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     for k=1:nombre_serie_point
     
                 solution{k} = polyfit(x(debut(k):fin(k)),y(debut(k):fin(k)),1);
     
                 plot(solution{k},'r')
     
              end
    les équations dans l'array editor de solution sont pourtant bonnes mais cela me trace ça :


    Nom : tendances.JPG
Affichages : 145
Taille : 25,2 Ko

    Pourquoi ce petit tracé rouge ?

    En tout cas un grand merci à toi tachmou

  18. #58
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Ta boucle est bonne. Le plot est faux, car tu affiches... tu ne sais pas trop ce que tu affiches en fait

    Donc : que contient solution{k} ? Ou, dit autrement : que fait polyfit (puisque c'est polyfit qui te fournit tes solution{k}) ?

  19. #59
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    polyfit calcul les coefficients du polynôme correspondant aux valeurs de x et de y que l'on fournit.

    si j'ai bien comprit^^

  20. #60
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Donc tu affiches ces coefficients. C'était ce que tu voulais faire ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Coefficient de corrélation intra classe
    Par elvolcano dans le forum SAS STAT
    Réponses: 7
    Dernier message: 25/04/2019, 17h35
  2. Interprétation coefficient de corrélation
    Par Liun971 dans le forum Signal
    Réponses: 2
    Dernier message: 01/07/2008, 08h20
  3. Réponses: 2
    Dernier message: 13/07/2007, 14h59
  4. Coefficient de corrélation exponentielle
    Par Giansolo dans le forum Statistiques, Data Mining et Data Science
    Réponses: 6
    Dernier message: 23/03/2007, 10h58
  5. Coefficient de corrélation
    Par oceanediana dans le forum Access
    Réponses: 7
    Dernier message: 26/07/2006, 07h03

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