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()