Öne çıkan

Tekrarlı Basit Tesadüfi Örnekleme ve Bootstrap Örnekleme Üzerine Vaka Çalışmaları: Case Studies on Simple Random Sampling with Replacement and Bootstrap Sampling

Bootstrap, istatistik dağılımlarını anlamaya yönelik 1979’da Stanford Üniversitesinden Amerikalı istatistikçi Bradley Efron tarafından geliştirilmiş parametrik ve non-parametrik versiyonları olan hem istatistiksel bir teknik hem de bir simülasyon yöntemidir.

Bootstrap örnekleme duyarlılık analizleri, istatistiksel ve ekonometrik analizlerden makine öğrenme ve derin öğrenmeye kadar pek çok farklı alanda kendine uygulama alanı bulmaktadır. Kısacası bu yöntem bütün alanlarda kullanılabilmektedir. Bootstrap, belirli bir istatistiksel yöntemle ilişkili belirsizlik ölçülerini tahmin etmek için en genel ve en yaygın kullanılan araçlardan biridir. Bazı yaygın temel bootstrap uygulamaları şunlardır: belirli bir istatistiksel tahmincinin merkezi dağılım ve yayılım ölçülerini, standart sapmasını, varyansını tahmin etmek veya ilgili parametreler için yaklaşık güven aralıkları oluşturmak. Ancak çok daha gelişmiş uygulama alanları da mevcuttur özellikle makine ve derin öğrenme alanlarında. Sözü gelmişken ifade etmekte fayda var; veri bilimiyle ilgilenilen bazı internet sitelerinde Bootstrap örnekleme ile tekrarlı basit tesadüfi örneklemenin birbirinin yerine ve eş anlamlı olarak kullanıldığı görülmektedir. Aslında bu kavramların adları da hatalı kullanılmaktadır. Hadi burayı geçelim bir ölçüde tolere edilebilir ama Bootstrap örnekleme ile tekrarlı basit tesadüfi örneklemenin birbirinin yerine kullanılması eksik kalan hatalı bakış açısıdır ve düzeltilmeye ihtiyacı vardır. Bu iki yöntem birbirine yakın ancak aynı şey olmadığını ifade etmek lazım. Bu iki yöntem birbirine benzemektedir çünkü Bootstrap örnekleme tekrarlı basit tesadüfi örneklem üzerine inşa edilmiştir. Farklılığı ise tekrarlı örnekleme tekniğinde örneklemin popülasyondan çekilmesi ve çekilecek örneklem büyüklüğünün ise popülasyon (N)’daki gözlem sayısı (popülasyon birimleri)’ndan az veya ona eşit olmasıdır. Diğer bir farklılığı, Bootstrap örneklemede örneklem, yine bir popülasyondan çekilmiş bir örneklem birimleri içerisinden çekilir ve Bootstrap örneklemlerin sayısı (n1, n2, n3, n4……….ni), popülasyondan çekilmiş örneklem büyüklüğü (n)’ne eşit olmasıdır. Diğer bir deyişle, n1, n2, n3, n4……….ni= n’dir. Ayrıca Bootstrap örneklemede popülasyonu temsil eden örneklemden birden fazla sayıda örneklem seçimi (replikasyon) söz konusudur. Eğer popülasyonu temsil eden orjinal örneklemden birden fazla sayıda örneklem oluşturuyorsa burada replikasyondan bahsederiz. Replikasyonu r ile gösterirsek r>1 ve r1‘den ri‘ye kadar örneklem seçimi yapılır. Yani burada replikasyon (r) bize kaç kez tekrarlı örnekleme yapacağımızı gösterir. Bu durumda basit bir hesaplama ile Bootstrap örneklemede yeni gözlem sayıları= rxn‘dir. Bahsedilenler ışığında Şekil 2 üzerinde Bootstrap örnekleme açıklanmaya çalışılmıştır.

İstatistikte olasılıklı örnekleme, popülasyon birimlerinin bulunduğu bir listeden örneklem birimlerinin seçilmesidir. Tesadüfi seçilmiş örneklem birimleri (sample unit)’nde, tesadüfi seçilir. Olasılıklı örnekleme yöntemlerinden tesadüfi örneklemede yaygın olarak iki yöntem kullanılmaktadır. Bunlardan ilki ve en yaygın olanı tekrarsız basit tesadüfi örnekleme (simple random sampling without replacement), diğeri ise sistematik örneklemedir. Bu yöntemler örneklemle popülasyona genelleme çalışmalarının yapıldığı araştırma literatüründe mutlak bir şekilde kullanılmaktadır. Bu yöntemlerin temel özelliği hedef popülasyon içerisindeki popülasyon birimlerine örnekleme seçilmesinde eşit şans verilmesidir. Bu yöntemlerle ilgili uygulamalı çalışmaları ve daha fazlasını bu site üzerinde yayınladım. İlgi duyanlar yöntemlerle uygulamalarının nasıl yapıldığını buradan öğrenebilir ve aynı zamanda bu çalışmaları indirebilirler. Tekrarlı basit tesadüfi örnekleme (simple random sampling with replacement)’de ise böyle bir durum söz konusu değildir, diğer bir deyişle örneklem birimlerine ya da popülasyon birimlerine eşit seçilme şansı verilmez. Gelin şimdi çalışmamızın odağı olan tekrarsız ve tekrarlı basit tesadüfi örnekleme yöntemlerini, ardından ise bootsrap örneklemeyi inceleyelim. Bu çalışmalar kapsamında uygulamaları hem Microsoft Excel hem de R programlama dili üzerinde yaparak okuyuculara konunun öğrenilmesi noktasında daha fazla katkı sunulması amaçlanmıştır.

Tekrarsız Basit Tesadüfi Örnekleme

Popülasyondan örnekleme seçilen her birimin eşit seçilme şansı olduğu olasılıklı örnekleme yöntemi basit tesadüfi tekrarsız örnekleme yöntemidir. Örneğin kürede isimleri yazılı 81 ilden 10 ilin geri koyulmadan sırasıyla seçildiğini varsayalım. Burada seçilen her il çekildikten sonra küreye koymayarak (iadesiz) diğerlerine eşit şans tanımış olduk. Bu durumda tekrarsız seçim yaparak tekrarsız örnekleme yaptığımızdan küreden seçilen herhangi bir ile bir daha seçilme şansı vermemiş oluyoruz. Bu konuyla ilgili olarak daha önce Microsoft Excel üzerinde yaptığım simülasyona dayalı kapsamlı örnek uygulama çalışmasını aşağıdaki linkte paylaşıyorum.

Tekrarsız Basit Tesadüfi Örnekleme Yöntemi Kullanılarak Z Tablosu Üzerinden Güven Aralığının Hesaplanmasına Yönelik Bir Simülasyon Çalışması

Tekrarsız Basit Tesadüfi Örnekleme Yöntemi Kullanılarak t Dağılım Tablosu Üzerinden Güven Aralığının Hesaplanmasına Yönelik Bir Simülasyon Çalışması

Bu örnek uygulama ile hem tekrarsız basit tesadüfi örneklemenin nasıl yapıldığını hem de güven aralığının nasıl hesaplandığını görmüş ve öğrenmiş olacaksınız. Bu uygulamada açık bir şekilde kullanılan fonksiyonları da göreceğinizden oldukça faydalı olacağı düşünülmektedir.

Tekrarlı Basit Tesadüfi Örnekleme

Popülasyondan örnekleme seçilen her birime eşit seçilme şansının verilmediği, diğer bir ifadeyle her popülasyon biriminin birden fazla seçilme şansının olduğu olasılıklı örnekleme yöntemi tekrarlı basit tesadüfi örnekleme yöntemidir. Örneğin kürede isimleri yazılı 81 ilden 10 ilin seçildiğini varsayalım. Tekrarsız basit tesadüfi örnekleme yönteminden farklı olarak bu yöntemde seçilen iller tekrar küreye bırakılarak (iadeli) burada bu illere birden fazla seçilme şansı verilir. Diyelim ki küreden 1. sırada çekilen il Trabzon’dur. Trabzon ilinin tekrar küreye atılarak seçilen her ilin tekrar küreye konulmak suretiyle seçim döngüsünün 10. ilin seçilmesine kadar (dahil) devam ettiği süreci bu yöntemle tanımlarız. Burada 1. sırada seçilen Trabzon ilinin diğer seçimlerde de küreden çıkma şansı bulunmaktadır.  Tekrarlı basit tesadüfi örnekleme tekniğinin daha kalıcı olması adına Microsoft Excel’de sentetik veri üreterek hazırladığım örnek uygulama Şekil 1’de ve daha önce yapmış olduğum çalışmalarda verilmiştir. Tekrarlı basit tesadüfi örnekleme çalışmasına aşağıdaki linkten ulaşabilirsiniz.

Z Tablosuna Göre Güven Aralığının Hesaplanmasına Yönelik Bir Simülasyon Çalışması

Burada formüllere yer verilerek ayrıca sizi formüllere boğmayacağım 🙂 . Önemli olan işin felsefesini anlamak. Uygulama ile zaten çok rahat anlayacağınızı düşünüyorum.

Şekil 1: Tekrarlı Basit Tesadüfi Örnekleme

Bu görselin boş bir alt özelliği var; dosya ismi: image.png

Şekil 1’deki tekrarlı basit tesadüfi örnekleme uygulamasını xlsx formatında aşağıdaki linkten indirebilirsiniz. Bu çalışma aynı zamanda tekrarlı basit tesadüfi örnekleme simülasyon çalışması olup, çalışmada kullanılan fonksiyonları da görerek konunun daha kalıcı olarak anlaşılmasına katkı sunulması amaçlanmıştır. Aynı çalışmada Şekil 2’de belirtilen Bootstrap örneklemeye de yer verilmiştir. Microsoft Excel ortamındaki uygulamada F9 tuşuna basılı tutarak yeni tekrarlı basit tesadüfi örneklem birimleri üretebilirsiniz. Microsoft Excel’de bu uygulamanın verilmesinin nedeni R programlama dili bilmeyenlerin olabileceği ve kullanılan fonksiyonları ile bu fonksiyonların birbiriyle etkileşimlerinin gösterilmek istenmesi düşüncesinden ileri gelmektedir.

Bootstrap’ta, ilgilenilen popülasyondan birçok kez tekrarlı örneklemler (aynı büyüklükte) alınır. Bu nedenle bu tekniği anlamadan önce tekrarlı basit tesadüfi örnekleme mantığının anlaşılması gerekir. Örneklem çalışmalarında amaç, güncel bilgiye en hızlı ve en düşük maliyetle ulaşmaktır. Bootstrap’in arkasında yatan fikir, bir istatistiğin örnekleme dağılımına ne kadar ve ne ölçüde evrildiğini Bootstrap örneklemlerle ortaya koyarak Bootstrap örnek dağılımını göstermektir. Şekil 2’de Bootstrap örneklemenin somutlaştırılması adına örnek bir uygulama hazırlanmıştır. Burada amaç Bootstrap örneklemenin felsefesini göstermek olduğundan minimal örneklem büyüklükleri üzerinden gidilmiştir. Eğer Z tablosu kullanılarak güven aralığı hesaplanması isteniyorsa örneklem büyüklüğünün 30 ve 30’dan büyük, t (student’s t) tablosu kullanılarak güven aralığı hesaplanması isteniyorsa örneklem büyüklüğünün 30’dan daha düşük olması gerekir. Bunları burada hatırlatmakta fayda var. Şekil 2’deki örnek bootstrap örneklemede replikasyon (tekrar) sayımız 4, tekrarlı seçilen örneklemlerin büyüklüğü (sample size) ise 5’tir. Burada replikasyon sayısı ve örneklem büyüklüğü uygulama Microsoft excel ortamında yapıldığı için düşük tutulmuştur. Genelde literatürde ve uygulamalarda replikasyon sayısı 1000 olarak alındığı görülmektedir. Ancak replikasyon sayısının araştırmanın amacına, dizaynına ve veri setine göre değişiklik gösterebileceği unutulmamalıdır.

Şekil 2: Bootstrap Örnekleme

Şimdi de Şekil 2’deki Bootstrap örneklemlere dayalı olarak orijinal örneklemde değerleri ne kadar doğrulukla, yani ne kadarlık bir sapma (bias) ile tahmin edebileceğimizi hesaplayalım. Bu hesaplama Tablo 1’de verilmiştir. Tablo 1’de bias (sapma), orijinal örneklem ortalamasından Bootstrap örneklem ortalamasının çıkarılarak hesaplanmıştır. Tablo 1 üzerinden gidecek olursak Bias = 34,6-30,95=3,65’tir. Biz burada hesapladığımız sapma (bias) değeri ile aslında 4 kez (replikasyon) Bootstrap örnekleme yaptığımızda elde elde ettiğimiz Bootstrap örneklem ortalamasının gözlem ortalamasından 3,65 saptığını söylüyoruz. Daha büyük örneklem büyüklüklerinde ve daha yüksek replikasyonlarda (tekrarlarda) bu sapma değeri düşecektir.

Tablo 1: Bootstrap Örnekleme İle Sapmanın Hesaplanması

Şimdi de R programlama dili kullanarak gerçekçi bir veri seti üzerinden bootstrap örnekleme ile merkezi dağılım ölçüleri ve bunların güven aralıklarını hesaplayalım. Bu bağlamda bu kısımda kullanılan veri seti R’da yer alan pizza verisidir. Veri seti, 1209 gözlem ve 16 değişkenden oluşmaktadır. Veri setini aşağıdaki linkten indirebilirsiniz.

R’da Tekrarlı Basit Tesadüfi Örnekleme ve Bootstrap Örnekleme

Yüklenecek kütüphaneler

library<-c("reactable","dplyr","tibble","tidyr","ggplot2","formattable","ggthemes","readr","readxl","ggpubr","formattable", "ggstance", "explore", "tidytext", "scales", "data.table", "pastecs", "gtools", "rmarkdown", "knitr", "gtsummary", "writexl", "ppcor","psych", "reshape2", "GGally", "CCP", "Hmisc", "VIM", "philentropy", "kableExtra", "foreign", "DescTools", "pander", "infer", "boot", "bootstrap")
loading<-sapply(library, require, character.only = TRUE)

suppressWarnings(loading, classes = "warning")

Veri setinin okunması ve xlsx uzantılı çalışma kitabına yazdırılması

pizza=d.pizza
head(pizza,10) %>% pander(caption="Pizza Veri Seti İlk 10 Gözlem")
write_xlsx(pizza, "pizzaverisi.xlsx") # veri setinin xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılması

Yukarıdaki R kod bloğunun çalıştırılmasından sonra veri setindeki ilk 10 kayıt aşağıdaki tabloda verilmiştir.

----------------------------------------------------------------------------
 index      date      week   weekday      area       count   rabate   price 
------- ------------ ------ --------- ------------- ------- -------- -------
   1     2014-03-01    9        6        Camden        5      TRUE    65.66 

   2     2014-03-01    9        6      Westminster     2     FALSE    26.98 

   3     2014-03-01    9        6      Westminster     3     FALSE    40.97 

   4     2014-03-01    9        6         Brent        2     FALSE    25.98 

   5     2014-03-01    9        6         Brent        5      TRUE    57.56 

   6     2014-03-01    9        6        Camden        1     FALSE    13.99 

   7     2014-03-01    9        6        Camden        4      TRUE    89.44 

   8     2014-03-01    9        6         Brent       NA       NA      NA   

   9     2014-03-01    9        6      Westminster     3     FALSE    40.97 

  10     2014-03-01    9        6         Brent        6      TRUE    84.74 
----------------------------------------------------------------------------

Table: Pizza Veri Seti İlk 10 Gözlem (continued below)

 
----------------------------------------------------------------
 operator   driver    delivery_min   temperature   wine_ordered 
---------- --------- -------------- ------------- --------------
  Rhonda    Taylor         20            53             0       

  Rhonda    Butcher       19.6          56.4            0       

 Allanah    Butcher       17.8          36.5            0       

 Allanah    Taylor        37.3           NA             0       

  Rhonda    Carter        21.8           50             0       

 Allanah    Taylor        48.7           27             0       

  Rhonda    Taylor        49.3          33.9            1       

 Allanah    Taylor        25.6          54.8            NA      

 Allanah    Taylor        26.4           48             0       

  Rhonda    Carter        24.3          54.4            1       
----------------------------------------------------------------

Table: Table continues below

 
---------------------------------------
 wine_delivered   wrongpizza   quality 
---------------- ------------ ---------
       0            FALSE      medium  

       0            FALSE       high   

       0            FALSE        NA    

       0            FALSE        NA    

       0            FALSE      medium  

       0            FALSE        low   

       1            FALSE        low   

       NA           FALSE       high   

       0            FALSE       high   

       1            FALSE      medium  
---------------------------------------

Veri setinin yapısını gözden geçirme

Aşağıda da görüleceği üzere pizza veri seti 1209 gözlem ve 16 değişkenden oluşmaktadır. Bazı değişkenlerin nominal ve ordinal kategorik, bazılarının ise nicel veri tipinde olduğu görülmektedir.

'data.frame':	1209 obs. of  16 variables:
 $ index         : int  1 2 3 4 5 6 7 8 9 10 ...
 $ date          : Date, format: "2014-03-01" "2014-03-01" "2014-03-01" "2014-03-01" ...
 $ week          : num  9 9 9 9 9 9 9 9 9 9 ...
 $ weekday       : num  6 6 6 6 6 6 6 6 6 6 ...
 $ area          : Factor w/ 3 levels "Brent","Camden",..: 2 3 3 1 1 2 2 1 3 1 ...
 $ count         : int  5 2 3 2 5 1 4 NA 3 6 ...
 $ rabate        : logi  TRUE FALSE FALSE FALSE TRUE FALSE ...
 $ price         : num  65.7 27 41 26 57.6 ...
 $ operator      : Factor w/ 3 levels "Allanah","Maria",..: 3 3 1 1 3 1 3 1 1 3 ...
 $ driver        : Factor w/ 7 levels "Butcher","Carpenter",..: 7 1 1 7 3 7 7 7 7 3 ...
 $ delivery_min  : num  20 19.6 17.8 37.3 21.8 48.7 49.3 25.6 26.4 24.3 ...
 $ temperature   : num  53 56.4 36.5 NA 50 27 33.9 54.8 48 54.4 ...
 $ wine_ordered  : int  0 0 0 0 0 0 1 NA 0 1 ...
 $ wine_delivered: int  0 0 0 0 0 0 1 NA 0 1 ...
 $ wrongpizza    : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ quality       : Ord.factor w/ 3 levels "low"<"medium"<..: 2 3 NA NA 2 1 1 3 3 2 ...

Eksik gözlemlerin gözden geçirilmesi

eksikveri=colSums(is.na(pizza))
deger=as.tibble(eksikveri)
data.frame(Degisken=colnames(pizza), Sayi=deger$value, "Orani"=round((deger$value/sum(deger$value))*100,2)) %>% pander(caption="Eksik Gözlemlerin Sayısı")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra değişkenlere göre elde edilen eksik gözlemler aşağıdaki tabloda verilmiştir.

-------------------------------
    Degisken      Sayi   Orani 
---------------- ------ -------
     index         0       0   

      date         32    7.57  

      week         32    7.57  

    weekday        32    7.57  

      area         10    2.36  

     count         12    2.84  

     rabate        12    2.84  

     price         12    2.84  

    operator       8     1.89  

     driver        5     1.18  

  delivery_min     0       0   

  temperature      39    9.22  

  wine_ordered     12    2.84  

 wine_delivered    12    2.84  

   wrongpizza      4     0.95  

    quality       201    47.52 
-------------------------------

Table: Eksik Gözlemlerin Sayısı

Veri setinden tekrarsız basit tesadüfi örnekleme tekniği ile örneklem seçimi

set.seed(61)#aynı örneklem birimlerinin alınması için
ornek<-pizza %>% sample_frac(0.7) # örneklem büyüklüğü 846 gözlemden oluşmaktadır.
sum(is.na(ornek$price)) # örneklemdeki eksik gözlem sayısı 10
fiyat=ornek$price[complete.cases(ornek$price)] #örneklemdeki eksik gözlemlerin çıkarılması
#alternatif tekrarsız basit tesadüfi örneklem seçimi 
#pizza[sample(1:nrow(pizza),NROW(pizza)*0.7, replace=FALSE),]

a) Medyan Değerler Üzerinden Bootstrap Örnekleme

Bootstrap örnekleme pizza veri setindeki pizza fiyatı üzerinden yapılmıştır. Bootstrap örnekleme de replikasyon (tekrar) sayısı 1000, her bir replikasyondaki örneklem büyüklüğümüz (sample size) ise 836’dır. Buna göre yeni durumda toplam gözlem sayımız ise 1000 x 836 =836000’dır.

Orjinal örneklem setinden % 95 ve 99 güven aralıklarında medyan değerlerinin belirlenmesi

Pizza veri setinden tekrarsız basit tesadüfi örnekleme ile çekilen 836 gözlem (846-10=836, 10 gözlem eksik olduğu için veri setinden çıkarılmıştır) üzerinden pizza piyatları (price) değişkeninden hareketle merkezi dağılım ölçülerinden biri olan medyanlar hesaplanmıştır.

ga=0.90 # % 90 güven aralığını göstermektedir.
sonuc=MedianCI(fiyat, na.rm=TRUE, conf.level =ga)
medyan=sonuc[1]
altsinir=sonuc[2]
ustsinir=sonuc[3]
k=tibble(medyan, altsinir, ustsinir, guven_araligi=ga)

#% 95 güven aralığında medyan değerlerini hesaplama
ga1=0.95 # % 95 güven aralığını göstermektedir.
sonuc1=MedianCI(fiyat, na.rm=TRUE, conf.level =ga1)
medyan=sonuc1[1]
altsinir=sonuc1[2]
ustsinir=sonuc1[3]
l=tibble(medyan, altsinir, ustsinir, guven_araligi=ga1)

#% 99 güven aralığında medyan değerlerini hesaplama
ga2=0.99 # % 90 güven aralığını göstermektedir.
sonuc2=MedianCI(fiyat, na.rm=TRUE, conf.level =ga2)
medyan=sonuc2[1]
altsinir=sonuc2[2]
ustsinir=sonuc2[3]
m=tibble(medyan, altsinir, ustsinir, guven_araligi=ga2)

baz=rep("baz",2)
lm=rbind(l,m)
# Medyan değerlerinin tek bir tabloda birleştirilmesi
baztum=cbind(model=baz, lm)
baztum %>% pander(caption="Orjinal Örneklemde % 95 ve % 99 Güven Aralığında Pizza Fiyatlarının Medyan Değerleri")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra orjinal örneklem veri setinden elde edilen % 95 ve 99 güven aralıklarında medyan değerleri aşağıdaki tabloda verilmiştir.

------------------------------------------------------
 model   medyan   altsinir   ustsinir   guven_araligi 
------- -------- ---------- ---------- ---------------
  baz    46.79     44.97      47.97         0.95      

  baz    46.79     44.96      48.56         0.99      
------------------------------------------------------

Table: Orjinal Örneklemde % 95 ve % 99 Güven Aralığında Pizza Fiyatlarının Medyan Değerleri

% 95 ve 99 güven aralığında bootstrap örneklemeyle medyan değerlerin hesaplanması

options(scipen = 999)
set.seed(61) # aynı sonuçları alabilmeniz adına sabitlenmiştir.
bfiyat=fiyat %>% as_tibble() %>% rename(fiyat=value) %>%
generate(reps = 1000, type = "bootstrap")

#% 95 güven aralığında medyan değerlerini hesaplama

ga1=0.95 # % 95 güven aralığını göstermektedir.
sonuc1=MedianCI(bfiyat$fiyat, na.rm=TRUE, conf.level =ga1)
medyan=sonuc1[1]
altsinir=sonuc1[2]
ustsinir=sonuc1[3]
lb=tibble(medyan, altsinir, ustsinir, guven_araligi=ga1)

#% 99 güven aralığında medyan değerlerini hesaplama

ga2=0.99 # % 99 güven aralığını göstermektedir.
sonuc2=MedianCI(bfiyat$fiyat, na.rm=TRUE, conf.level =ga2)
medyan=sonuc2[1]
altsinir=sonuc2[2]
ustsinir=sonuc2[3]
mb=tibble(medyan, altsinir, ustsinir, guven_araligi=ga2)

boost=rep("boostrap ornekleme",2)
blm=rbind(lb,mb)
tumb1=cbind(model=boost, blm)
tumb1 %>% pander(caption="% 95 ve % 99 Güven Aralığında 1000 Tekrarlı (Replikasyon) Boostrap Örnekleminde Pizza Fiyatlarının Medyan Değerleri")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen % 95 ve % 99 güven aralığında 1000 tekrarlı (replikasyon) boostrap örnekleminde pizza fiyatı medyan değerleri aşağıdaki tabloda verilmiştir.

-------------------------------------------------------------------
       model          medyan   altsinir   ustsinir   guven_araligi 
-------------------- -------- ---------- ---------- ---------------
 boostrap ornekleme   46.76     46.76      46.81         0.95      

 boostrap ornekleme   46.76     46.76      46.97         0.99      
-------------------------------------------------------------------

Table: % 95 ve % 99 Güven Aralığında 1000 Tekrarlı (Replikasyon) Boostrap Örnekleminde Pizza Fiyatlarının Medyan Değerleri

Orjinal örneklem ve bootstrap örnekleme sonuçlarının medyan üzerinden karşılaştırılması

birlesik=rbind(baztum, tumb1) %>% as_tibble() %>% mutate(aralik_genisligi=ustsinir-altsinir)

formattable(birlesik, align =rep("l",6), list(
  `model` = formatter("span", style = ~ style(color = "black",font.weight = "bold")), 
  `medyan`= color_bar("#00FF7F"),
  `altsinir`= color_bar("#00BFFF"),
  `ustsinir`= color_bar("#B0C4DE"),
  `aralik_genisligi`= color_bar("#FA8072")
))

#alternatif olarak dilerseniz aşağıdaki kodu da yazarak farklı formatta tablo alabilirsiniz.
rbind(baztum, tumb1) %>% as_tibble() %>% mutate(aralik_genisligi=ustsinir-altsinir) %>% #pander (caption="Karşılaştırmalı Medyan Sonuçları") 

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen karşılaştırmalı sonuçlar bir bütün olarak aşağıdaki tabloda verilmiştir. Elde edilen bulgulardan orjinal örneklemde medyan pizza fiyatlarının bootsrap örnekleme ile elde edilen arasındaki yüksek bir fark olmadığını göstermektedir. Şimdi aşağıdaki tablodan hareket ederek medyan değerleri üzerinden basitçe bias’i yani sapmayı ele alalım:

  • Orjinal örneklem ile bootstrap örneklem medyanları arasındaki sapmamız, yani bias=46,787-46764=0,023’e eşittir.
  • Biaste medyan değerleri üzerinden gidildiğinde çok düşük bir farklılaşma görülmektedir. Ancak farklılaşmayı biz daha çok güven aralıklarında görüyoruz. Burada tabloda aralik genişliği bize güven aralığının üst sınırı ile alt sınırının farkını vermektedir.

Bulgulardan da anlaşılacağı üzere sapmaların oldukça düşük olduğunu ortaya koymaktadır. Bu durum bize bootsrap örneklemenin oldukça yüksek bir doğrulukla orjinal örneklemdeki medyan değerlerini tahmin ettiğini göstermektedir.

b) Ortalama Değerler Üzerinden Bootstrap Örnekleme

Bootstrap örnekleme pizza veri setindeki pizza fiyatı üzerinden yapılmıştır. Bootstrap örnekleme de replikasyon (tekrar) sayısı 1000, her bir replikasyondaki örneklem büyüklüğümüz (sample size) ise 836’dır. Buna göre yeni durumda toplam gözlem sayımız ise 1000 x 836 =836000’dır.

Orjinal örneklem setinden % 95 ve 99 güven aralıklarında ortalama değerlerinin belirlenmesi

Pizza veri setinden tekrarsız basit tesadüfi örnekleme ile çekilen 836 gözlem (846-10=836, 10 gözlem eksik olduğu için veri setinden çıkarılmıştır) üzerinden pizza fiyatları (price) değişkeninden hareketle merkezi dağılım ölçülerinden biri olan ortalamalar hesaplanmıştır.

#% 95 güven aralığında medyan değerlerini hesaplama
ga1=0.95 # % 95 güven aralığını göstermektedir.
sonuc1=MeanCI(fiyat, na.rm=TRUE, conf.level =ga1)
ortalama=sonuc1[1]
altsinir=sonuc1[2]
ustsinir=sonuc1[3]
l=tibble(ortalama, altsinir, ustsinir, guven_araligi=ga1)

#% 99 güven aralığında medyan değerlerini hesaplama
ga2=0.99 # % 99 güven aralığını göstermektedir.
sonuc2=MeanCI(fiyat, na.rm=TRUE, conf.level =ga2)
ortalama=sonuc2[1]
altsinir=sonuc2[2]
ustsinir=sonuc2[3]
m=tibble(ortalama, altsinir, ustsinir, guven_araligi=ga2)

baz=rep("baz",2)
lm=rbind(l,m)
baztum=cbind(model=baz, lm)
baztum %>% pander(caption="Orjinal Örneklemde % 95 ve % 99 Güven Aralığında Pizza Fiyatlarının Ortalama Değerleri")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra orjinal örneklem veri setinden elde edilen % 95 ve 99 güven aralıklarında ortalama değerleri aşağıdaki tabloda verilmiştir.

--------------------------------------------------------
 model   ortalama   altsinir   ustsinir   guven_araligi 
------- ---------- ---------- ---------- ---------------
  baz      49.2      47.67      50.73         0.95      

  baz      49.2      47.19      51.22         0.99      
--------------------------------------------------------

Table: Orjinal Örneklemde % 95 ve % 99 Güven Aralığında Pizza Fiyatlarının Ortalama Değerleri

% 95 ve 99 güven aralığında bootstrap örneklemeyle ortalama değerlerin hesaplanması

options(scipen = 999)
set.seed(61) # aynı sonuçları alabilmeniz adına sabitlenmiştir.
bfiyat=fiyat %>% as_tibble() %>% rename(fiyat=value) %>%
generate(reps = 1000, type = "bootstrap")

#% 95 güven aralığında medyan değerlerini hesaplama
ga1=0.95 # % 95 güven aralığını göstermektedir.
sonuc1=MeanCI(bfiyat$fiyat, na.rm=TRUE, conf.level =ga1)
ortalama=sonuc1[1]
altsinir=sonuc1[2]
ustsinir=sonuc1[3]
lb=tibble(ortalama, altsinir, ustsinir, guven_araligi=ga1)

#% 99 güven aralığında medyan değerlerini hesaplama
ga2=0.99 # % 99 güven aralığını göstermektedir.
sonuc2=MeanCI(bfiyat$fiyat, na.rm=TRUE, conf.level =ga2)
ortalama=sonuc2[1]
altsinir=sonuc2[2]
ustsinir=sonuc2[3]
mb=tibble(ortalama, altsinir, ustsinir, guven_araligi=ga2)

boost=rep("boostrap ornekleme",2)
blm=rbind(lb,mb)
tumb1=cbind(model=boost, blm)
tumb1 %>% pander(caption="% 95 ve % 99 Güven Aralığında 1000 Tekrarlı (Replikasyon) Boostrap Örnekleminde Pizza Fiyatlarının Ortalama Değerleri")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen % 95 ve % 99 güven aralığında 1000 tekrarlı (replikasyon) boostrap örnekleminde pizza fiyatı ortalama değerleri aşağıdaki tabloda verilmiştir.

---------------------------------------------------------------------
       model          ortalama   altsinir   ustsinir   guven_araligi 
-------------------- ---------- ---------- ---------- ---------------
 boostrap ornekleme    49.18      49.14      49.23         0.95      

 boostrap ornekleme    49.18      49.12      49.25         0.99      
---------------------------------------------------------------------

Table: % 95 ve % 99 Güven Aralığında 1000 Tekrarlı (Replikasyon) Boostrap Örnekleminde Pizza Fiyatlarının Ortalama Değerleri

Orjinal örneklem ve bootstrap örnekleme sonuçlarının ortalama üzerinden karşılaştırılması

birlesik=rbind(baztum, tumb1) %>% as_tibble() %>% mutate(aralik_genisligi=ustsinir-altsinir)

formattable(birlesik, align =rep("l",6), list(
  `model` = formatter("span", style = ~ style(color = "black",font.weight = "bold")), 
  `ortalama`= color_bar("#00FF7F"),
  `altsinir`= color_bar("#00BFFF"),
  `ustsinir`= color_bar("#B0C4DE"),
  `aralik_genisligi`= color_bar("#FA8072")
))

#alternatif olarak dilerseniz aşağıdaki kodu da yazarak farklı formatta tablo alabilirsiniz.
rbind(baztum, tumb1) %>% as_tibble() %>% mutate(aralik_genisligi=ustsinir-altsinir) %>% #pander (caption="Karşılaştırmalı Ortalama Sonuçları") 

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen karşılaştırmalı sonuçlar bir bütün olarak aşağıdaki tabloda verilmiştir. Elde edilen bulgulardan orjinal örneklemde ortalama pizza fiyatlarının bootsrap örnekleme ile elde edilen arasındaki yüksek bir fark olmadığını göstermektedir. Şimdi aşağıdaki tablodan hareket ederek ortalamalar üzerinden basitçe bias’i yani sapmayı ele alalım:

  • Orjinal örneklem ile bootstrap örneklem ortalamaları arasındaki sapmamız, yani bias=49,20037-49,18349=0,01688’e eşittir.
  • Biaste ortalama değerleri üzerinden gidildiğinde çok düşük farklılaşma görülmektedir. Ancak farklılaşmayı biz daha çok güven aralıklarında görüyoruz. Burada tabloda aralik genişliği bize güven aralığının üst sınırı ile alt sınırının farkını vermektedir.

c) Tekrar (Replikasyon) Sayısına Göre Ortalama Değerler Üzerinden Bootstrap Örneklemelerin Karşılaştırılması

Burada replikasyon veya iterasyon sayısına göre ortalamalar üzerinden bootstrap örneklemeler karşılaştırılmıştır. Daha önce 1000 replikasyona göre ortalamalar karşılaştırılmıştı. Burada ise 10000 replikasyona ulaşıldığında sonuçların nasıl değiştiğini görelim.

Orjinal örneklem ve bootstrap örnekleme sonuçlarının farklı replikasyonlara göre ortalama üzerinden karşılaştırılması

# Bootstrap örnekleme fonksiyonunun oluşturulması
set.seed(61)# aynı sonuçları alabilmeniz adına sabitlenmiştir.
replikasyon <-10000 #bootstrap örneklemlerin sayısı (replikasyon sayısı)
bort <-rep(NA, replikasyon)
set.seed(10)
for(i in 1:replikasyon ){
bort [i]<-mean(sample(fiyat, replace = T)) 
}
bort 

bg=quantile(bort, c(0.025, 0.975)) # % 95 güven aralığı (CI)
bg1=quantile(bort, c(0.01, 0.99))  # % 99 güven aralığı (CI)
m=mean(bort) #ortalama
modeli="bootstrap ornekleme"
t=cbind(model=modeli, ortalama=m, altsinir=bg[1], ustsinir=bg[2])%>% as_tibble()%>% mutate(guven_araligi=0.95, replikasyon=10000)
b=cbind(model=modeli,ortalama=m, altsinir=bg1[1], ustsinir=bg1[2])%>% as_tibble()%>% mutate(guven_araligi=0.99, replikasyon=10000)
yeni=rbind(t,b)%>% mutate_at(vars(ortalama, altsinir, ustsinir), as.numeric) %>% mutate_if(is.numeric, round, 3)

birlesik=rbind(baztum, tumb1) %>% as_tibble() %>% mutate(replikasyon=1000)

modelyeni=rbind(birlesik, yeni)

bmodelyeni=rbind(cbind(birlesik[1:2,1:5],replikasyon=rep(0,2)),modelyeni[3:6,])%>% mutate_if(is.numeric, round, 3)

formattable(bmodelyeni, align =rep("l",6), list(
  `model` = formatter("span", style = ~ style(color = "black",font.weight = "bold")), 
  `ortalama`= color_bar("#00FF7F"),
  `altsinir`= color_bar("#00BFFF"),
  `ustsinir`= color_bar("#B0C4DE")
))

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen karşılaştırmalı sonuçlar bir bütün olarak aşağıdaki tabloda verilmiştir. Elde edilen bulgulardan orjinal örneklemde ortalama pizza fiyatlarının bootsrap örnekleme ile elde edilen arasındaki yüksek bir fark olmadığını göstermektedir. Şimdi aşağıdaki tablodan hareket ederek ortalamalar üzerinden basitçe bias’i yani sapmayı ele alalım:

  • 1000 replikasyonda orjinal örneklem ile bootstrap örneklem ortalamaları arasındaki sapmamız, yani bias=49,20037-49,18349=0,01688’e eşittir. 10000 replikasyonda ise orjinal örneklem ile bootstrap örneklem ortalamaları arasındaki sapmamız, yani bias=49,20037-49,220=-0,02’ye eşittir.
  • Biaste ortalama değerleri üzerinden gidildiğinde çok düşük farklılaşma olduğu görülmektedir.
Bu görselin boş bir alt özelliği var; dosya ismi: image-17.png

Farklı replikasyonlara göre bootstrap örneklem ortalamaların dağılım yapısının incelenmesi

set.seed(61)# aynı sonuçları alabilmeniz adına sabitlenmiştir.

#Replikasyon sayısı 1000 olan bootstrap örneklemlerin çekilmesi
c1=fiyat %>% as_tibble()%>% specify(response = value) %>%
    generate(reps = 1000, type = "bootstrap") %>% group_by(replicate) %>% summarise(ort=mean(value), ssapma=sd(value))#calculate(stat= "mean") %>% rename(ort=stat)

                                                          
b1=c1 %>% ggplot(mapping = aes(x = ort)) +
  geom_histogram(fill='red', color="grey")+
  theme(axis.text.x = element_text(face="bold", color="black", 
                           size=10),
          axis.text.y = element_text(face="bold", color="black", 
                           size=10),
         plot.caption = element_text(hjust = 0.5, face = "bold.italic"))+
  xlab("Ortalamalar") + ylab("Frekans")+ ggtitle(paste("Bootstrap Örneklem Ortalamalarının Dağılımı (n1=836, replikasyon=1000",",", "sd=", round(sd(c1$ort),3),")")) +
  theme(
  plot.title = element_text(color="black", size=12, face="bold", hjust = 0.5),
  axis.title.x = element_text(color="black", size=11, face="bold"),
  axis.title.y = element_text(color="black", size=11, face="bold"))

#Replikasyon sayısı 5000 olan bootstrap örneklemlerin çekilmesi
c2=fiyat %>% as_tibble()%>% specify(response = value) %>%
    generate(reps = 5000, type = "bootstrap")%>% group_by(replicate) %>% summarise(ort=mean(value), ssapma=sd(value))


b2=c2 %>% ggplot(mapping = aes(x = ort)) +
  geom_histogram(fill='green', color="grey")+
  theme(axis.text.x = element_text(face="bold", color="black", 
                           size=10),
          axis.text.y = element_text(face="bold", color="black", 
                           size=10),
         plot.caption = element_text(hjust = 0.5, face = "bold.italic"))+
  xlab("Ortalamalar") + ylab("Frekans")+ ggtitle(paste("Bootstrap Örneklem Ortalamalarının Dağılımı (n1=836, replikasyon=5000",",", "sd=", round(sd(c2$ort),3),")"))+
  theme(
  plot.title = element_text(color="black", size=12, face="bold", hjust = 0.5),
  axis.title.x = element_text(color="black", size=11, face="bold"),
  axis.title.y = element_text(color="black", size=11, face="bold"))


#Replikasyon sayısı 5000 olan bootstrap örneklemlerin çekilmesi
c3=fiyat %>% as_tibble()%>% specify(response = value) %>%
    generate(reps = 1000, type = "bootstrap")%>% group_by(replicate) %>% summarise(ort=mean(value), ssapma=sd(value))


b3=c3 %>% ggplot(mapping = aes(x = ort)) +
  geom_histogram(fill='brown', color="grey")+
  theme(axis.text.x = element_text(face="bold", color="black", 
                           size=10),
          axis.text.y = element_text(face="bold", color="black", 
                           size=10),
         plot.caption = element_text(hjust = 0.5, face = "bold.italic"))+
  xlab("Ortalamalar") + ylab("Frekans")+ ggtitle(paste("Bootstrap Örneklem Ortalamalarının Dağılımı (n1=836, replikasyon=10000",",", "sd=", round(sd(c3$ort),3),")"))+
  theme(
  plot.title = element_text(color="black", size=12, face="bold", hjust = 0.5),
  axis.title.x = element_text(color="black", size=11, face="bold"),
  axis.title.y = element_text(color="black", size=11, face="bold"))

#grafiklerin bir arada verilmesi
ggarrange(b1,b2,b3, ncol = 1)

Yukarıdaki R kod bloğunun çalıştırılmasından sonra fiyat (price) değişkenine göre replikasyon sayısı 1000, 5000 ve 10000 olan bootstrap örneklemlerinin ortalamalarının grafiği aşağıdaki şekilde verilmiştir. Bootstrap örneklem ortalamalarının dağılımına bakıldığında birbirlerine göre aşırı bir farklılık ortaya koymadığı görülmektedir. Zira biz bunu grafiklerdeki standart sapma (sd) değerlerinin birbirlerine benzerliğinden de anlıyoruz. Şekilde örneklem ortalamalarının dağılımlarının üçü de merkezi limit teoremi (central limit theorem) ve büyük sayı yasası (law of large numbers) gereğince normal dağılıma evrildiği görülmektedir. Ancak burada standart normal dağılımdan bahsedemeyiz. Standart normal dağılım, ortalaması 0, standart sapması ise 1 olan dağılımı ifade etmektedir.

Bulgular sapmaların oldukça düşük olduğunu ortaya koymaktadır. Bu durum bize bootstrap örneklemenin oldukça yüksek bir doğrulukla orjinal örneklemdeki ortalamaları tahmin ettiğini ve bu sapmaların replikasyonlara göre farklılaştığını göstermektedir.

Özetle yapılan bu uygulamalı çalışma ile özellikle veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunulması amaçlanmıştır.

Burada örnek uygulamalar üzerinden bootstrap örneklemeye giriş yapılmıştır. Zamanım olursa bootstrap örnekleme yöntemi ile analiz yöntemlerinin performansı ve duyarlılığı başta olmak üzere diğer çalışmalar üzerinde de çalışmalar yapılacaktır.

Faydalı olması ve farkındalık oluşturması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla…

Note: It can not be cited or copied without referencing.

Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.

Yararlanılan Kaynaklar

R’da Türk Alfabesi Karakterleri ile Tekrarlı ve Tekrarsız Şifre Üretimi Üzerine Vaka Çalışmaları (Case Studies on with Replacament and without Replacament Password Generation with Turkish Alphabet Characters in R)

Günümüzde ve hayatın pek çok alanında şifreler yaygın bir şekilde kullanılmaktadır. Güvenli girişi sağlamak ve kullanım izinlerine düzenleme getiren şifreler bankacılık, telefon operatörlerini içine alan telekom sektöründe, veri tabanı uygulamaları gibi adını sayamayacağımız birçok alanda yoğun bir şekilde kullanılmaktadır.

Şifre belirleme işlemi genellikle rastgele üretilen sayılardan oluştuğu gözlenmekle birlikte güvenlik kaygısından dolayı daha fazla kombinasyona ve haneye ihtiyaç duyulmaktadır. Artan dijitalleşme ve her geçen gün gelişen teknoloji sayesinde kullanılan bu şifreleri kırarak kişiler, şirketler ve kamu kurum veya kuruluşları tarafında güvenlik açığı ortaya çıkarmaktadır. Son dönemlerde ülkemize yapılan siber saldırıların yoğunluk kazanması da güvenli ve güçlü şifre oluşturulmasını zorunlu hale getirmiştir.

Şifre uygulamalarına bakıldığında genellikle ya sadece rakamlardan oluşmakta ya da daha güçlü bir şifre oluşturulması adına harf ve rakam kombinasyonlarından oluştuğu görülmektedir. Harf kombinasyonunda ise 26 harften oluşan İngiliz alfabesindeki harflerin yaygın bir şekilde kullanıldığı gözlenmektedir.

Bu çalışmada Cumhuriyetimizin 96. yıl anısına 7 haneli harf ve rakam kombinasyonlarından oluşan Türk alfabesi kullanılarak özgün şifre oluşturma uygulaması yapılmıştır. İstenirse aşağıda verilen R kod bloğu içerisindeki fonksiyonlarla çok daha fazla veya az haneli şifreler üretilebilir. Bu durum tamamen kullanıcının kararına ve ihtiyacına bağlıdır. Şifre kombinasyonunda Türk alfabesindeki harflere de yer verilmesinin nedeni hem çok daha güçlü şifre kombinasyonu oluşturulmasından ve hem de yerli olması amaçlanmasından kaynaklanmaktadır. Türk alfabesinin kullanılmasındaki bir diğer neden, 26 harften oluşan İngiliz alfabesinin aksine Türk alfabesinin 29 harften oluşuyor olmasıdır. Bu durum çok daha fazla kombinasyonda güvenli şifre oluşturulmasına imkan tanımaktadır.

Örnek uygulamada 7 haneli şifre oluşturmada kullanılan harf seti Tablo 1’de verilmiştir.

Tablo 1. Harf ve Rakamlar

Şifre oluşturma adımında rakam olarak belirlenen set ise 0’dan 9 (dahil)’a kadar olan rakamlardan oluşmaktadır.

Her bir haneye harflerin ve/veya rakamların atanmasında tekrarlı örneklem seçim tekniği (sampling technique with replacement) ve tekrarsız örneklem seçim tekniği (sampling technique without replacement) kullanılarak iki farklı 7 haneli şifre oluşturma uygulaması yapılmıştır.

İlk şifre oluşturma uygulaması tekrarlı örneklem seçim tekniği kullanılarak yapılmıştır. Örnek uygulamaya ilişkin R kod bloğu aşağıda verilmiştir.

Tekrarlı Şifre Uygulaması İçin R Kod Bloğu-1

# Gelişmiş ve esnek tablo (data frame) oluşturmak için.
library(tibble)

#Elde edilen sonucu sabitlemek, diğer bir deyişle kod bloğunun her çalıştırılmasında aynı sonucu almak için
set.seed(1923)

#Türk Alfabesinde 1'den 29'a kadar ID (sıra) numarası atayarak harfleri tablo formatında vermek için

Harf<-tibble(ID=1:29, Alfabe=c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z"))

X1<-sample(Harf$Alfabe, 1, replace = T)#Harf tablosundan Alfabe adlı değişken veri setinin elemanları içerisinden tekrarlı örneklem seçim tekniği kullanılarak harf seçimi yapmak için.

X2<-sample(0:9, size=1, replace= T)#0'dan 9 (dahil)'a  kadar olan rakam seti içerisinden tekrarlı örneklem seçim tekniği kullanılarak rakam seçmek için.

X3<-sample(Harf$Alfabe, 1, replace = T)#Harf tablosundan Alfabe adlı değişken veri setinin elemanları içerisinden tekrarlı örneklem seçimi yapmak için.

X4<-sample(0:9, size=1, replace= T)#0'dan (dahil)'a  kadar olan rakam seti içerisinden tekrarlı örneklem seçim tekniği kullanılarak rakam seçmek için.

X5<-sample(0:9, size=1, replace= T)#0'dan 9 (dahil)'a kadar olan rakam seti içerisinden tekrarlı örneklem seçim tekniği kullanılarak rakam seçmek için.

X6<-sample(0:9, size=1, replace= T)#0'dan 9 (dahil)'a kadar olan rakam seti içerisinden tekrarlı örneklem seçim tekniği kullanılarak rakam seçmek için.

X7<-sample(0:9, size=1, replace= T)#0'dan 9 (dahil)'a kadar olan rakam seti içerisinden tekrarlı örneklem seçim tekniği kullanılarak rakam seçmek için.

hane1<-sample(c(X1, X2, X3, X4, X5, X6, X7), 1, replace= T)

hane2<-sample(c(X1, X2, X3, X4, X5, X6, X7), 1, replace= T)

hane3<-sample(c(X1, X2, X3, X4, X5, X6, X7), 1, replace= T)

hane4<-sample(c(X1, X2, X3, X4, X5, X6, X7), 1, replace= T)

hane5<-sample(c(X1, X2, X3, X4, X5, X6, X7), 1, replace= T)

hane6<-sample(c(X1, X2, X3, X4, X5, X6, X7), 1, replace= T)

hane7<-sample(c(X1, X2, X3, X4, X5, X6, X7), 1, replace= T)

#Elde edilen şifrenin 7 haneli olarak birarada gözükmesi için

sifre<-paste0("Yedi Haneli Şifreniz:",hane1, hane2, hane3, hane4, hane5, hane6, hane7)

sifre

Yukarıdaki R kod bloğunun run (CTRL + ALT + I) edilmesiyle elde edilen şifre aşağıda verilmiştir.

Tekrarlı Şifre Uygulaması Kod Bloğu Sonucu-1 (Output-1)

"Yedi Haneli Şifreniz:990M981"

Yukarıdaki tekrarlı 7 haneli şifre oluşturma uygulamasına alternatif olarak hazırlanan diğer bir R kod bloğu, R’da fonksiyon (function) özelliği kullanılarak aşağıda verilmiştir.

Tekrarlı Şifre Uygulaması İçin R Kod Bloğu-2


#Elde edilen sonucu sabitlemek, diğer bir deyişle kod bloğunun her çalıştırılmasında aynı sonucu almak için

set.seed(96)

# Gelişmiş ve esnek tablo (data frame) oluşturmak için.
library(tibble)

#Görevleri yapmak üzere tanımlanan fonksiyon

tekrarli_sifre <- function(uzunluk, satir_sayisi){

  tablo<-cbind(1:satir_sayisi,matrix(ncol=0,nrow=satir_sayisi))

  rakam <- 0:9

  harf <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")#Türk Alfabesinde 1'den 29'a kadar ID (sıra) numarası atayarak harfleri tablo formatında vermek için

  birlesik <- c(rakam, harf)

  olasılık <- c(rep(10/39, 10), rep(29/39, 29))#rakamların ve harflerin popülasyon içindeki oranı: bu oranlar örneklem seçiminde olasılık (prob) değerlerinin belirlenmesi için yapılmıştır.
  sifre<-replicate(nrow(tablo),paste0(sample(birlesik, uzunluk, TRUE, prob = olasılık), collapse = ""))#örneklem seçim tekniği olarak (T=TRUE) tekrarlı olan alınmıştır.
  tablo<-tibble(Sıra=1:satir_sayisi, Şifreleriniz=sifre)#sıra numarası ile birlikte belirlenen şifreleri tablo formatında vermek için.
  return(tablo)
}
tekrarli_sifre(uzunluk = 7, satir_sayisi = 10)# tanımlanan fonksiyona göre 10 satırlık ve 7 haneli şifre oluşturulur.

Yukarıdaki R kod bloğunun run (CTRL + ALT + I) edilmesiyle elde edilen 10 adet şifre aşağıda verilmiştir.

Tekrarlı Şifre Uygulaması Kod Bloğu Sonucu-2 (Output-2)

Sıra  Şifreleriniz
1	Ğ32U7Z5			
2	NECVU3I			
3	IKINGMT			
4	GÜRLIR7			
5	5BGCZKH			
6	Ğ79ÖBÇS			
7	YYEGUVB			
8	JBUPCMY			
9	ZARLFUL			
10	51İDFŞH

İstenirse yukarıdaki kod bloğundaki fonksiyonla daha uzun (daha çok haneli) ve daha çok sayıda (satır olarak) şifre üretilebilir. Söz gelimi tekrarli_sifre(uzunluk = 10, satir_sayisi = 100) fonksiyonu yazılmış olursa 10 haneli 100 satırlık şifre oluşturulmuş olur. R kod bloğundaki set.seed()” fonksiyonu kaldırıldıktan sonra run (CTR + ALT + I) ederek her defasında yeni şifreler üretebilirsiniz.

İlk şifre oluşturma uygulaması tekrarlı örneklem seçim tekniği kullanılarak yukarıda yapılmıştı. Şimdi ise tekrarsız örneklem seçim tekniği kullanılarak 7 haneli şifre uygulaması yapılmıştır. Örnek uygulamaya ilişkin R kod bloğu aşağıda verilmiştir. Bir önceki kod bloğu içinde kullanılan fonksiyon ve onu oluşturan parametreler açıklandığından aşağıdaki kod bloğunda bu açıklamalara tekrar yer verilmemiştir.

Tekrarsız Şifre Uygulaması İçin R Kod Bloğu-3

set.seed(1923)
library(tibble)
tekrarsiz_sifre <- function(uzunluk, satir_sayisi){
  tablo<-cbind(1:satir_sayisi,matrix(ncol=0,nrow=satir_sayisi))
  rakam <- 0:9
  harf <- c("A","B", "C", "Ç", "D", "E","F","G", "Ğ", "H", "I", "İ", "J", "K", "L", "M", "N", "O", "Ö", "P", "R", "S", "Ş", "T", "U", "Ü", "V", "Y", "Z")
  birlesik <- c(rakam, harf)
  olasılık <- c(rep(10/39, 10), rep(29/39, 29))
  sifre<-replicate(nrow(tablo),paste0(sample(birlesik, uzunluk, FALSE, prob = olasılık), collapse = ""))
  tablo<-tibble(Sıra=1:satir_sayisi, Şifreleriniz=sifre)
  return(tablo)
}
tekrarsiz_sifre(uzunluk = 7, satir_sayisi = 10)

Yukarıdaki R kod bloğunun run (CTRL + ALT + I) edilmesiyle elde edilen tekrarsız 10 adet şifre aşağıda verilmiştir.

Tekrarsız Şifre Uygulaması Kod Bloğu Sonucu-3 (Output-3)

Sıra  Şifreleriniz
1	ÜRHŞP72			
2	7OÜÇLHG			
3	6MDĞZCE			
4	57İFÜTÖ			
5	26KCRNU			
6	AJÜPTFS			
7	UR3SDP8			
8	GJKCNFE			
9	TONADİS			
10	4LĞDYRP

İhtiyaç duyulması halinde yukarıdaki kod bloğundaki fonksiyonla daha uzun (daha çok haneli) ve daha çok sayıda (satır olarak) şifre üretilebilir. Söz gelimi tekrarsiz_sifre(uzunluk = 9, satir_sayisi = 50) fonksiyonu yazılmış olursa 9 haneli 50 satırlık tekrarsız şifre oluşturulmuş olur. R kod bloğundaki set.seed()” fonksiyonu kaldırıldıktan sonra run (CTR + ALT + I) ederek her defasında yeni şifreler üretebilirsiniz.

Özetle, şifre belirleme tekniği olarak iki farklı örneklem seçim tekniği kullanılarak 7 haneli şifre oluşturma uygulaması yapılmıştır. Ancak tekrarlı seçim tekniği kullanılarak üretilecek şifre adeti tekrarsız seçime göre çok daha fazla olması olasıdır. Ancak istenirse yukarıdaki örnekte de olduğu gibi tekrarsız seçim tekniği de kullanılarak şifre üretilebilir.

Yapılan çalışma yapacağınız çalışmalara rahatlıkla uyarlanabilme özelliği taşıdığından tek yapılması gereken şey, kod bloğu içerisindeki fonksiyonların ihtiyacınıza uygun (şifrenin kaç haneden oluşacağı) düzenlenmesidir.

Faydalı olması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla.

Not: Emeğe saygı adına, bu sitede yer alan çalışmanın başka bir ortamda paylaşılması halinde alındığı yer adının belirtilmesini rica ederim.

Note: For the sake of respect for labor, I kindly ask you to indicate the name of the place where the work on this site is shared in another environment.

Yararlanılan Kaynak

https://www.r-project.org/

https://tevfikbulut.com/2019/10/30/microsoft-excelde-turk-alfabesi-karakterleri-ile-sifre-uretimi-uzerine-bir-vaka-calismasi-a-case-study-on-password-generation-with-turkish-alphabet-characters-in-microsoft-excel/

https://www.listendata.com/

https://www.tutorialspoint.com/

Microsoft Excel’de Türk Alfabesi Karakterleri İle Şifre Üretimi Üzerine Bir Vaka Çalışması (A Case Study On Password Generation With Turkish Alphabet Characters In Microsoft Excel)

Günümüzde ve hayatın pek çok alanında şifreler yaygın bir şekilde kullanılmaktadır. Güvenli girişi sağlamak ve kullanım izinlerine düzenleme getiren şifreler bankacılık, telefon operatörlerini içine alan telekom sektöründe, veri tabanı uygulamaları gibi adını sayamayacağımız birçok alanda yoğun bir şekilde kullanılmaktadır.

Şifre belirleme işlemi genellikle rastgele üretilen sayılardan oluştuğu gözlenmekle birlikte güvenlik kaygısından dolayı daha fazla kombinasyona ve haneye ihtiyaç duyulmaktadır. Artan dijitalleşme ve her geçen gün gelişen teknoloji sayesinde kullanılan bu şifreleri kırarak kişiler, şirketler ve kamu kurum veya kuruluşları tarafında güvenlik açığı ortaya çıkarmaktadır. Son dönemlerde ülkemize yapılan siber saldırıların yoğunluk kazanması da güvenli ve güçlü şifre oluşturulmasını zorunlu hale getirmiştir.

Şifre uygulamalarına bakıldığında genellikle ya sadece rakamlardan oluşmakta ya da daha güçlü bir şifre oluşturulması adına harf ve rakam kombinasyonlarından oluştuğu görülmektedir. Harf kombinasyonunda ise 26 harften oluşan İngiliz alfabesindeki harflerin yaygın bir şekilde kullanıldığı gözlenmektedir.

Bu çalışmada Cumhuriyetimizin 96. yıl anısına 7 haneli harf ve rakam kombinasyonlarından oluşan Türk alfabesi kullanılarak özgün şifre oluşturma uygulaması yapılmıştır. İstenirse aşağıda verilen xlsx dökümanı indirildikten sonra içerisindeki fonksiyonlarla çok daha fazla veya az haneli şifreler üretilebilir. Bu durum tamamen kullanıcının kararına ve ihtiyacına bağlıdır. Şifre kombinasyonunda Türk alfabesindeki harflere de yer verilmesinin nedeni hem çok daha güçlü şifre kombinasyonu oluşturulmasından ve hem de yerli olması amaçlanmasından kaynaklanmaktadır. Türk alfabesinin kullanılmasındaki bir diğer neden, 26 harften oluşan İngiliz alfabesinin aksine Türk alfabesinin 29 harften oluşuyor olmasıdır. Bu durum çok daha fazla kombinasyonda güvenli şifre oluşturulmasına imkan tanımaktadır.

Örnek uygulamada 7 haneli şifre oluşturmada kullanılan harf seti Tablo 1’de verilmiştir.

Tablo 1. Harf ve Rakamlar

Şifre oluşturma adımında rakam olarak belirlenen set ise 0’dan 9 (dahil)’a kadar olan rakamlardan oluşmaktadır. Her bir haneye harflerin ve rakamların atanmasında tekrarlı örneklem seçim tekniği (sampling technique with replacement) kullanılmıştır.

Örnek uygulama Microsoft Excel 2016 programı kullanılarak olabildiğince yalın bir dille gösterilmeye çalışılmıştır. Tekrarlı örneklem seçiminde =RASTGELEARADA() fonksiyonu, her bir haneye ait sonuçların 7 hane olacak şekilde gösterimi için ise =BİRLEŞTİR() fonksiyonu kullanılmıştır. Hanelere harf atamasında ise =DÜŞEYARA(RASTGELEARADA()) iç içe geçen fonksiyonlarından yararlanılmıştır. Birden fazla Tablo alanında =RASTGELEARADA() fonksiyonu kullanılarak oluşturulan şifre çok daha güçlü ve güvenli hale getirilmiştir. Şifre oluşturma adımları sırasıyla şöyle özetlenebilir:

1. Adım (First Step):

Harflerin seçimi: =DÜŞEYARA() fonksiyonu kullanılarak =RASTGELEARADA() fonksiyonundan 0’dan 9’a kadar tekrarlı ve tesadüfi olarak üretilen rakamların bulunduğu satıra denk gelen Tablo 1’deki harflerin bulunduğu eleman kümesi içerisinden harfler seçilmiştir. Rakamların seçimi: =RASTGELEARADA() fonksiyonu kullanılarak 0’dan 9’a kadar olan rakam setinden tekrarlı ve tesadüfi olarak rakamlar üretilmiştir. Harf ve rakam seçimine ilişkin işlemler fonksiyonları ile birlikte Tablo 2’de gösterilmiştir. İndireceğiniz xlsx uzantılı excel kitabında Tablo 2’deki sonuçları görmeyebilirsiniz. Bunun nedeni, excel sayfasındaki =RASTGELEARADA() fonksiyonunun özelliğinden dolayı her defasında farklı sonuçların alınmasıdır.

Tablo 2. Seçilen Harf ve Rakamlar

2. Adım (Second Step):

Şifre oluşturma işlemi =BİRLEŞTİR() fonksiyonu kullanılarak tesadüfi üretilen harf ve rakamlarla 1. adımın sonunda tamamlanabilirdi ancak tamamlanmadı. Çünkü, 1. adımda üretilen şifre güçlü olmakla birlikte çok daha güçlü olması adına 2. adımda harf ve rakamların bulunduğu hanelerin yerleri de tesadüfi bir şekilde değiştirilmiştir. Diğer bir deyişle, =DÜŞEYARA(RASTGELEARADA(1;6);D7:E13;2;YANLIŞ) iç içe geçmiş fonksiyonları kullanılarak harf ve rakamların bulunduğu hanelerin yerleri de tesadüfi bir şekilde değiştirilmiş ve 1. haneden başlayarak 7. haneye kadar harf veya rakam atanmıştır. Son olarak =BİRLEŞTİR(“Şifreniz:”; ” “;G7;H7;I7;J7;K7;L7;M7) fonksiyonu kullanılarak hanelere adanan rakam ve harfler birleştirilmiştir. Ede edilen sonuçlar Tablo 3’te sunulmuştur. İndireceğiniz xlsx uzantılı excel kitabında Tablo 3’deki sonuçları görmeyebilirsiniz. Bunun nedeni, excel sayfasındaki =RASTGELEARADA() fonksiyonunun özelliğinden dolayı her defasında farklı sonuçların alınmasıdır.

Tablo 3. Hanelere Göre Üretilen Rakamlar veya Harflerden Oluşturulan Şifre

Şifre oluşturma adımları ile birlikte elde edilen uygulama sonuçlarını aşağıdaki linkten indirebilirsiniz.

You can download the application results obtained with the steps to create a password from the link below.

Yukarıdaki excel kitabında F9 tuşuna basılı tutarak her defasında yeni şifreler üretebilirsiniz.

Şifre seçim tekniği olarak tekrarlı seçim tekniği kullanılarak üretilecek şifre adeti tekrarsız seçime göre çok daha fazla olması sağlanmıştır. Ancak istenirse tekrarsız seçim tekniği de kullanılarak şifre üretilebilir.

Yapılan çalışma yapacağınız çalışmalara rahatlıkla uyarlanabilme özelliği taşıdığından tek yapılması gereken sütun veya satır sayısını artırmak ve azaltmak.

Faydalı olması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla.

Not: Emeğe saygı adına, bu sitede yer alan çalışmanın başka bir ortamda paylaşılması halinde alındığı yer adının belirtilmesini rica ederim.

Note: For the sake of respect for labor, I kindly ask you to indicate the name of the place where the work on this site is shared in another environment.

Yararlanılan Kaynak

Microsoft Excel 2016

R Programlama Dilinde Şifre Üretimi Üzerine Bir Vaka Çalışması (A Case Study On Password Generation In R Programming Language)

Günümüzde ve hayatın pek çok alanında şifreler yaygın bir şekilde kullanılmaktadır. Güvenli girişi sağlamak ve kullanım izinlerine düzenleme getiren şifreler bankacılık, telefon operatörlerini içine alan telekom sektöründe, veri tabanı uygulamaları gibi adını sayamayacağımız birçok alanda yoğun bir şekilde kullanılmaktadır.

Şifre belirleme işlemi genellikle rastgele üretilen sayılardan oluştuğu gözlenmekle birlikte güvenlik kaygısından dolayı daha fazla kombinasyona ve haneye ihtiyaç duyulmaktadır. Artan dijitalleşme ve her geçen gün gelişen teknoloji sayesinde kullanılan bu şifreleri kırarak kişiler, şirketler ve kamu kurum veya kuruluşları tarafında güvenlik açığı ortaya çıkarmaktadır.

Bu çalışmada 6 haneli harf ve rakam kombinasyonlarından oluşan özgün şifre oluşturma uygulaması yapılacaktır. Şifre kombinasyonunda harflere de yer verilmesinin nedeni olabildiğince güçlü şifre kombinasyonu oluşturulmak istenmesinden kaynaklanmaktadır. 6 haneli şifre üretilmesindeki sebep, yaygın kullanım alanına sahip olmasıdır. İstenirse çok daha fazla veya az haneli şifreler üretilebilir. Bu durum tamamen kullanıcının kararına ve ihtiyacına bağlıdır.

Örnek uygulamada 6 haneli şifre oluşturmada harf ve rakam seti kullanılmıştır.

Rakam olarak belirlen set, 0’dan 9 (dahil)’a kadar olan rakamlardan oluşmaktadır. Harfler ise 26 harfli ingiliz alfabesi harflerinden oluşmaktadır. Her bir haneye harflerin ve rakamların atanmasında tekrarlı örneklem seçim tekniği (sampling technique with replacement) kullanılmıştır.

Örnek uygulama kapsamında ilk olarak soldan sağa 6 haneli şifre oluşturulmuş olup, 1 nolu kod bloğunda kullanılan fonksiyonlara yer verilmiştir.

1 Nolu R Kod Bloğu (R Code Block 1)

#SOLDAN SAĞA DOĞRU 6 HANELİ ŞİFRE OLUŞTURMA
x1<-sample(0:9, size=1, replace=F)
x2<-sample(LETTERS, size=1, replace=F)
X3<-sample(0:9, size=1, replace=F)
x4<-sample(LETTERS, size=1, replace=F)
x5<-sample(0:9, size=1, replace=F)
x6<-sample(LETTERS, size=1, replace=F)

head(paste0("şifreniz"," ", x1, x2, x3, x4,x5,x6), 1)

1 nolu kod bloğunun çalıştırılması (run) ile elde edilen sonuç aşağıda verilmiştir.

1 Nolu R Kod Bloğu: Sonuç (R Code Block 1: Output )

[1] "şifreniz 5U1K4W"

Sağdan sola doğru 6 haneli şifre oluşturulmuş olup, 2 nolu kod bloğunda kullanılan fonksiyonlara yer verilmiştir.

2 Nolu R Kod Bloğu (R Code Block 2)

#SAĞDAN SOLA DOĞRU 6 HANELİ ŞİFRE OLUŞTURMA
x1<-sample(0:9, size=1, replace=F)
x2<-sample(LETTERS, size=1, replace=F)
X3<-sample(0:9, size=1, replace=F)
x4<-sample(LETTERS, size=1, replace=F)
x5<-sample(0:9, size=1, replace=F)
x6<-sample(LETTERS, size=1, replace=F)
head(paste("şifreniz"," ",x6, x5, x4, x3, x2, x1), 1)

2 nolu kod bloğunun çalıştırılması (run) ile elde edilen sonuç aşağıda verilmiştir.

2 Nolu R Kod Bloğu: Sonuç (R Code Block 2: Output )

[1] "şifreniz   F 3 D 1 Q 0"

Ortadan sağa doğru 6 haneli şifre oluşturulmuş olup, 3 nolu kod bloğunda kullanılan fonksiyonlara yer verilmiştir.

3 Nolu R Kod Bloğu (R Code Block 3)

#ORTADAN SAĞA DOĞRU 6 HANELİ ŞİFRE OLUŞTURMA
x1<-sample(0:9, size=1, replace=F)
x2<-sample(LETTERS, size=1, replace=F)
X3<-sample(0:9, size=1, replace=F)
x4<-sample(LETTERS, size=1, replace=F)
x5<-sample(0:9, size=1, replace=F)
x6<-sample(LETTERS, size=1, replace=F)

head(paste0("şifreniz"," ", x4, x5, x6, x1,x2,x3), 1)

3 nolu kod bloğunun çalıştırılması (run) ile elde edilen sonuç aşağıda verilmiştir.

3 Nolu R Kod Bloğu: Sonuç (R Code Block 3: Output )

[1] "şifreniz F0R0K1"

Ortadan sola doğru 6 haneli şifre oluşturulmuş olup, 4 nolu kod bloğunda kullanılan fonksiyonlara yer verilmiştir.

4 Nolu R Kod Bloğu (R Code Block 4)

#ORTADAN SOLA DOĞRU 6 HANELİ ŞİFRE OLUŞTURMA
x1<-sample(0:9, size=1, replace=F)
x2<-sample(LETTERS, size=1, replace=F)
X3<-sample(0:9, size=1, replace=F)
x4<-sample(LETTERS, size=1, replace=F)
x5<-sample(0:9, size=1, replace=F)
x6<-sample(LETTERS, size=1, replace=F)
head(paste0("şifreniz"," ", x3, x2, x1, x6,x5,x4), 1)

4 nolu kod bloğunun çalıştırılması (run) ile elde edilen sonuç aşağıda verilmiştir.

4 Nolu R Kod Bloğu: Sonuç (R Code Block 4: Output )

[1] "şifreniz 1C2V7W"

Yukarıdaki R kod blokları run edilerek her defasında yeni şifreler üretebilirsiniz.

Şifre seçim tekniği olarak tekrarlı seçim tekniği kullanılarak üretilecek şifre adeti tekrarsız seçime göre çok daha fazla olması sağlanmıştır. Ancak istenirse tekrarsız seçim tekniği de kullanılarak şifre üretilebilir.

Yapılan çalışma yapacağınız çalışmalara rahatlıkla uyarlanabilme özelliği taşıdığından tek yapılması gereken sütun veya satır sayısını artırmak ve azaltmak.

Faydalı olması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla.

Not: Emeğe saygı adına, bu sitede yer alan çalışmanın başka bir ortamda paylaşılması halinde alındığı yer adının belirtilmesini rica ederim.

Note: For the sake of respect for labor, I kindly ask you to indicate the name of the place where the work on this site is shared in another environment.

Yararlanılan Kaynaklar

https://www.r-project.org/

Microsoft Excel’de Şifre Üretimi Üzerine Bir Vaka Çalışması (A Case Study On Password Generation In Microsoft Excel)

Günümüzde ve hayatın pek çok alanında şifreler yaygın bir şekilde kullanılmaktadır. Güvenli girişi sağlamak ve kullanım izinlerine düzenleme getiren şifreler bankacılık, telefon operatörlerini içine alan telekom sektöründe, veri tabanı uygulamaları gibi adını sayamayacağımız birçok alanda yoğun bir şekilde kullanılmaktadır.

Şifre belirleme işlemi genellikle rastgele üretilen sayılardan oluştuğu gözlenmekle birlikte güvenlik kaygısından dolayı daha fazla kombinasyona ve haneye ihtiyaç duyulmaktadır. Artan dijitalleşme ve her geçen gün gelişen teknoloji sayesinde kullanılan bu şifreleri kırarak kişiler, şirketler ve kamu kurum veya kuruluşları tarafında güvenlik açığı ortaya çıkarmaktadır.

Bu çalışmada 6 haneli harf ve rakam kombinasyonlarından oluşan özgün şifre oluşturma uygulaması yapılacaktır. Şifre kombinasyonunda harflere de yer verilmesinin nedeni olabildiğince güçlü şifre kombinasyonu oluşturulmak istenmesinden kaynaklanmaktadır. 6 haneli şifre üretilmesindeki sebep, yaygın kullanım alanına sahip olmasıdır. İstenirse xlsx dökümanı içerisindeki fonksiyonlarla çok daha fazla veya az haneli şifreler üretilebilir. Bu durum tamamen kullanıcının kararına ve ihtiyacına bağlıdır.

Örnek uygulamada 6 haneli şifre oluşturmada kullanılacak harf ve rakam seti Tablo 1’de verilmiştir.

Tablo 1. Harf ve Rakamlar

Tablo 1’de rakam olarak belirlen set, 0’dan 9 (dahil)’a kadar olan rakamlardan oluşmaktadır. Harfler ise 26 harfli ingiliz alfabesi harflerinden oluşmaktadır. Her bir haneye harflerin ve rakamların atanmasında tekrarlı örneklem seçim tekniği (sampling technique with replacement) kullanılmıştır.

Örnek uygulama Microsoft Excel 2016 programı kullanılarak olabildiğince yalın bir dille gösterilmeye çalışılmıştır. Tekrarlı örneklem seçiminde =RASTGELEARADA() fonksiyonu, her bir haneye ait sonuçların 6 hane olacak şekilde gösterimi için ise =BİRLEŞTİR() fonksiyonu kullanılmıştır. Hanelere harf atamasında ise =DAMGA(RASTGELEARADA()) iç içe geçen fonksiyonlarından yararlanılmıştır. =DAMGA(RASTGELEARADA(65;90)) fonksiyonlarında =RASTGELEARADA(65;90) ifadesi ingiliz alfabesinde 26 harf içerisinden tesadüfi bir şekilde üretilecek harfi, dışardaki =DAMGA() fonksiyonu ise tesadüfi bir şekilde getirilecek bu harfi ilgili hücreye yazdırmak için kullanılır. Örnek olması adına yapılan şifre üretme işlemine ait bir ekran görüntüsü aşağıda verilmiştir.

Elde edilen örnek uygulama sonuçlarını aşağıdaki linkten xlsx uzantılı olarak indirebilirsiniz.

Yukarıdaki excel dokümanında F9 tuşuna basılı tutarak her defasında yeni şifreler üretebilirsiniz.

Şifre seçim tekniği olarak tekrarlı seçim tekniği kullanılarak üretilecek şifre adeti tekrarsız seçime göre çok daha fazla olması sağlanmıştır. Ancak istenirse tekrarsız seçim tekniği de kullanılarak şifre üretilebilir.

Yapılan çalışma yapacağınız çalışmalara rahatlıkla uyarlanabilme özelliği taşıdığından tek yapılması gereken sütun veya satır sayısını artırmak ve azaltmak.

Faydalı olması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla.

Not: Emeğe saygı adına, burda yapılan çalışmanın başka bir mecrada ya da ortamda paylaşılması halinde alındığı yer adının belirtilmesini rica ederim.

Note: In the name of respect for labor, I would kindly request that the name of the place where this work is taken if the work done on this web site is shared in another medium or environment.

Yararlanılan Kaynak

Microsoft Excel 2016

R ve Python’da Tekrarlı Basit Tesadüfi Örnekleme Üzerine Bir Vaka Çalışması: A Case Study on Simple Random Sampling (SRS) with Replacement in R and Python

Basit tesadüfi örnekleme, popülasyondaki birimlerinden örnekleme seçilme olasılığı bilinen ve seçilme olasılığı sıfır olmayan örnekleme türüdür. Bu örnekleme türü aynı zamanda olasılıklı örnekleme tekniklerinden biri olup, popülasyon hakkında çıkarımsal (inferential) istatistikler ortaya koymaya ve örneklemden elde edilen bulguların hedef popülasyona genellebilmesine olanak tanır.

Basit tesadüfi örnekleme, tekrarlı (popülasyondaki birimlerin eşit ve birden fazla seçilme olasılığı) ve varsayımsal bir örnek üzerinden uygulamalı olarak gösterilecektir. Tekrarlı seçilme olasılığı, topların olduğu torbadan seçilmiş bir topun tekrar torbanın içine atılarak tekrar seçilme olasılığının tanındığı bir olasılık tekniği olarak ele alınabilir. Benzer işlem burada örneklem seçiminde de yapılacaktır. Bu kapsamda Microsoft Excel kullanılacaktır. Aşağıdaki excel dokümanını ihtiyacınıza uygun uyarlayarak kolaylıkla uygulayabilirsiniz.

Örnek Olay (Example)

Popülasyon büyüklüğü (N) 850 firma arasından 120 firma (n: örneklem büyüklüğü) tekrarlı basit tesadüfi örnekleme yapılarak örnekleme seçilecektir. Daha sonra örnekleme seçilen bu firmalar üzerinde araştırma yapılacaktır. Bir kez seçilmiş firmalara 1. soru kağıdı, birden fazla seçilmiş firmalara cevaplarının tutarlılığını ölçümlemek için belirli zaman aralıklarıyla 1. soru kağıdı ile birlikte 2. ve 3. soru kağıtları firmaların cevaplaması için gönderilecektir.

Not 1: Örneklem seçimine geçmeden önce elde edilen firma listesinin mükerrer kayıtlardan arındırılması (firmaların benzersiz olması) ve her bir firmaya küçükten büyüğe doğru numara ataması yapılması gerekmektedir.

Not 2: Eğer tabakalı örnekleme yapılacaksa her bir tabaka için örneklem büyüklüğü belirlenmesi gerekir ve her bir tabaka için ayrı ayrı tekrarsız basit tesadüfi örnekleme yapılır. Eğer örneklemde tabaka yoksa 120 firma tekrarsız olarak seçilmesi yeterli olacaktır.

Örnek olayın çözümüne ilişkin ilk uygulama, R programlama dili kullanılarak yapılacaktır.

Çözüm 1: R Kod Bloğu (Solution 1)

#Aşağıda tamsayı bileşenli "sample" fonksiyonu kullanılmıştır. Bunun nedeni Firma sayısının tamsayı olmasıdır. Buna göre firma sayısı 850 olup, 1'den 850'ye kadar numaralandırılmıştır. Fonksiyon içindeki 120, örneklem büyüklüğü (sample size)'dür. Fonksiyon içerisindeki replace= TRUE ise örneklemin tekrarlı olacağı, diğer bir deyişle popülasyondaki firmalara birden fazla seçilme şansı verileceği anlamına gelir. İlaveden sort fonksiyonu ilave edilerek seçilen firmaların küçükten büyüğe doğru sıralanması sağlanmıştır. matrix fonksiyonu ise elde edilen firma numaralarının matris olarak 12 satır ve 10 sütun düzeninde verileceğini gösterir. İlk satırdaki set.seed (sabitleme) fonksiyonu ise her defasında örnekleme seçilen firmaların aynı kalacağı anlamına gelir. Bu fonksiyon duruma göre kullanılabilir de kullanılmayabilir de. Tamamen karar vericiye bağlıdır.

set.seed(123)
orneklem<- matrix(sort(sample.int(850, 120, replace=TRUE)), 12, 10)
orneklem

Çözüm 1‘e ait R kod bloğunun run edilmesiyle elde edilen sonuç aşağıda yer almaktadır.

        [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1  109  188  279  353  411  518  603  689   767
 [2,]   21  112  197  283  355  416  521  604  691   778
 [3,]   36  118  199  292  370  435  535  613  693   796
 [4,]   39  121  208  300  374  449  545  641  730   800
 [5,]   39  122  210  314  376  463  556  642  751   806
 [6,]   52  126  227  319  382  467  558  645  754   811
 [7,]   80  126  234  323  386  469  559  665  757   812
 [8,]   81  130  245  327  389  477  566  670  757   812
 [9,]   88  149  246  344  397  487  568  671  759   814
[10,]   88  160  257  348  397  498  576  676  760   819
[11,]   95  176  271  350  405  506  588  677  761   838
[12,]  104  184  273  352  407  510  589  680  765   846

Örnek olayın Pyhton programlama dili kullanılarak üretilen çözümü ise aşağıdaki gibi olacaktır.

Çözüm 2: Python Kod Bloğu (Solution 2)

#Örneklemden tesadüfi ve tekrarlı olanı çağrılır.
from random import sample
#Aşağıdaki random.seed fonksiyonu ise her defasında örnekleme seçilen firmaların aynı kalacağı anlamına gelir. Bu fonksiyon duruma göre kullanılabilir de kullanılmayabilir de. Bu durum, tamamen karar vericiye bağlıdır.
import random
random.seed(123)
#Populasyon aralığı belirlenir (1'den 850'ye kadar olan firmalar) 
Populasyon = range(1,851)
#Popülasyondan örnekleme seçilen firmalar belirlenir.
print("Tekrarlı Basit Tesadüfi Örnekleme", random.choices(Populasyon, k=120))

Çözüm 2‘ye ait Python kod bloğunun run edilmesiyle elde edilen sonuç aşağıda yer almaktadır.

Tekrarlı Basit Tesadüfi Örnekleme [45, 75, 347, 92, 767, 33, 456, 283, 725, 136, 287, 284, 209, 2, 371, 75, 508, 60, 269, 382, 770, 79, 121, 672, 19, 775, 488, 226, 713, 654, 292, 682, 176, 518, 449, 688, 268, 339, 654, 436, 583, 543, 567, 757, 414, 569, 319, 28, 642, 155, 698, 777, 560, 145, 287, 333, 63, 389, 488, 286, 161, 75, 535, 11, 300, 195, 453, 616, 773, 543, 844, 820, 536, 199, 412, 151, 844, 378, 639, 38, 115, 165, 218, 300, 232, 370, 358, 93, 54, 302, 76, 369, 8, 456, 63, 591, 344, 838, 224, 402, 639, 285, 297, 544, 825, 752, 357, 611, 578, 317, 200, 67, 748, 49, 441, 457, 125, 558, 779, 660]

Sonuç olarak, yukarıda çözüm 1 veya çözüm 2’ye göre ortaya konulan çıktıdan (output) numaralara karşılık gelen firmalarla araştırmaya başlanır.

Faydalı olması dileğiyle.

Saygılarımla.

Not: Emeğe saygı adına, burda yapılan çalışmanın başka bir mecrada ya da ortamda paylaşılması halinde alındığı yer adının belirtilmesini rica ederim.

Note: In the name of respect for labor, I would kindly request that the name of the place where this work is taken if the work done on this web site is shared in another medium or environment.

Yararlanılan Kaynaklar

https://www.r-project.org/

https://www.python.org/

https://colab.research.google.com (Python)

https://rstudio.cloud/

Microsoft Excel’de Tekrarlı Basit Tesadüfi Örnekleme Üzerine Bir Vaka Çalışması: A Case Study on Simple Random Sampling (SRS) with Replacement in Microsoft Excel

Basit tesadüfi örnekleme, popülasyondaki birimlerinden örnekleme seçilme olasılığı bilinen ve seçilme olasılığı sıfır olmayan örnekleme türüdür. Bu örnekleme türü aynı zamanda olasılıklı örnekleme tekniklerinden biri olup, popülasyon hakkında çıkarımsal (inferential) istatistikler ortaya koymaya ve örneklemden elde edilen bulguların hedef popülasyona genellebilmesine olanak tanır.

Basit tesadüfi örnekleme, tekrarlı (popülasyondaki birimlerin eşit ve birden fazla seçilme olasılığı) ve varsayımsal bir örnek üzerinden uygulamalı olarak gösterilecektir. Tekrarlı seçilme olasılığı, topların olduğu torbadan seçilmiş bir topun tekrar torbanın içine atılarak tekrar seçilme olasılığının tanındığı bir olasılık tekniği olarak ele alınabilir. Benzer işlem burada örneklem seçiminde de yapılacaktır. Bu kapsamda Microsoft Excel kullanılacaktır. Aşağıdaki excel dokümanını ihtiyacınıza uygun uyarlayarak kolaylıkla uygulayabilirsiniz.

Örnek Olay (Example)

Popülasyon büyüklüğü (N) 850 firma arasından 120 firma (n: örneklem büyüklüğü) tekrarlı basit tesadüfi örnekleme yapılarak örnekleme seçilecektir. Daha sonra örnekleme seçilen bu firmalar üzerinde araştırma yapılacaktır. Bir kez seçilmiş firmalara 1. soru kağıdı, birden fazla seçilmiş firmalara cevaplarının tutarlılığını ölçümlemek için belirli zaman aralıklarıyla 1. soru kağıdı ile birlikte 2. ve 3. soru kağıtları cevaplaması için gönderilecektir.

Not 1: Örneklem seçimine geçmeden önce elde edilen firma listesinin mükerrer kayıtlardan arındırılması (firmaların benzersiz olması) ve her bir firmaya küçükten büyüğe doğru numara ataması yapılması gerekmektedir.

Not 2: Eğer tabakalı örnekleme yapılacaksa her bir tabaka için örneklem büyüklüğü belirlenmesi gerekir ve her bir tabaka için ayrı ayrı tekrarsız basit tesadüfi örnekleme yapılır. Eğer örneklemde tabaka yoksa 120 firma tekrarlı olarak seçilmesi yeterli olacaktır.

Örnek olayın çözümüne aşağıdaki linkte xlsx uzantılı Microsoft Excel dokümanını indirerek ulaşabilirsiniz.

İndirmek için tıklayınız: Tekrarlı Basit Tesadüfi Örneklem Seçimi (SRS With Replacement)

Sonuç olarak, yukarıda Microsft Excel’de ortaya konulan sonuçlara göre seçilmiş olan firmalarla araştırmaya başlanır.

Faydalı olması dileğiyle.

Saygılarımla.

Not: Emeğe saygı adına, burda yapılan çalışmanın başka bir mecrada ya da ortamda paylaşılması halinde alındığı yer adının belirtilmesini rica ederim.

Note: In the name of respect for labor, I would kindly request that the name of the place where this work is taken if the work done on this web site is shared in another medium or environment.

Yararlanılan Kaynak

Microsoft Office 2016