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:
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:
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 ?
3 pièce(s) jointe(s)
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:
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:
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:
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") |
Pièce jointe 494741
• L'option asp=1 permet d'avoir la même échelle sur les deux axes :
Code:
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:
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')) |
Pièce jointe 494660
• Le fait d'avoir intégré la variable asp dans le reste du programme permet de faire varier sa valeur :
Pièce jointe 494663
• Sources :
Cordialement,