В статистике нормализация квантилей — это метод, который делает два распределения идентичными по статистическим свойствам.
В следующем примере показано, как выполнить квантильную нормализацию в R.
Пример: нормализация квантилей в R
Предположим, мы создаем следующий фрейм данных в R, который содержит два столбца:
#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
Мы можем использовать функции sapply() и quantile( ) для вычисления квантилей как для x, так и для 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
Обратите внимание, что x и y имеют одинаковые значения квантилей, но не идентичные значения.
Например, значение 25-го процентиля для x равно -0,708 , а значение 25-го процентиля для y равно -0,7333 .
Чтобы выполнить квантильную нормализацию, мы можем использовать функцию normalize.quantiles() из пакета preprocessCore в 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
Затем мы можем использовать следующий код, чтобы снова вычислить квантили для x и 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
Обратите внимание, что квантили для x и y теперь идентичны.
Мы бы сказали, что x и y нормированы квантильно. То есть два распределения теперь идентичны по статистическим свойствам.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как нормализовать данные в R
Как рассчитать процентили в R
Как использовать функцию quantile() в R