Bu hafta derse katılamamıştım. Ders içeriğini çalıştım. Kodların açıklamalarını yazarak notlar çıkardım.

runif() ile Veri Üretme ve Histogram

*runif(): Belirlediğimiz alt ve üst sınırlar arasında, her değerin gelme olasılığı eşit olan rastgele sayılar üretir.

*hist() :sayısal bir değişkenin dağılımını görsel olarak incelemek için kullanılan histogram fonksiyonudur.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
runif(5, min = 0, max = 1) # 0 ile  1 arasında 5 tane sayı üretir
## [1] 0.4770 0.0878 0.7276 0.2215 0.4395
x <- runif(100, 50, 100) # Örnek veri üretme

set.seed(123) # her çalıştığında aynı veriyi elde etmek için

summary(x)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    51.6    61.1    79.5    76.1    88.2    99.1
hist(x) #histogramı

## lapply() ile runif() Uygulamaları

lapply() fonksiyonu, bir vektörün her elemanını argüman olarak alarak runif() fonksiyonunu yinelemeli biçimde çalıştırırve her yinelemenin çıktısını liste yapısında döndürür.

lapply(1:4,runif)
## [[1]]
## [1] 0.288
## 
## [[2]]
## [1] 0.788 0.409
## 
## [[3]]
## [1] 0.8830 0.9405 0.0456
## 
## [[4]]
## [1] 0.528 0.892 0.551 0.457
# 1’den 4’e kadar her sayı için, o sayı kadar (0–1 arası) rastgele değer üretir ve sonuçları liste olarak döndürür.

lapply(5:10,runif,min=10,max=20)
## [[1]]
## [1] 19.6 14.5 16.8 15.7 11.0
## 
## [[2]]
## [1] 19.0 12.5 10.4 13.3 19.5 18.9
## 
## [[3]]
## [1] 16.9 16.4 19.9 16.6 17.1 15.4 15.9
## 
## [[4]]
## [1] 12.9 11.5 19.6 19.0 16.9 18.0 10.2 14.8
## 
## [[5]]
## [1] 17.6 12.2 13.2 12.3 11.4 14.1 14.1 13.7 11.5
## 
## [[6]]
##  [1] 11.4 12.3 14.7 12.7 18.6 10.5 14.4 18.0 11.2 15.6
# 5’ten 10’a kadar her sayı için, 10–20 aralığında o sayı kadar rastgele değer üretir.

lapply(1:3,runif,min=1:3,max=10:12)
## [[1]]
## [1] 2.86
## 
## [[2]]
## [1] 2.15 8.78
## 
## [[3]]
## [1] 9.06 5.37 8.99
# 1’den 3’e kadar her sayı için, min–max değerleri geri dönüştürülerek (recycling) farklı aralıklardan rastgele değerler üretir.

lapply(1:3,runif,min=1:3,max=10:12) %>% lapply(round, 2)
## [[1]]
## [1] 1.85
## 
## [[2]]
## [1] 4.46 4.47
## 
## [[3]]
## [1]  8.33  6.04 10.29
 #1’den 3’e kadar her sayı için farklı min–max aralıklarında üretilen rastgele değerleri, liste yapısını koruyarak iki ondalık basamağa yuvarlar.

Rastgele sayılarla farklı boyutlarda matris oluşturma

set.seed(40)


liste <- list(m1 = matrix(runif(10,5,10),2,5),
 # 5–10 aralığında üretilen 10 rastgele değeri 2×5 boyutlu bir matrise dönüştürür.
             m2 = matrix(runif(20,10,20),4,5))
# 10–20 aralığında üretilen 20 rastgele değeri 4×5 boyutlu bir matrise dönüştürür.
liste
## $m1
##      [,1] [,2] [,3] [,4] [,5]
## [1,] 8.42 8.45 5.98 6.02 6.87
## [2,] 9.36 5.58 7.31 7.95 5.71
## 
## $m2
##      [,1] [,2] [,3] [,4] [,5]
## [1,] 11.0 19.6 11.0 11.1 13.1
## [2,] 17.0 18.0 15.8 15.7 16.9
## [3,] 10.8 13.9 14.7 17.9 16.7
## [4,] 12.3 19.8 13.0 16.4 17.6

lapply() fonksiyonu kullanılarak listedeki her bir matrisin ilk ve son sütunlarının elemanlarını çarpma

lapply(liste, function(a){a[,1]*a[,5]})
## $m1
## [1] 57.8 53.4
## 
## $m2
## [1] 144 288 180 217
 # Liste içindeki her matris için, birinci sütun ile beşinci sütunun elemanlarını satır bazında çarpar

Grup Bazlı Özetleme: split() + lapply()

split() fonksiyonu, veri kümesini belirli bir gruplama değişkenine göre alt gruplara ayırarak istatistiksel işlemlerin uygulanmasını kolaylaştırır.

data(iris)
glimpse(iris)
## Rows: 150
## Columns: 5
## $ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.…
## $ Sepal.Width  <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.…
## $ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.…
## $ Petal.Width  <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.…
## $ Species      <fct> setosa, setosa, setosa, setosa, setosa, setosa, setosa, s…
iris_group <- split(iris,iris$Species)
# iris veri setini Species değişkenindeki kategori sayısına göre gruplanrır


lapply(iris_group,function(x){mean(x[,2])})
## $setosa
## [1] 3.43
## 
## $versicolor
## [1] 2.77
## 
## $virginica
## [1] 2.97
# Her grup içinikinci değişkenin  ortalamasını hesaplar 

lapply(iris_group,summary)
## $setosa
##   Sepal.Length   Sepal.Width    Petal.Length   Petal.Width          Species  
##  Min.   :4.30   Min.   :2.30   Min.   :1.00   Min.   :0.100   setosa    :50  
##  1st Qu.:4.80   1st Qu.:3.20   1st Qu.:1.40   1st Qu.:0.200   versicolor: 0  
##  Median :5.00   Median :3.40   Median :1.50   Median :0.200   virginica : 0  
##  Mean   :5.01   Mean   :3.43   Mean   :1.46   Mean   :0.246                  
##  3rd Qu.:5.20   3rd Qu.:3.67   3rd Qu.:1.57   3rd Qu.:0.300                  
##  Max.   :5.80   Max.   :4.40   Max.   :1.90   Max.   :0.600                  
## 
## $versicolor
##   Sepal.Length   Sepal.Width    Petal.Length   Petal.Width         Species  
##  Min.   :4.90   Min.   :2.00   Min.   :3.00   Min.   :1.00   setosa    : 0  
##  1st Qu.:5.60   1st Qu.:2.52   1st Qu.:4.00   1st Qu.:1.20   versicolor:50  
##  Median :5.90   Median :2.80   Median :4.35   Median :1.30   virginica : 0  
##  Mean   :5.94   Mean   :2.77   Mean   :4.26   Mean   :1.33                  
##  3rd Qu.:6.30   3rd Qu.:3.00   3rd Qu.:4.60   3rd Qu.:1.50                  
##  Max.   :7.00   Max.   :3.40   Max.   :5.10   Max.   :1.80                  
## 
## $virginica
##   Sepal.Length   Sepal.Width    Petal.Length   Petal.Width         Species  
##  Min.   :4.90   Min.   :2.20   Min.   :4.50   Min.   :1.40   setosa    : 0  
##  1st Qu.:6.22   1st Qu.:2.80   1st Qu.:5.10   1st Qu.:1.80   versicolor: 0  
##  Median :6.50   Median :3.00   Median :5.55   Median :2.00   virginica :50  
##  Mean   :6.59   Mean   :2.97   Mean   :5.55   Mean   :2.03                  
##  3rd Qu.:6.90   3rd Qu.:3.17   3rd Qu.:5.88   3rd Qu.:2.30                  
##  Max.   :7.90   Max.   :3.80   Max.   :6.90   Max.   :2.50

tapply() ve by()

tapply() ve by() fonksiyonları, sürekli bir değişkenin kategorik bir değişkene göre gruplandırılarak özet istatistiklerinin hesaplanmasını sağlar, by() fonksiyonu sonuçları daha açıklamalı verir.

tapply(iris$Sepal.Length, iris$Species, sd)
##     setosa versicolor  virginica 
##      0.352      0.516      0.636
# Sepal.Length değişkeninin standart sapmasını, Species türlerine göre ayrı ayrı hesaplar.

by(iris$Sepal.Length, iris$Species, sd)
## iris$Species: setosa
## [1] 0.352
## ------------------------------------------------------------ 
## iris$Species: versicolor
## [1] 0.516
## ------------------------------------------------------------ 
## iris$Species: virginica
## [1] 0.636
# Sepal.Length değişkeninin standart sapmasını Species gruplarına göre hesaplar ve sonuçları grup etiketleriyle birlikte gösterir.

Bağıl Değişkenlik Katsayısı Hesaplama Fonksiyonu ve lapply–sapply Kullanımı

bagildeg <- function(dagilim){
  (sd(dagilim)/mean(dagilim))*100
}
# Verilen vektör için bağıl değişkenlik katsayısını hesaplayan  fonksiyon 

set.seed(40)  # Rastgele sayı üretimini sabitler

veri1 <- rnorm(100,50,15) # Ortalaması 50, standart sapması 15 olan  normal dağılımlı 100 veri

veri2 <- rnorm(100,50,10) # Ortalaması 50, standart sapması 10 olan  normal dağılımlı 100 veri

veri3 <- rnorm(100,50,5) # Ortalaması 50, standart sapması 5 olan normal dağılımlı 100 veri

# Her bir veri için bağıl değişkenlik katsayısı hesaplama

bagildeg(veri1)
## [1] 29.7
bagildeg(veri2)
## [1] 21.5
bagildeg(veri3)
## [1] 9.38
veriler <- list(veri1,veri2,veri3) # Üç farklı veri setini birleştirme


lapply(veriler,bagildeg)  #Listedeki her veri seti için bağıl değişkenlik katsayısını hesaplar, sonuçları liste olarak döndürür.
## [[1]]
## [1] 29.7
## 
## [[2]]
## [1] 21.5
## 
## [[3]]
## [1] 9.38
sapply(veriler,bagildeg) # Listedeki her veri seti için bağıl değişkenlik katsayısını hesaplar ve sonuçları vektör halinde döndürür.
## [1] 29.67 21.54  9.38

mapply ve lapply Kullanımı

mapply() fonksiyonu, birden fazla argümanı eş zamanlı olarak eşleştirerek farklı özelliklere sahip veri setleri üretmekte; lapply() ise bu veri setleri üzerinde bağıl değişkenlik katsayısını hesaplamaktadır.

veriler3 <- mapply(rnorm, 1:5, 1:5, 2)
# 1’den 5’e kadar artan örneklem büyüklükleri ve ortalamalarla, standart sapması 2 olan normal dağılımlardan rastgele değerler üretir.

lapply (veriler3, bagildeg)
## [[1]]
## [1] NA
## 
## [[2]]
## [1] 167
## 
## [[3]]
## [1] 130
## 
## [[4]]
## [1] 36.5
## 
## [[5]]
## [1] 31.4
# mapply ile üretilen her veri seti için bağıl değişkenlik katsayısını (CV %) hesaplar.

Bir Fonksiyonu Vektörleştirme

R, farklı uzunluktaki vektörlerle işlem yaparken kısa vektörleri geri dönüştürerek uzun vektörle eşleştirir; bu nedenle sumsq() fonksiyonu eleman bazında değil, tüm veri üzerinde tek bir toplu sonuç üretmiştir.

#Ortalama (mu), standart sapma (sigma) ve veri vektörü (x) alan; standartlaştırılmış sapmaların kareleri toplamını hesaplayan bir fonksiyon tanımlama

sumsq <- function(mu, sigma, x)  {
         sum(((x - mu) / sigma)^2)
}

x <- rnorm(100)   #Standart normal dağılımlı 100 gözlemden oluşan bir veri vektörü üretir.

sumsq(1:10, 1:10, x)  #mu ve sigma için verilen 1:10 vektörlerini, R’ın geri dönüşüm  kuralına göre x’in uzunluğuna uyarlayarak tek bir toplam kareler sonucu hesaplar.
## [1] 109
# Bu son satırda R, mu ve sigma vektörlerini eleman bazında ayrı ayrı sonuçlar üretmek için değil, geri dönüştürerek kullanır; bu nedenle çıktı tek bir sayıdır.