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 :

Texte penché inconsidéremment sur une droite de régression


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2003
    Messages
    554
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 554
    Par défaut Texte penché inconsidéremment sur une droite de régression
    Bonjour,

    J'essaie d'écrire la formule d'une régression sur la droite de régression, mais mon texte apparait plus "penché" qu'il ne devrait.

    Voici un exemple avec 4 points et la droite de régression correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    X <- c(1,2,3,4)
    Y <- c(4,5,6,8)
    plot(X,Y,type='p',pch=18)
    Z <- lm(Y~X)	# Calcul de la régression
    summary(Z)	# Paramètres de la régression
    abline(Z)	# Affichage de la droite de régression sur le graphique
    Calcul de la formule de régression et écriture de cette formule sur le graphique (en position x=3, y=2.5+1.3 x=6.4) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A <- 3
    B <- Z$coefficients[2]*A + Z$coefficients[1]
    text(A,B,srt=atan(Z$coefficients[2])*180/pi,paste('Y=',Z$coefficients[1],'+',Z$coefficients[2],'X'))
    J'utilise le paramètre srt de l'intruction text pour incliner le texte.
    L'angle d'inclinaison en degrés est calculé en fonction de la pente par la formule Angle=arctangente(pente)x180/Pi.
    La pente est le second paramètre de ma régression : Z$coefficients[2]

    Comme peut le montrer cet exemple, le texte Y=2.5 + 1.3 X ne fait pas le même angle avec l'horizontale que ma droite de
    régression.
    Est-ce que quelqu'un saurait pourquoi ?

  2. #2
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Aligner le texte sur une droite de régression
    Bonjour,

    • Le problème vient du fait que les deux axes ne sont pas à la même échelle de sorte que l'angle d'inclinaison de la droite de régression ne correspond pas à la pente théorique. La droite de régression fait un angle d'environ 41° avec l'horizontale sur le graphique alors que la pente théorique vaut atan(Z$coefficients[2])*180/pi = 52.43141.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    X <- c(1,2,3,4)
    Y <- c(4,5,6,8)
    plot(X, Y, type='p', pch=18)
    Z <- lm(Y~X)	# Calcul de la régression
    summary(Z)	# Paramètres de la régression
    abline(Z)	# Affichage de la droite de régression sur le graphique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A <- 2.5
    B <- Z$coefficients[2]*A + Z$coefficients[1]
    text(A, B, srt=atan(Z$coefficients[2])*180/pi,
         paste('Y=',Z$coefficients[1],'+',Z$coefficients[2],'X'),
         col = "red")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A <- 3.25
    B <- Z$coefficients[2]*A + Z$coefficients[1] + 0.2
    text(A, B, srt=41,
         paste('Y=',Z$coefficients[1],'+',Z$coefficients[2],'X'),
         col = "blue")
    Nom : fig1.jpg
Affichages : 282
Taille : 28,6 Ko

    • L'option asp=1 permet d'avoir la même échelle sur les deux axes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    asp <- 1
    X <- c(1,2,3,4)
    Y <- c(4,5,6,8)
    plot(X, Y, type='p', pch=18, asp=asp)
    Z <- lm(Y~X)	# Calcul de la régression
    summary(Z)	# Paramètres de la régression
    abline(Z)	# Affichage de la droite de régression sur le graphique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A <- 3
    B <- Z$coefficients[2]*A + Z$coefficients[1] + 0.2
    text(A, B,
         srt=atan(Z$coefficients[2]*asp)*180/pi,
         paste('Y=',Z$coefficients[1],'+',Z$coefficients[2],'X'))
    Nom : fig2.jpg
Affichages : 278
Taille : 24,9 Ko

    • Le fait d'avoir intégré la variable asp dans le reste du programme permet de faire varier sa valeur :

    Nom : fig3.jpg
Affichages : 269
Taille : 28,3 Ko

    • Sources :


    Cordialement,

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2003
    Messages
    554
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 554
    Par défaut
    Bonjour,

    Merci mgdondon pour ces explications.

    Est-il possible d'automatiser l'utilisation de ce paramètre ?
    Je m'explique : le paramètre graphique fin permet d'obtenir les tailles des largeur et hauteur de la fenêtre graphique (à moins que ça ne soit pin).
    On devrait pourvoir écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    C <- par('fin')
    Correcteur <- C[2]/C[1]
    A <- 1.5
    B <- Z$coefficients[2]*A + Z$coefficients[1]
    text(A,B,srt=corr2*atan(Z$coefficients[2]*Correcteur)*180/pi,col='green',paste('Y=',Z$coefficients[1],'+',Z$coefficients[2],'X'))
    Mais ce programme ne permet pas d'obtenir le bon résultat, ni avec fin, ni avec pin ; ni non plus, en divisant plutôt qu'en multipliant par le correcteur.
    Voyez-vous où est le problème ?

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2003
    Messages
    554
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 554
    Par défaut
    J'aurais du mieux lire votre réponse mgdondon.
    Il y a en effet ce lien vers https://stackoverflow.com/questions/...ce-line-itself, qui donne une façon de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Correcteur <- diff(grconvertY(1:2,"user","inches")) / diff(grconvertX(1:2,"user","inches"))
    A <- 3.75
    B <- Z$coefficients[2]*A + Z$coefficients[1]
    text(A,B,srt=180*atan(Z$coefficients[2]*Correcteur)/pi,col='black',paste('Y=',Z$coefficients[1],'+',Z$coefficients[2],'X'))
    Je pense que ça répond à mon problème.
    Merci encore

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

Discussions similaires

  1. [MySQL] texte qui bloque sur une requéte mysql
    Par leto02 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/11/2007, 11h32
  2. Projection d'un point sur une droite.
    Par méphistopheles dans le forum Mathématiques
    Réponses: 9
    Dernier message: 27/05/2007, 23h35
  3. Faire la différence entre texte et photos sur une image
    Par NiuAge dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 23/02/2007, 23h45
  4. [MySQL] Afficher du texte UTF-8 sur une page encodée en ISO
    Par MiJack dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2006, 18h37
  5. Déplacement d'une Cible sur une droite
    Par kurul1 dans le forum C++Builder
    Réponses: 10
    Dernier message: 11/07/2005, 16h44

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