QQ-plot sous R

 diagramme Quantile-Quantile ou diagramme Q-Q,  QQplot, QQ-plots, QQplots...

L'essentiel de cette page

Un diagramme Quantile-Quantile sert à contrôler la répartition normale d'un échantillon.

On met en x les quantiles théoriques que devrait avoir un échantillon s'il était normal et en y ses quantiles réels. Si on n'observe pas un alignement sur la droite, c'est que l'échantillon n'est pas normal.

Par extension, un QQ-plot permet de contrôler n'importe quelle loi de répartition (normale, poisson, gamma, uniforme...) et peut remplacer ou compléter une approche basée sur des tests de répartitions tels Shapiro-Wilk, Kolmogorov...

Fonctions utiles : qqnorm(), qqline() et qqplot()

Simulons x, mélange de données normales et de données uniformes


x <- c(rnorm(50,3,2),runif(20,0,6))

qqnorm(x) ; qqline(x)


Source externe : aller voir le site suivant.

Par extension, on peut contrôler grâce à un QQ-plot le respect de n'importe quelle loi de distribution.

Dans cet exemple, on va utiliser qunif() pour vérifier un respect de la loi uniforme, mais on aurait pu utiliser d'autres fonctions de répartitions parmi celles disponibles ici.

quantiles_theoriques <- qunif(ppoints(length(iris$Petal.Length)),min=min(iris$Petal.Length),max=max(iris$Petal.Length))

qqplot(quantiles_theoriques, sort(iris$Petal.Length), 

     main = "QQ-plot pour une distribution uniforme",

     xlab="q théoriques",ylab="q réels")

abline(0, 1, col = "red")  # Ajouter la ligne y = x

On voit dans cet exemple que la variable iris$Petal.Length ne suit pas la loi uniforme.


On  pourrait alors tester d'autres lois de répartitions...