Superposer plusieurs courbes et tracer des régressions avec R
L'essentiel de cette page !
La commande points() permet d'ajouter des courbes.
La commande abline() est parfaite pour ajouter tous les types de droites (verticales, horizontales, de la forme y = ax+b et évidemment les régressions linéaires ! ).
D'autres fonctions bien sûr permettent d'ajouter des lissages plus ou moins réussis, en particulier la commande lines().
Ajouter des courbes, des droites et régressions linéaires
Ajouter de nouveaux points ou de nouvelles courbes
La commande points() est essentielle pour réaliser des courbes et nuages de points. Identique à plot, elle permet d'ajouter indéfiniements des données à un scatter.plot :
x <- c(1:20) ; y <- sort(rnorm(20,20,3))
plot(x,y,type="o",col="#138D75")
x1 <- sort(rpois(20,10)) ; y1 <- sort(rpois(20,20))
points(x1,y1,col="red",pch=16)
x2 <- sort(rpois(20,10)) ; y2 <- sort(rpois(20,20))
points(x2,y2,col="blue",pch=16,type="s")
x3 <- c(1:20) ; y3 <- rev(sort(rpois(20,20)))
points(x3,y3,col="green",pch=16,type="l",lwd=2)
Tracer des droites sur un graphique
Tracer une droite verticale (v) ou horizontale (h).
La commande abline() permet de tracer des droites : on peut la configurer comme la commande plot (type, lwd, lty,pch) pour changer son apparence
plot(c(1:10),c(1:10))
abline(v=2,lwd=2) # verticale
abline(h=3,col="#1258BC") # horizontale
Tracer une droite d'équation ax + b
Il faut utiliser ce format : abline(b,a)
plot(c(0:9),c(1:10))
abline(2,1,col="red",lwd=2)
Relier les points si cela n'a pas été fait
Tout comme la commande plot, on peut changer le type, les points, de traits avec la commande lines()
Il faut utiliser ce format : lines(y~x)
plot(c(0:9),c(1:10))
lines(c(1:10)~c(0:9),col="orange",lwd=3)
Ajouter une courbe de lissage des données
# Prenons des données pour cet exemple
x = rep(1:15) ; y = sin(x)
# Tracer le graphique
plot(x,y)
# Ajouter la courbe de lissage
lines(smooth.spline(x, y),col="red",lwd=2)
Tracer des régressions linéaires de la forme : y = ax - ou - y = ax+b
Régression linéaire passant par l'origine
Il faut suivre ce format : abline(0,(lm(y~x+0)$coefficients),col="blue")
# Pour faire une régression linéaire sous R passant par 0 :
x <- c(1:10) ; y <- sort(rnorm(10,3)) ; plot(x,y) # x et y sont des exemples
abline(0,(lm(y~x+0)$coefficients),col="blue")
# Afficher la pente / le coefficient directeur
lm(y~x+0)$coefficients
Régression linéaire ne passant pas par l'origine
# Pour faire une régression linéaire sous R ne passant pas par 0 :
abscisses <- c(1:10)+0.5 ; ordonnées <- sort(rnorm(10,3))# x et y sont des exemples
plot(abscisses,ordonnées ,xlim=c(0,10),ylim=c(0,6))
abline(lm(ordonnées ~abscisses)$coefficients, col="red",lwd=2)
# Pour avoir accès à la pente (coefficient directeur)
lm(y~x)$coefficients[2]
# Pour avoir accès à la valeur d'intersection de l'axe des ordonnées
# si y = ax + b alors b = intercept
lm(y~x)$coefficients[1]
# Pour avoir accès à a et b
lm(y~x)$coefficient
Récupérer la liste des différences séparant chaque valeur de sa valeur corrigée sur la droite.
lm(y~x)$residuals
Récupérer les valeurs corrigées projetées sur la droite de régression linéaire.
lm(y~x)$fitted.values
Afficher l'équation d'une courbe de la forme y = ax
x = c(1:4) ; y = c(2:5)
plot(x,y,type="p",col="purple",pch=16,lwd=3,cex=2);grid()
regression = lm(y~x+0)$coefficients
# Tracer la régression
abline(0,regression,col="red",lwd=2)
# text affiche l'équation
text(2,4,paste("Equation de la droite\ny =",round(regression[1],3),"x"),col="orange")
# 2 et 4 sont la position où apparait l'équation (x et y)
Afficher l'équation d'une courbe de la forme y = ax + b
x = c(1:4) ; y = c(3.5:6.5)
plot(x,y,type="p",col="purple",pch=16,lwd=3,cex=2);grid()
regression = lm(y~x)$coefficients
# Tracer la régression
abline(regression,col="red",lwd=2)
#
# Afficher l'équation de la droite
text(2,5.5,paste("Equation de la droite\ny =",round(regression[2],3),"x+",round(regression[1],3)),col="red")
Aller plus loin en consultant cet exemple concret :
Exemple de courbe étalon avec double régression : une passant par l'origine et l'autre nom : cliquer sur l'exemple.
Des annotations permettent d'y afficher les équations des droites !