Comment effectuer une normalisation quantile dans R
En statistique, la normalisation quantile est une méthode qui rend deux distributions identiques en termes de propriétés statistiques.
L’exemple suivant montre comment effectuer une normalisation quantile dans R.
Exemple : normalisation quantile dans R
Supposons que nous créions le bloc de données suivant dans R qui contient deux colonnes :
#make this example reproducible set.seed(0) #create data frame with two columns df <- data.frame(x=rnorm(1000), y=rnorm(1000)) #view first six rows of data frame head(df) x y 1 1.2629543 -0.28685156 2 -0.3262334 1.84110689 3 1.3297993 -0.15676431 4 1.2724293 -1.38980264 5 0.4146414 -1.47310399 6 -1.5399500 -0.06951893
Nous pouvons utiliser les fonctions sapply() et quantile() pour calculer les quantiles pour x et y :
#calculate quantiles for x and y
sapply(df, function(x) quantile(x, probs = seq(0, 1, 1/4)))
x y
0% -3.23638573 -3.04536393
25% -0.70845589 -0.73331907
50% -0.05887078 -0.03181533
75% 0.68763873 0.71755969
100% 3.26641452 3.03903341
Notez que x et y ont des valeurs similaires pour les quantiles, mais pas des valeurs identiques.
Par exemple, la valeur au 25e centile pour x est -0,708 et la valeur au 25e centile pour y est -0,7333 .
Pour effectuer une normalisation quantile, nous pouvons utiliser la fonction normalize.quantiles() du package preprocessCore dans R :
library(preprocessCore) #perform quantile normalization df_norm <- as.data.frame(normalize.quantiles(as.matrix(df))) #rename data frame columns names(df_norm) <- c('x', 'y') #view first six row of new data frame head(df_norm) x y 1 1.2632137 -0.28520228 2 -0.3469744 1.82440519 3 1.3465807 -0.16471644 4 1.2692599 -1.34472394 5 0.4161133 -1.43717759 6 -1.6269731 -0.07906793
Nous pouvons ensuite utiliser le code suivant pour calculer à nouveau les quantiles pour x et y :
#calculate quantiles for x and y
sapply(df_norm, function(x) quantile(x, probs = seq(0, 1, 1/4)))
x y
0% -3.14087483 -3.14087483
25% -0.72088748 -0.72088748
50% -0.04534305 -0.04534305
75% 0.70259921 0.70259921
100% 3.15272396 3.15272396
Notez que les quantiles sont désormais identiques pour x et y.
Nous dirions que x et y ont été normalisés par quantile. Autrement dit, les deux distributions sont désormais identiques en termes de propriétés statistiques.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment normaliser les données dans R
Comment calculer les centiles en R
Comment utiliser la fonction quantile() dans R