Comment calculer facilement les centiles dans R (avec des exemples)



Le n ème centile d’un ensemble de données est la valeur qui coupe les n premiers pour cent des valeurs de données lorsque toutes les valeurs sont triées du plus petit au plus grand.

Par exemple, le 90e centile d’un ensemble de données est la valeur qui sépare les 90 % inférieurs des valeurs de données des 10 % supérieurs des valeurs de données.

L’un des centiles les plus couramment utilisés est le 50e centile, qui représente la valeur médiane d’un ensemble de données : il s’agit de la valeur à laquelle 50 % de toutes les valeurs de données se situent en dessous.

Les percentiles peuvent être utilisés pour répondre à des questions telles que :

  • Quel score un étudiant doit-il obtenir à un test particulier pour figurer dans les 10 % des meilleurs scores ? Pour répondre à cette question, nous trouverions le 90e percentile de tous les scores, qui est la valeur qui sépare les 90 % des valeurs inférieures des 10 % supérieures.
  • Quelles hauteurs englobent la moitié moyenne des hauteurs des élèves d’une école particulière ? Pour répondre à cette question, nous trouverions le 75e percentile des hauteurs et le 25e percentile des hauteurs, qui sont les deux valeurs qui déterminent les limites supérieure et inférieure pour les 50 % moyens des hauteurs.

Comment calculer les centiles en R

Nous pouvons facilement calculer les percentiles dans R en utilisant la fonction quantile() , qui utilise la syntaxe suivante :

quantile (x, probs = seq(0, 1, 0,25))

  • x : un vecteur numérique dont nous souhaitons trouver les centiles
  • probs : un vecteur numérique de probabilités dans [0,1] qui représentent les percentiles que nous souhaitons trouver

Trouver les percentiles d’un vecteur

Le code suivant illustre comment trouver différents centiles pour un vecteur donné dans 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 

Recherche de percentiles d’une colonne de bloc de données

Pour illustrer comment trouver les centiles d’une colonne de bloc de données spécifique, nous utiliserons l’ iris de l’ensemble de données intégré :

#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

Le code suivant montre comment trouver la valeur du 90e percentile pour la colonne Sepal.Length :

quantile(iris$Sepal.Length, probs = 0.9)

#90% 
#6.9 

Recherche de percentiles de plusieurs colonnes de blocs de données

Nous pouvons également trouver les percentiles de plusieurs colonnes à la fois en utilisant la fonction 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 

Recherche de percentiles par groupe

On peut également trouver des percentiles par groupe dans R en utilisant la fonction group_by() de la bibliothèque dplyr .

Le code suivant illustre comment trouver le 90e percentile de Sepal.Length pour chacun des
trois espèces dans l’ensemble de données sur l’iris :

#load dplyr library
library(dplyr)

#find 90th percentile of Sepal.Length for each of the three species
iris %>%
  group_by(Species) %>%
  summarise(percent90 = quantile(Sepal.Length, probs = .9))

# A tibble: 3 x 2
#  Species    percent90
#            
#1 setosa          5.41
#2 versicolor      6.7 
#3 virginica       7.61

Le code suivant illustre comment trouver le 90e centile pour toutes les variables par espèce :

iris %>%
  group_by(Species) %>%
  summarise(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 

Visualisation des percentiles

Il n’existe pas de fonction intégrée pour visualiser les centiles d’un ensemble de données dans R, mais nous pouvons créer un tracé pour visualiser les centiles relativement facilement.

Le code suivant illustre comment créer un tracé des centiles pour les valeurs de données de Sepal.Length à partir de l’ensemble de données 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")

Ressources additionnelles

Un guide pour apply(), lapply(), sapply() et tapply() dans R
Créez de nouvelles variables dans R avec mutate() et case_when()

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *