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.