Bu hafta derse katılamamıştım. Ders içeriğini çalıştım. Kodların açıklamalarını yazarak notlar çıkardım.
*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.
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(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
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() 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.
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() 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.
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.