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 


R programing - Aide à l'utrilisation de R - Langage R - R CRAN - R project - Tracer horizontale et verticale avec abline
  • 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)


R programing - Aide à l'utrilisation de R - Langage R - R CRAN - R project - Tracer une droite avec abline
  • 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) 


R programing - Aide à l'utrilisation de R - Langage R - R CRAN - R project - Relier des points avec lines
  • 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) 
R programing - Aide à l'utrilisation de R - Langage R - R CRAN - R project - smooth.spline - lines - courbe de lissage

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 

Aide à l'utilisation de R - Langage R - Régression linéaire passant par l'origine - Logiciel R
Régression linéaire passant par l'origine
  • 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 programming - Langage R - Language - R CRAN - R project - Régression linéaire
Régression linéaire ne passant pas par l'origine type y = ax + b Graphique réalisé avec R
  • 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 !