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

R Discussion :

Sélectionner les points linéaires d'une courbe réalisée sous R


Sujet :

R

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Sélectionner les points linéaires d'une courbe réalisée sous R
    Bonjour,
    Je souhaiterais demander à R de sélectionner les points linéaires des courbes logarithmiques produites par mes données, car c'est le mode de traitement de données pratiqué dans ma branche.
    Pourriez vous m'indiquer comment le réaliser ? Je n'ai absolument aucune idée de comment le faire non manuellement.
    Merci d'avance,

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Je n'ai pas la réponse à votre question, par contre, je vous conseille de poster un petit exemple de code reproductible pour montrer ce que vous faites et ce que vous cherchez à faire (par exemple comment vous le feriez "à la main"), cela pourra peut-être aider quelqu'un à mieux vous aider


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour, et merci pour votre réponse.

    Je voudrais automatiser la méthode mais je n'y arrive pas.
    J'avais pensé à une boucle qui me ferait les régressions linéaires avec les premiers points (d'abord les 3 premiers puis les 4, et les 5 etc...). et qui comparerais les R² afin de sélectionner la droite la plus "droite" finalement. Le R² le plus haut.
    J'ai donc écrit ce (début) de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for ( i in 3:6) {                                             #j'ai que 6 points sur mes droites
    Y<-X[0:i] 
    droite<-lm(inhib~Y)                                      #Je fais donc toutes les régressions qui correspondent
    if(0.94 < summary(droite)$adj.r.squared)         #Je voudrais qu'il sélectionne le R² le plus haut (je ne sais pas comment le coder je met donc 0.94 en limite)
     
    {select(droite)                                               #Je sélectionnerai la droite la plus juste
     
    print(droite)} 
     
    }


    Sauf que les longueurs de mes variables sont différentes (le principe meme de ce que je veux faire...) mais cela renvoie une erreur.

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Une piste pour la sélection du R² (à sûrement optimiser) :

    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
    r2_old <- NULL
     
    for (i in 3:6) {
     
        Y<-X[0:i] 
        droite<-lm(inhib~Y)    
     
        if(is.null(r2_old)) { # 1er passage dans la boucle
            r2_old <- summary(droite)$adj.r.squared 
            r2_new <- summary(droite)$adj.r.squared 
        } else {
            r2_new <- summary(droite)$adj.r.squared 
        }
     
        if(r2_old <= r2_new) {
     
            select(...)
     
            r2_old <- r2_new # à ne pas oublier !
     
        }
     
    }
    Sinon, à quel endroit du code se situe l'erreur que vous obtenez ? Pouvez-vous nous partager le message d'erreur rencontré ?
    En effet, ne disposant pas de données sur lesquelles reproduire votre code, il est difficile de vous aider plus du coup...


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci Beaucoup ! je vais tester de ce pas !
    Je ne sais pas si je dois fournir mes données et mon script qui précède pour que cela vous aide ...

    j'ai évolué vers un codes plus court avec toujours la même erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for ( i in 3:6) {                                      #j'ai que 6 points sur mes droites
    Y<-X[0:i]                                              #Je fais donc toutes les régressions qui correspondent
    print(max(summary(lm(inhib~Y))$adj.r.squared))      #Je voudrais qu'il sélectionne le R² le plus haut (je ne sais pas comment le coder je met donc 0.94 en limite)
     
                                                                              #Je sélectionnerai la droite la plus juste
     
    } 
     
    Error in model.frame.default(formula = inhib ~ j, drop.unused.levels = TRUE) : 
      les longueurs des variables diffèrent (trouvé pour 'Y')
    NB : Le message d'erreur s'affiche en fin de boucle, il est le même avec votre code.
    Encore merci.

  6. #6
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par ladizboop Voir le message
    Je ne sais pas si je dois fournir mes données et mon script qui précède pour que cela vous aide ...
    Je demandais cela simplement pour essayer de mieux comprendre votre problématique.

    Du coup, avec le message d'erreur, je dirais d'essayer de tester ceci (pour corriger les problèmes de dimension) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for ( i in 3:6) {                                     
    Y<-X[0:i]  
    inhib_i <- inhib[0:i]                                   
    print(max(summary(lm(inhib_i ~Y))$adj.r.squared)) 
     
    ...
    HTH !


    Cordialement,


    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    un grand merci !!! c'est top !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Eliminer les "pics" parasites d'une courbe
    Par julien_cz dans le forum Signal
    Réponses: 6
    Dernier message: 23/01/2009, 08h25
  2. les points coplanaires dans une image
    Par ocean24 dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 11/11/2008, 11h33
  3. Réponses: 2
    Dernier message: 01/08/2008, 10h47
  4. Réponses: 7
    Dernier message: 23/11/2007, 06h35
  5. Réponses: 2
    Dernier message: 27/03/2007, 18h58

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