Hoe u eenvoudig percentielen in r kunt berekenen (met voorbeelden)


Het n- de percentiel van een dataset is de waarde die de eerste n procent van de datawaarden afsnijdt wanneer alle waarden zijn gesorteerd van klein naar groot.

Het 90e percentiel van een dataset is bijvoorbeeld de waarde die de onderste 90% van de datawaarden scheidt van de bovenste 10% van de datawaarden.

Eén van de meest gebruikte percentielen is het 50e percentiel, dat de mediaanwaarde van een dataset weergeeft: dit is de waarde waar 50% van alle datawaarden onder valt.

Percentielen kunnen worden gebruikt om vragen te beantwoorden zoals:

  • Hoeveel moet een leerling op een bepaalde toets scoren om tot de top 10% te behoren? Om deze vraag te beantwoorden, zouden we het 90e percentiel van alle scores vinden, wat de waarde is die de onderste 90% scheidt van de bovenste 10%.
  • Welke lengtes omvatten de gemiddelde helft van de lengtes van leerlingen op een bepaalde school? Om deze vraag te beantwoorden, zouden we het 75e percentiel van hoogten en het 25e percentiel van hoogten vinden, de twee waarden die de boven- en ondergrenzen voor de middelste 50% van de hoogten bepalen.

Hoe percentielen in R te berekenen

We kunnen eenvoudig percentielen in R berekenen met behulp van de functie quantile() , die de volgende syntaxis gebruikt:

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

  • x: een numerieke vector waarvan we de percentielen willen vinden
  • probs: een numerieke vector van kansen in [0,1] die de percentielen vertegenwoordigt die we willen vinden

Het vinden van de percentielen van een vector

De volgende code illustreert hoe u verschillende percentielen kunt vinden voor een bepaalde vector 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 

Percentielen van een dataframekolom zoeken

Om te illustreren hoe u de percentielen van een specifieke dataframekolom kunt vinden, gebruiken we de ingebouwde dataset- 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

De volgende code laat zien hoe u de 90e percentielwaarde voor de kolom Sepal.Length kunt vinden:

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

#90% 
#6.9

Percentielen zoeken van meerdere dataframekolommen

We kunnen ook de percentielen van meerdere kolommen tegelijk vinden met behulp van de functie 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

Zoeken naar percentielen per groep

We kunnen ook percentielen per groep in R vinden met behulp van de group_by() functie uit de dplyr- bibliotheek.

De volgende code laat zien hoe u het 90e percentiel van Sepal.Length voor elk van de
drie soorten in de irisdataset:

 #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

De volgende code illustreert hoe u het 90e percentiel voor alle variabelen per soort kunt vinden:

 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 

Percentielen bekijken

Er is geen ingebouwde functie om de percentielen van een dataset in R te visualiseren, maar we kunnen wel een plot maken om de percentielen relatief eenvoudig te visualiseren.

De volgende code laat zien hoe u een percentieldiagram maakt voor de Sepal.Length- gegevenswaarden uit de irisgegevensset :

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

Aanvullende bronnen

Een gids voor apply(), lapply(), sapply() en tapply() in R
Maak nieuwe variabelen in R met mute() en case_when()

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert