R'de yüzdelik değerler kolayca nasıl hesaplanır (örneklerle)
Bir veri setinin n’inci yüzdelik dilimi, tüm değerler küçükten büyüğe sıralandığında veri değerlerinin ilk yüzde n’lik kısmını kesen değerdir.
Örneğin, bir veri kümesinin 90’ıncı yüzdelik dilimi, veri değerlerinin alt %90’ını veri değerlerinin üst %10’undan ayıran değerdir.
En sık kullanılan yüzdelik dilimlerden biri, bir veri kümesinin medyan değerini temsil eden 50. yüzdelik dilimdir: bu, tüm veri değerlerinin %50’sinin altına düştüğü değerdir.
Yüzdelikler aşağıdaki gibi soruları yanıtlamak için kullanılabilir:
- Bir öğrencinin ilk %10’a girebilmesi için belirli bir testten ne kadar puan alması gerekir? Bu soruyu cevaplamak için tüm puanların 90’ıncı yüzdelik dilimini bulmamız gerekir; bu, en alttaki %90’ı en üstteki %10’dan ayıran değerdir.
- Hangi boylar belirli bir okuldaki öğrencilerin boylarının ortalama yarısını kapsar? Bu soruyu cevaplamak için boyların orta %50’sinin üst ve alt sınırlarını belirleyen iki değer olan boyların 75’inci yüzdelik dilimini ve boyların 25’inci yüzdelik dilimini bulacağız.
R’de yüzdelikler nasıl hesaplanır
Aşağıdaki sözdizimini kullanan quantile() işlevini kullanarak R’deki yüzdelik dilimleri kolayca hesaplayabiliriz:
niceliksel (x, olasılıklar = sıra(0, 1, 0,25))
- x: yüzdeliklerini bulmak istediğimiz sayısal bir vektör
- olasılıklar: bulmak istediğimiz yüzdelik dilimleri temsil eden, [0,1] cinsinden olasılıkların sayısal bir vektörü
Bir vektörün yüzdelik dilimlerini bulma
Aşağıdaki kod, R’de belirli bir vektör için farklı yüzdelik değerlerin nasıl bulunacağını gösterir:
#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
Veri çerçevesi sütununun yüzdelik dilimlerini bulma
Belirli bir veri çerçevesi sütununun yüzdelik dilimlerinin nasıl bulunacağını göstermek için yerleşik veri kümesi iris’i kullanacağız:
#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
Aşağıdaki kod, Sepal.Length sütunu için 90. yüzdelik değerin nasıl bulunacağını gösterir:
quantile (iris$Sepal.Length, probs = 0.9)
#90%
#6.9
Birden çok veri çerçevesi sütununun yüzdelik dilimlerini bulma
Apply() işlevini kullanarak birden fazla sütunun yüzdelik dilimlerini aynı anda da bulabiliriz:
#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
Yüzdelik dilimleri gruba göre arama
Ayrıca dplyr kütüphanesindeki group_by() fonksiyonunu kullanarak R’de gruba göre yüzdelik dilimleri de bulabiliriz.
Aşağıdaki kod, her biri için Sepal.Length’in 90. yüzdelik diliminin nasıl bulunacağını gösterir.
iris veri setindeki üç tür:
#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
Aşağıdaki kod, türlere göre tüm değişkenler için 90. yüzdelik dilimin nasıl bulunacağını göstermektedir:
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
Yüzdelikler görüntüleniyor
R’de bir veri kümesinin yüzdelik dilimlerini görselleştirmek için yerleşik bir işlev yoktur, ancak yüzdelik dilimlerini nispeten kolay bir şekilde görselleştirmek için bir grafik oluşturabiliriz.
Aşağıdaki kod, iris veri kümesinden Sepal.Length veri değerleri için yüzdelik grafiğin nasıl oluşturulacağını gösterir:
n = length(iris$Sepal.Length) plot((1:n - 1)/(n - 1), sort(iris$Sepal.Length), type="l", main = "Visualizing Percentiles", xlab = "Percentile", ylab = "Value")
Ek kaynaklar
R’de application(), lapply(), sapply() ve tapply() için bir kılavuz
Mutate() ve case_when() ile R’de yeni değişkenler oluşturun