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.
Produisons une répartition théoriques des quantiles à partir de nos données, ici iris$Petal.Length
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))
Tracer le qqplot avec qqplot()
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...