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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *