Как рассчитать квантили по группам в R (с примерами)


В статистике квантили — это значения, которые делят ранжированный набор данных на равные группы.

Для вычисления квантилей, сгруппированных по определенной переменной в R, мы можем использовать следующие функции из пакета dplyr в R:

library(dplyr)

#define quantiles of interest
q = c(.25, .5, .75)

#calculate quantiles by grouping variable
df %>%
 group_by(grouping_variable) %>%
 summarize(quant25 = quantile (numeric_variable, probs = q[1]), 
 quant50 = quantile (numeric_variable, probs = q[2]),
 quant75 = quantile (numeric_variable, probs = q[3]))

В следующих примерах показано, как использовать этот синтаксис на практике.

Примеры: квантили по группам в R

В следующем коде показано, как вычислить квантили для количества побед, сгруппированных по командам, для набора данных в R:

library(dplyr)

#create data
df <- data.frame(team=c('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B',
 'C', 'C', 'C', 'C', 'C', 'C', 'C', 'C'),
 wins=c(2, 4, 4, 5, 7, 9, 13, 13, 15, 15, 14, 13,
 11, 9, 9, 8, 8, 16, 19, 21, 24, 20, 19, 18))

#view first six rows of data
head(df)

 team wins
1 A 2
2 A 4
3 A 4
4 A 5
5 A 7
6 A 9

#define quantiles of interest
q = c(.25, .5, .75)

#calculate quantiles by grouping variable
df %>%
 group_by(team) %>%
 summarize(quant25 = quantile (wins, probs = q[1]), 
 quant50 = quantile (wins, probs = q[2]),
 quant75 = quantile (wins, probs = q[3]))

 team quant25 quant50 quant75 
1 A 4 6 10 
2 B 9 12 14.2
3 C 17.5 19 20.2

Обратите внимание, что мы также можем указать любое количество квантилей, которое нам нужно:

#define quantiles of interest
q = c(.2, .4, .6, .8)

#calculate quantiles by grouping variable
df %>%
 group_by(team) %>%
 summarize(quant20 = quantile (wins, probs = q[1]), 
 quant40 = quantile (wins, probs = q[2]),
 quant60 = quantile (wins, probs = q[3]),
 quant80 = quantile (wins, probs = q[4]))

 team quant20 quant40 quant60 quant80

1 A 4 4.8 7.4 11.4
2 B 9 10.6 13.2 14.6
3 C 16.8 18.8 19.2 20.6

Мы также можем выбрать расчет только одного квантиля по группе. Например, вот как рассчитать 90-й процентиль количества побед для каждой команды:

#calculate 90th percentile of wins by team
df %>%
 group_by(team) %>%
 summarize(quant90 = quantile (wins, probs = 0.9 ))

 team quant90

1 A 13 
2 B 15 
3 C 21.9

Дополнительные ресурсы

Как рассчитать квартили в R
Как рассчитать децили в R
Как рассчитать процентили в R

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