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 :

Droite régression Semi-log


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2019
    Messages : 2
    Par défaut Droite régression Semi-log
    Bonjour,

    J'essaie d'afficher un graphe avec des points pris dans les listes x et y pour avoir les coordonnées. L'axe Y est en échelle logarithmique, celle de X est normale.
    Je veux afficher une droite de régression de tous ces points (je la veux droite, pas penchée), je la met aussi avec un paramètre en echelle logarithmique.
    Quand je fais ce code là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    library(ggplot2)
    x <- c(1,2,2,2,3,3,4,5,5,6,6,6,6,7,8,9,9,11,11,11,15,15,16,16,16,16,17,18,18,18)
    y <- c(1,2,4,3,3,2,5,4,6,3,7,7,6,7,8,4,5,4,9,9,13,14,15,15,15,16,17,19,19,20)
     
    ggplot(data=NULL , aes(x=x, y=y))+ coord_trans(y = "log10") + geom_point(size=2, shape=20) + geom_smooth(method=lm, formula= log(y)~ x , se=FALSE)
    j'obtiens ce graphe la mais la droite de régression n'est pas droite mais en plus elle ne passe pas par les points on va dire. (alors que avec les méthodes abline ca marchait très bien)
    Nom : 1.png
Affichages : 904
Taille : 26,9 Ko

    Par contre si je supprimer le coord_trans(y="log10") (=>qui met en echelle log l'axe Y) et que je supprime aussi le log(y)~x (=> qui met la droite en echelle semi log, car que un des deux en log), ça marche bien et affiche une droite comme celle-ci
    Nom : 2.png
Affichages : 970
Taille : 29,4 Ko


    J'ai essayé de changer les log, de n'en mettre que un seul sur les deux dans les deux sens mais rien n'y fait la droite de rf=égression prend toujours une formue comme sur l'image 1.

    Avez vous des idées pour que la droite ressemble à la photo 2 mais en echelle semi log ?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Décembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2015
    Messages : 72
    Par défaut
    Bonjour,

    je ne suis pas sûr de comprendre la question exacte, je vais exposer deux cas :

    - Le premier est une régression linéaire entre log(y) et x :
    Dans ce cas le plus simple peut être de travailler sur le log de (y) et x, et non pas entre x et y et d'afficher le logarithme. Cela donne quelque chose du style en terme de code :

    Code R : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x <- c(1,2,2,2,3,3,4,5,5,6,6,6,6,7,8,9,9,11,11,11,15,15,16,16,16,16,17,18,18,18)
    y2 <- log(c(1,2,4,3,3,2,5,4,6,3,7,7,6,7,8,4,5,4,9,9,13,14,15,15,15,16,17,19,19,20))
    library(ggplot2)
    ggplot(data=NULL , aes(x=x, y=y2))+ 
      geom_point(size=2, shape=20) + 
      geom_smooth(method=lm, formula= y2~ x , se=FALSE)

    Deuxième cas : la relation est linéaire entre x et y mais pour un soucis d'affichage on utilise le log. Dans ce cas il est normal que la droite soit penchée (relation linéaire mais représentée sur une échelle logarithmique). Pour avoir cette représentation alors qui passe par tous les points, on obtient :

    Code R : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    x <- c(1,2,2,2,3,3,4,5,5,6,6,6,6,7,8,9,9,11,11,11,15,15,16,16,16,16,17,18,18,18)
    y <- c(1,2,4,3,3,2,5,4,6,3,7,7,6,7,8,4,5,4,9,9,13,14,15,15,15,16,17,19,19,20)
    library(ggplot2)
    ggplot(data=NULL , aes(x=x, y=y))+ coord_trans(y = "log10") +
      geom_point(size=2, shape=20) + 
      geom_smooth(method=lm, formula= y~ x , se=FALSE)

    En espérant avoir pu aider.

    Cordialement

    VV

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2019
    Messages : 2
    Par défaut
    Bonjour,
    Merci de votre réponse.
    En fait je veux avoir une droite qui aurait des propriétés semi log, ainsi que l'echelle de l'axe Y.
    En R je n'arrive pas à avoir une droite de régression droite avec une echelle semi log, alors que en Python j'avais réussi. (je dois utiliser R)
    En R je n'arrive à obtenir qu'une droite ressemblant à celle de votre 2e code, c'est cela mon prblème.

    Avez une autre idée de comment faire face à ce problème ?
    Merci
    Wapi

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

Discussions similaires

  1. GNUPLOT: tracer une courbe semi log
    Par melissouille dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 26/10/2009, 15h51
  2. papier semi-log (graphique)
    Par sat83 dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/09/2009, 13h53
  3. Problème fonction Droite de régression
    Par aev21 dans le forum Excel
    Réponses: 4
    Dernier message: 25/01/2008, 16h15
  4. [Authentification] Log NT droit d'accés ?
    Par questionneuse dans le forum Développement Web en Java
    Réponses: 4
    Dernier message: 28/04/2006, 18h34

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