Döngü fonksiyonlarının, programlamada sıkça karşılaştığımız tekrarlı işlemleri daha kolay anlaşılır şekilde gerçekleştirmek için kullanıldığını öğrendim.
Komut satırında çok satırlı ifadeler oluşturmanın zorluğu göz önüne alındığında, bu fonksiyonlar oldukça faydalı.
lapply()
, bir liste üzerindeki her eleman için
belirli bir fonksiyonun uygulanmasını sağlar ve sonuçları bir liste
olarak döndürür.
Örneğin, aşağıdaki gibi bir liste oluşturup elemanlarının uzunluklarını hesaplayabiliriz.
## $a
## [1] 3
##
## $b
## [1] 3
##
## $c
## [1] 3
sapply()
, lapply()
ile benzer şekilde
çalışır ancak sonucu basitleştirir.
Örneğin, yukarıdaki listenin elemanlarının toplamını almak için
sapply()
kullanabiliriz.
## a b c
## 6 15 24
apply()
fonksiyonu genellikle matrisler üzerinde
işlem yapmak için kullanılır.
Örneğin, bir matrisin sütun ortalamalarını hesaplayabiliriz.
## [1] 2 5 8
tapply()
, bir vektör üzerindeki işlemleri gruplara
ayırarak uygular.
Örneğin, aşağıdaki örnekte boy bilgilerini cinsiyete göre gruplandırıp ortalamalarını aldım.
boy <- c(160, 165, 170, 155, 167)
cinsiyet <- factor(c("erkek", "kadın", "kadın", "kadın", "erkek"))
tapply(boy, cinsiyet, mean)
## erkek kadın
## 163.5000 163.3333
split()
bir vektörü belirli bir faktöre göre
böler.
Örneğin, bir vektörü aylar bazında bölmek için;
## $`1`
## [1] 1 2 3 4
##
## $`2`
## [1] 5 6 7 8
##
## $`3`
## [1] 9 10 11 12
by()
fonksiyonu, bir veri setini gruplara ayırarak
bu gruplar üzerinde fonksiyonlar uygular.
Örneğin, bir veri çerçevesindeki boy bilgilerini cinsiyete göre sıralayabiliriz.
veri <- data.frame(boy = c(160, 165, 170, 155, 167), cinsiyet = cinsiyet)
by(veri$boy, veri$cinsiyet, sort)
## veri$cinsiyet: erkek
## [1] 160 167
## ------------------------------------------------------------
## veri$cinsiyet: kadın
## [1] 155 165 170
mapply()
, birden fazla değişken üzerinde paralel
işlem yapar.
Örneğin, aşağıda her bir eleman için farklı uzunluklarda rastgele sayılar ürettim.
## [[1]]
## [1] 1 1 1
##
## [[2]]
## [1] 2 2
##
## [[3]]
## [1] 3
Olasılık yoğunluk fonksiyonlarının, bir değişkenin belirli bir değer alması ya da bu değerden küçük/büyük bir değer alması durumunda olasılıkları hesaplamak için kullanıldığını öğrendim.
R’da bu tür fonksiyonları uygulamanın kolay olduğunu fark ettim.
pnorm()
fonksiyonu, bir z değeri için kümülatif
olasılığı hesaplar.
Örneğin (Z = 1.28 için olasılık)
## [1] 0.8997274
qnorm()
fonksiyonu, belirli bir yüzdelik değer için
karşılık gelen z değerini bulur.
Örneğin (%75 yüzdelik dilimdeki z değeri)
## [1] 0.6744898
rnorm()
fonksiyonu, normal dağılıma uygun rastgele
sayılar üretir.
Örneğin (Ortalama 10 ve standart sapma 2 olan 5 rastgele sayı)
## [1] 12.402088 10.611420 10.978362 9.613872 8.619442
NOT: Dönem başından beri kullandığımız, çok işe yarar bir fonksion
Binom dağılımında başarı olasılığı, deneme sayısı gibi parametreler kullanılarak hesaplama yapılır.
Örneğin (5 denemede 3 başarı olasılığı)
## [1] 0.3087
Bir görselleştirme örneği:
x <- 0:5
plot(x, dbinom(x, size = 5, prob = 0.7),
type = "h", col = "blue",
main = "Binom Dağılımı")
Merkezi limit teoremi, örneklem büyüklüğü arttıkça örneklem ortalamalarının normal dağılıma yaklaştığını belirtir.
Örneğin
5 kişilik örneklem
örnek_ortalamalar <- replicate(50, mean(rnorm(3, mean = 100, sd = 15)))
hist(örnek_ortalamalar, col = "pink",
main = "3 Kişilik Örneklem Ortalamaları")
700 kişilik örneklem
örnek_ortalamalar <- replicate(50, mean(rnorm(700, mean = 100, sd = 15)))
hist(örnek_ortalamalar, col = "lightblue",
main = "700 Kişilik Örneklem Ortalamaları")
Uniform dağılım, her değerin eşit olasılığa sahip olduğu bir dağılım türüdür.
Örneğin
T dağılımı genellikle küçük örneklem büyüklüklerinde kullanılır.
Örnek
. Bu derste döngü fonksiyonlarının veri analizi sırasında işimizi ne kadar kolaylaştırabileceğini öğrendim.
. Bu fonksiyonlar, hem kodun daha okunabilir olmasını sağlıyor hem de işlemleri daha hızlı yapmamıza olanak tanıyor.
. Özellikle apply()
ailesi, farklı veri yapıları
üzerinde işlem yapma esnekliği sunarak zaman kazandırıyor.
. Bu ders, R’deki döngü fonksiyonlarını daha iyi anlamamı sağladı ve kendi örneklerimi uygulayarak pratik yapma fırsatı sundu.
. İkinci kısımda normal dağılım, binom dağılımı, t dağılımı, Poisson dağılımı ve ki-kare dağılımı gibi çeşitli dağılımlar üzerinde çalıştım.
. Her bir dağılımın belirli bir problem türü için kullanışlı olduğunu ve R ile bu dağılımların kolayca modellenebileceğini öğrendim.