Как выполнить квантильную нормализацию в R


В статистике нормализация квантилей — это метод, который делает два распределения идентичными по статистическим свойствам.

В следующем примере показано, как выполнить квантильную нормализацию в 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.