Come calcolare facilmente i percentili in r (con esempi)


L’ ennesimo percentile di un set di dati è il valore che elimina il primo n % dei valori dei dati quando tutti i valori vengono ordinati dal più piccolo al più grande.

Ad esempio, il 90° percentile di un set di dati è il valore che separa il 90% inferiore dei valori dei dati dal 10% superiore dei valori dei dati.

Uno dei percentili più comunemente utilizzati è il 50° percentile, che rappresenta il valore mediano di un set di dati: questo è il valore al di sotto del quale cade il 50% di tutti i valori dei dati.

I percentili possono essere utilizzati per rispondere a domande come:

  • Quanto deve ottenere uno studente in un particolare test per rientrare nel 10% dei migliori? Per rispondere a questa domanda, troveremo il 90° percentile di tutti i punteggi, ovvero il valore che separa il 90% più basso dal 10% più alto.
  • Quali altezze comprendono la metà media dell’altezza degli studenti di una particolare scuola? Per rispondere a questa domanda, troveremmo il 75° percentile dell’altezza e il 25° percentile dell’altezza, che sono i due valori che determinano i limiti superiore e inferiore per il 50% medio delle altezze.

Come calcolare i percentili in R

Possiamo facilmente calcolare i percentili in R utilizzando la funzione quantile() , che utilizza la seguente sintassi:

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

  • x: un vettore numerico di cui vogliamo trovare i percentili
  • probs: un vettore numerico di probabilità in [0,1] che rappresenta i percentili che desideriamo trovare

Trovare i percentili di un vettore

Il codice seguente illustra come trovare percentili diversi per un dato vettore in 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 

Trovare i percentili di una colonna di frame di dati

Per illustrare come trovare i percentili di una specifica colonna di frame di dati, utilizzeremo il set di dati integrato 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

Il codice seguente mostra come trovare il valore del 90° percentile per la colonna Sepal.Length :

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

#90% 
#6.9

Trovare i percentili di più colonne di frame di dati

Possiamo anche trovare i percentili di più colonne contemporaneamente utilizzando la funzione 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

Ricerca di percentili per gruppo

Possiamo anche trovare percentili per gruppo in R utilizzando la funzione group_by() dalla libreria dplyr .

Il codice seguente illustra come trovare il 90° percentile di Sepal.Length per ciascuno dei
tre specie nel set di dati dell’iride:

 #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

Il codice seguente illustra come trovare il 90° percentile per tutte le variabili per specie:

 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 

Visualizzazione dei percentili

Non esiste una funzione integrata per visualizzare i percentili di un set di dati in R, ma possiamo creare un grafico per visualizzare i percentili in modo relativamente semplice.

Il codice seguente dimostra come creare un grafico percentile per i valori dei dati Sepal.Length dal set di dati dell’iride :

 n = length(iris$Sepal.Length)
plot((1:n - 1)/(n - 1), sort(iris$Sepal.Length), type="l",
  main = "Visualizing Percentiles",
  xlab = "Percentile",
  ylab = "Value")

Risorse addizionali

Una guida per apply(), lapply(), sapply() e tapply() in R
Crea nuove variabili in R con mutate() e case_when()

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *