Как рассчитать квантили по группам в 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