Як легко обчислити процентили в r (з прикладами)


N-й процентиль набору даних – це значення, яке відсікає перші n відсотків значень даних, коли всі значення відсортовано від найменшого до найбільшого.

Наприклад, 90-й процентиль набору даних — це значення, яке відокремлює нижні 90% значень даних від 10% верхніх значень даних.

Одним із найбільш часто використовуваних процентилів є 50-й процентиль, який представляє середнє значення набору даних: це значення, за якого 50% усіх значень даних опускаються нижче.

Процентилі можна використовувати, щоб відповісти на такі запитання, як:

  • Скільки потрібно набрати студенту за певний тест, щоб увійти до 10% найкращих? Щоб відповісти на це запитання, ми знайшли б 90-й процентиль усіх балів, тобто значення, яке відокремлює нижні 90% від 10 найвищих.
  • Які зрости охоплюють середню половину зросту учнів конкретної школи? Щоб відповісти на це запитання, ми знайшли б 75-й процентиль зросту та 25-й процентиль зросту, які є двома значеннями, які визначають верхню та нижню межі для середніх 50% зросту.

Як обчислити процентиль у R

Ми можемо легко обчислити процентилі в R за допомогою функції quantile() , яка використовує такий синтаксис:

квантиль (x, probs = seq(0, 1, 0,25))

  • x: числовий вектор, процентилі якого ми хочемо знайти
  • probs: числовий вектор ймовірностей в [0,1], який представляє процентилі, які ми хочемо знайти

Знаходження процентилів вектора

Наступний код ілюструє, як знайти різні процентилі для даного вектора в 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 

Пошук процентилів стовпця кадру даних

Щоб проілюструвати, як знайти процентиль певного стовпця фрейму даних, ми скористаємося ірисом вбудованого набору даних:

 #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

У наступному коді показано, як знайти значення 90-го процентиля для стовпця Sepal.Length :

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

#90% 
#6.9

Пошук процентилів кількох стовпців фрейму даних

Ми також можемо знайти процентилі кількох стовпців одночасно за допомогою функції 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

Пошук процентилів за групою

Ми також можемо знайти процентиль за групою в R за допомогою функції group_by() з бібліотеки dplyr .

Наступний код демонструє, як знайти 90-й процентиль Sepal.Length для кожного з
три види в наборі даних райдужки:

 #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

Наступний код ілюструє, як знайти 90-й процентиль для всіх змінних за видами:

 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 

Відсотки перегляду

У R немає вбудованої функції для візуалізації процентилів набору даних, але ми можемо відносно легко створити графік для візуалізації процентилів.

У наведеному нижче коді показано, як створити діаграму процентиля для значень даних Sepal.Length із набору даних райдужної оболонки ока:

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

Додаткові ресурси

Посібник із apply(), lapply(), sapply() і tapply() у R
Створіть нові змінні в R за допомогою mutate() і case_when()

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *