1 Döngü Fonksiyonları

  • 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ı.

1.1 lapply() Fonksiyonu

  • 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.

listem <- list(a = 1:3, b = 4:6, c = 7:9)
lapply(listem, length) 
## $a
## [1] 3
## 
## $b
## [1] 3
## 
## $c
## [1] 3

1.2 sapply() Fonksiyonu

  • 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.

sapply(listem, sum)
##  a  b  c 
##  6 15 24

1.3 apply() Fonksiyonu

  • apply() fonksiyonu genellikle matrisler üzerinde işlem yapmak için kullanılır.

  • Örneğin, bir matrisin sütun ortalamalarını hesaplayabiliriz.

matris <- matrix(1:9, nrow = 3)
apply(matris, 2, mean)
## [1] 2 5 8

1.4 tapply() Fonksiyonu

  • 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

1.5 split() Fonksiyonu

  • split() bir vektörü belirli bir faktöre göre böler.

  • Örneğin, bir vektörü aylar bazında bölmek için;

veri <- c(1:12)
aylar <- factor(rep(1:3, each = 4))
split(veri, aylar)
## $`1`
## [1] 1 2 3 4
## 
## $`2`
## [1] 5 6 7 8
## 
## $`3`
## [1]  9 10 11 12

1.6 by() Fonksiyonu

  • 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

1.7 mapply() Fonksiyonu

  • 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.

mapply(rep, 1:3, 3:1) 
## [[1]]
## [1] 1 1 1
## 
## [[2]]
## [1] 2 2
## 
## [[3]]
## [1] 3

1.8 apply() ve Özel Kullanım

  • apply() fonksiyonu ile bağıl değişkenlik gibi özel hesaplamalar yapılabileceğini öğrendim.
bagil_degiskenlik <- function(x) { (sd(x) / mean(x)) * 100 }
apply(matris, 2, bagil_degiskenlik) 
## [1] 50.0 20.0 12.5

2 Dağılımlar ve Uygulamalar

  • 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.

2.1 pnorm() Fonksiyonu

  • pnorm() fonksiyonu, bir z değeri için kümülatif olasılığı hesaplar.

  • Örneğin (Z = 1.28 için olasılık)

pnorm(1.28)  
## [1] 0.8997274

2.2 qnorm() Fonksiyonu

  • 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)

qnorm(0.75)
## [1] 0.6744898

2.3 rnorm() Fonksiyonu

  • rnorm() fonksiyonu, normal dağılıma uygun rastgele sayılar üretir.

  • Örneğin (Ortalama 10 ve standart sapma 2 olan 5 rastgele sayı)

rnorm(5, mean = 10, sd = 2)
## [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

2.4 dbinom() Fonksiyonu

  • 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ığı)

dbinom(3, size = 5, prob = 0.7)  
## [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ı")  

2.5 Normal Dağılım

  • Normal dağılımın yoğunluk ve yığılma fonksiyonları farklı uygulamalar için kullanılabilir

2.5.1 Yoğunluk fonksiyonu

x <- seq(-3, 3, by = 0.1)
plot(x, dnorm(x, mean = 0, sd = 1), type = "l", 
     main = "Normal Dağılım Yoğunluk Fonksiyonu")

2.5.2 Yığılma fonksiyonu

plot(x, pnorm(x, mean = 0, sd = 1), type = "l",
     main = "Normal Dağılım Yığılım Fonksiyonu") 

2.6 Merkezi Limit Teoremi

  • 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ı")  

2.7 Uniform Dağılım

  • 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

örnek <- runif(1000, min = 0, max = 120)
hist(örnek, col = "red", main = "Uniform Dağılım") 

2.8 T Dağılımı

  • T dağılımı genellikle küçük örneklem büyüklüklerinde kullanılır.

  • Örnek

curve(dt(x, df = 10), from = -4, to = 4, 
      main = "t Dağılımı", col = "green") 

2.9 Poisson Dağılımı

  • Poisson dağılımı, belirli bir zaman aralığında veya alanda gerçekleşen olayların sayısını modellemek için kullanılır.
x <- 0:15
plot(x, dpois(x, lambda = 4), type = "h",
     main = "Poisson Dağılımı", col = "purple")  

2.10 Ki-Kare Dağılımı

  • Ki-kare dağılımı, istatistiksel testlerde yaygın olarak kullanılır.

  • Örnek

curve(dchisq(x, df = 4), from = 0, to = 10,
      main = "Ki-Kare Dağılımı", col = "red")

3 Günün Özeti

. 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.