Як легко обчислити процентили в 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()