Como calcular quantis por grupo em r (com exemplos)
Nas estatísticas, os quantis são valores que dividem um conjunto de dados classificados em grupos iguais.
Para calcular quantis agrupados por uma determinada variável em R, podemos usar as seguintes funções do pacote dplyr em 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]))
Os exemplos a seguir mostram como usar essa sintaxe na prática.
Exemplos: Quantis por grupo em R
O código a seguir mostra como calcular quantis do número de vitórias agrupadas por equipe para um conjunto de dados em 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 TO 2 2 to 4 3 to 4 4 to 5 5 TO 7 6 to 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 to 4 6 10 2 B 9 12 14.2 3 C 17.5 19 20.2
Observe que também podemos especificar qualquer número de quantis que desejarmos:
#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 to 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
Você também pode optar por calcular um único quantil por grupo. Por exemplo, veja como calcular o percentil 90 do número de vitórias de cada equipe:
#calculate 90th percentile of wins by team df %>% group_by(team) %>% summarize(quant90 = quantile (wins, probs = 0.9 )) team quant90 1 to 13 2 B 15 3 C 21.9
Recursos adicionais
Como calcular quartis em R
Como calcular decis em R
Como calcular percentis em R