Como calcular facilmente percentis em r (com exemplos)
O enésimo percentil de um conjunto de dados é o valor que corta os primeiros n por cento dos valores dos dados quando todos os valores são classificados do menor para o maior.
Por exemplo, o 90º percentil de um conjunto de dados é o valor que separa os 90% inferiores dos valores de dados dos 10% superiores dos valores de dados.
Um dos percentis mais comumente usados é o percentil 50, que representa o valor mediano de um conjunto de dados: este é o valor no qual 50% de todos os valores dos dados ficam abaixo.
Os percentis podem ser usados para responder perguntas como:
- Quanto um aluno precisa pontuar em um determinado teste para estar entre os 10% melhores? Para responder a esta pergunta, encontraríamos o percentil 90 de todas as pontuações, que é o valor que separa os 90% mais pobres dos 10% mais favorecidos.
- Que alturas abrangem a metade média das alturas dos alunos de uma determinada escola? Para responder a esta pergunta, encontraríamos o percentil 75 de altura e o percentil 25 de altura, que são os dois valores que determinam os limites superior e inferior para os 50% médios de altura.
Como calcular percentis em R
Podemos calcular facilmente percentis em R usando a função quantile() , que usa a seguinte sintaxe:
quantil (x, probs = seq(0, 1, 0,25))
- x: um vetor numérico cujos percentis desejamos encontrar
- probs: um vetor numérico de probabilidades em [0,1] que representa os percentis que desejamos encontrar
Encontrando os percentis de um vetor
O código a seguir ilustra como encontrar diferentes percentis para um determinado vetor em R:
#create vector of 100 random values uniformly distributed between 0 and 500 data <- runif(100, 0, 500) #Find the quartiles (25th, 50th, and 75th percentiles) of the vector quantile (data, probs = c(.25, .5, .75)) # 25% 50% 75% #97.78961 225.07593 356.47943 #Find the deciles (10th, 20th, 30th, ..., 90th percentiles) of the vector quantile (data, probs = seq(.1, .9, by = .1)) # 10% 20% 30% 40% 50% 60% 70% 80% #45.92510 87.16659 129.49574 178.27989 225.07593 300.79690 337.84393 386.36108 #90% #423.28070 #Find the 37th, 53rd, and 87th percentiles quantile (data, probs = c(.37, .53, .87)) # 37% 53% 87% #159.9561 239.8420 418.4787
Encontrando percentis de uma coluna de quadro de dados
Para ilustrar como encontrar os percentis de uma coluna específica do quadro de dados, usaremos o conjunto de dados integrado iris :
#view first six rows of iris dataset
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
O código a seguir mostra como encontrar o valor do 90º percentil para a coluna Sepal.Length :
quantile (iris$Sepal.Length, probs = 0.9)
#90%
#6.9
Encontrando percentis de múltiplas colunas de quadro de dados
Também podemos encontrar os percentis de múltiplas colunas de uma só vez usando a função apply() :
#define columns we want to find percentiles for small_iris<- iris[, c('Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width')] #use apply() function to find 90th percentile for every column apply (small_iris, 2, function(x) quantile(x, probs = .9)) #Sepal.Length Sepal.Width Petal.Length Petal.Width #6.90 3.61 5.80 2.20
Procurando percentis por grupo
Também podemos encontrar percentis por grupo em R usando a função group_by() da biblioteca dplyr .
O código a seguir demonstra como encontrar o percentil 90 de Sepal.Length para cada um dos
três espécies no conjunto de dados da íris:
#load dplyr library library(dplyr) #find 90th percentile of Sepal.Length for each of the three species iris %>% group_by (Species) %>% summarize (percent90 = quantile(Sepal.Length, probs = .9)) # A tibble: 3 x 2 #Speciespercent90 # #1 setosa 5.41 #2 versicolor 6.7 #3 virginica 7.61
O código a seguir ilustra como encontrar o percentil 90 para todas as variáveis por espécie:
iris %>% group_by (Species) %>% summarize (percent90_SL = quantile(Sepal.Length, probs = .9), percent90_SW = quantile(Sepal.Width, probs = .9), percent90_PL = quantile(Petal.Length, probs = .9), percent90_PW = quantile(Petal.Width, probs = .9)) # A tibble: 3 x 5 # Species percent90_SL percent90_SW percent90_PL percent90_PW # #1 setosa 5.41 3.9 1.7 0.4 #2 versicolor 6.7 3.11 4.8 1.51 #3 virginica 7.61 3.31 6.31 2.4
Visualizando percentis
Não existe uma função integrada para visualizar os percentis de um conjunto de dados em R, mas podemos criar um gráfico para visualizar os percentis com relativa facilidade.
O código a seguir demonstra como criar um gráfico de percentil para os valores de dados Sepal.Length do conjunto de dados iris :
n = length(iris$Sepal.Length) plot((1:n - 1)/(n - 1), sort(iris$Sepal.Length), type="l", main = "Visualizing Percentiles", xlab = "Percentile", ylab = "Value")
Recursos adicionais
Um guia para apply(), lapply(), sapply() e tapply() em R
Crie novas variáveis em R com mutate() e case_when()