R Programlama Diliyle Sistematik Örnekleme Üzerine Bir Vaka Çalışması: A Case Study on Systematic Sampling with R Programming Language

Giriş

Daha önce basit tesadüfi örnekleme (simple random sampling) üzerine burada çalışmalar yapılmıştı. İlgilenecekler için aşağıda yararlanılan kaynaklar kısmında bu çalışmaların linklerine yer verilmiştir. Bu çalışmada ise örnek bir uygulama üzerinden ve olabildiğince yalın bir dille sistematik örnekleme yapılacak ve R programlama dili kullanılacaktır. Ancak R programlama dili bilmeyenler için Microsoft Excel kullanarak sistematik örnekleme üzerine yaptığım çalışmayı aşağı linkten inceleyebilirler.

Microsoft Excel’de Sistematik Örnekleme Üzerine Bir Vaka Çalışması: A Case Study on Systematic Sampling in Microsoft Excel

Burada unutulmaması gereken en önemli husus bu ve buna benzer çalışmaların hangi platform veya hangi programlama diliyle yapıldığı değildir. Yapılan işin felsefesini öğrenmek hepsinden önemlidir. Microsoft Excel veya programlama dilleri bu noktada sadece birer araçtır.

Sistematik örnekleme, 1’den N’e kadar olan popülasyon birimlerinden ilk seçimin tesadüfi bir şekilde seçilmesinden sonra örneklem genişliği (k=N/n)’ne denk gelen popülasyon birimlerinin seçilmesidir. Basit tesadüfi örneklemeye göre daha kolay olan ve ona alternatif olarak kullanılan bu yöntem olasılıklı örneklem yöntemlerinden biridir. Olasılıklı örnekleme yöntemleri popülasyona ait çıkarımlar (inferences) açısından son derece önemlidir. Diğer bir deyişle, eğer örneklem çekilen popülasyon hakkında çıkarımlarda bulunmak isteniyorsa mutlaka olasılıklı örneklem yöntemlerinden biri veya bir kaçı kullanılmak zorundadır. Aslında bu yönteme sistematik tesadüfi örnekleme (systematic random sampling) de diyebiliriz. Bunun nedeni örneklem seçimi yapılan popülasyondan ilk (1.) seçimin tesadüfi bir şekilde belirlenmesidir. Genel olarak sistematik örneklemede örneklem birimlerinin seçiminin nasıl olduğuna ilişkin hazırlamış olduğum diyagram Şekil 1’de yer verilmiştir.

Şekil 1: Sistematik Örneklem Seçimi

Şekil 1’de örnekleme seçilen ilk örneklem birimi (sampling unit)’ne, ingilizce ifadeyle random start (RS) diyoruz. Sistematik örnekleme adımları ise Şekil 2’de şöyle özetlenebilir:

Şekil 2: Sistematik Örnekleme Adımları

Şekil 2’ye göre sistematik örnekleme adımlarını sırasıyla ele alalım:

  1. N popülasyon büyüklüğünü, n ise örneklem büyüklüğünü göstersin. Bu iki büyüklüğü kullanarak ilk olarak aralık genişliğini hesaplayalım. Aralık genişliğini k olarak gösterelim. k=N/n olmak üzere popülasyon büyüklüğünün örneklem büyüklüğüne oranını ifade etmektedir. Eşitliğinin çarpmaya göre tersi ise bize örneklem katsayısı dediğimiz sampling fraction (f=n/N)’i verir.
  2. 1 ile k arasında tesadüfi bir tamsayı belirlenir. Belirlenen bu sayı (RS)’ya denk gelen popülasyon birimi ilk örneklem birimini oluşturur.
  3. İlk örneklem biriminden sonra belirlenen örneklem büyüklüğüne ulaşıncaya kadar aşağıdaki işlemler yapılarak örneklem seçimi tamamlanır.
    1. İkinci örneklem birimi RS + k
    2. Üçüncü örneklem birimi için RS +2k
    3. Dörtüncü örneklem birimi için RS +3k
    4. Son örneklem birimi için ise RS + (n-1) x k

Uygulamada kullanılan popülasyon veri seti beden kitle endeksi (BKİ) değerlerini içeren ve 1000 (N) gözlemden oluşan sentetik veri setidir. Olasılıklı örneklem yöntemlerinden basit tekrarlı tesadüfi örnekleme yöntemiyle 7 ve 50 aralığında BKİ değerleri üretilmiştir. Uygulamada kullanılan veri setinin linki aşağıda verilmiş olup, buradan indirebilirsiniz.

Veri setini de verdikten sonra sırasıyla R’da yüklenmesi gereken kütüphaneleri verelim.

Yüklecek Kütüphaneler

sapply(c("dplyr","tibble","tidyr","readr","formattable","readxl","xlsx", "officer","stringr"), require, character.only = TRUE)

Verinin Okunması

data<-read_excel("bki.xlsx")
data

Verinin Kategorize Edilmesi

BKİ değerleri üretilirken Sağlık Bakanlığı resmi web sitesindeki BKİ alt ve üst referans değerlerinden yararlanılmıştır. Burada belirlenen BKİ alt ve üst limitleri Tablo 1’de verilmiştir.

Tablo 1: Beden Kitle Endeksi (BKİ) Kategorileri

Parametre DeğeriKategori
8.5 kg/m2’nin altında isezayıf
18.5-24.9 kg/m2 arasında isenormal kilolu
25-29.9 kg/m2 arasında isefazla kilolu
30-34.9 kg/m2 arasında iseI.Derece obez
35-39.9 kg/m2 arasında iseII.Derece obez
40 kg/m2 üzerinde iseIII.Derece morbid obez
Kaynak: https://www.sbn.gov.tr/BKindeksi.aspx

Tablo 1’de verilen sınıflandırmayı yapmak için yazılan R kod bloğu aşağıda verilmiştir. Çalışma kapsamında bu sınıflandırmayı yapmak zorunlu değildir. Sınıflandırmanın nasıl yapıldığını göstermek açısından verilmektedir. Ancak eğer bu sınıflandırma tabakalı örnekleme (stratified sampling) yapılacaksa dikkate alınacaktır. Aşağıdaki R kod bloğunda snıflandırma yapıldıktan sonra arrange() fonksiyonu kullanılarak BKİ değerlerine göre popülasyon veri setini veya listesini küçükten büyüğe doğru sıralıyoruz.

df<-data[,2] %>% as_tibble() %>% mutate(Kategori=ifelse(BKI< 18.5, "Zayif", ifelse(BKI == 18.5 & BKI<25, "Normal",ifelse(BKI == 25 & BKI<30, "Kilolu",ifelse(BKI == 30 & BKI<35, "1. Derece Obez",ifelse(BKI == 35 & BKI<40, "2. Derece Obez","3. Derece Obez")))))) %>%  mutate_if(is.character, as.factor) %>% arrange(BKI) %>% mutate(ID=seq(1, NROW(BKI))) %>% select(ID, BKI, Kategori)
df

formattable(head(df,10))

Yukarıdaki R kod bloğunun çalıştırılmasından sonra görülebilmesi adına popülasyon veri setindeki ilk 10 kayıt Tablo 2’de verilmiştir.

Tablo 2: Poplülasyon Veri Setindeki İlk 10 Kayıt

Şimdi örneklem genişliği yada aralık genişliği olan k katsayımızı bulalım. k katsayımıza ilişkin iki durum önümüze çıkmaktadır. Birincisi k’nın tamsayı değeri alması, diğeri ise kesirli bir değer almasıdır. Birinci durum ikinci duruma göre kolaylıkla çözümlenmektedir.

Uygulama

a) k’nın tamsayı değeri alması durumunda sistematik örneklem seçimi

Konuyu kavramak adına ilk örnek uygulamamızı yapabiliriz. Popülasyon büyüklüğü (N) 1000 olan BKİ değerleri içerisinde örneklem büyüklüğü (n) 200 olan gözlemimizi sistematik örnekleme yöntemiyle sırasıyla seçelim.

  • 1. k=N/n, yani 1000/200=5 olarak bulunur. k’yı belirledik. Sıra 1 ile k=5 arasında tesadüfi bir tamsayı değeri hesaplamaya gelmiştir. R’da bu işlemi sample(1:k, size=1, replace=F) fonksiyonu ile yapıyoruz. Fonksiyon içerisinde replace argümanı FALSE (F) ve TRUE (T) bileşenlerini içermektedir. Tek bir seçim yaptığımız için burada replace=T şeklinde de kullanabiliriz. Fonksiyon içerisinde yer verilen size argümanı ise bize seçilecek örneklem büyüklüğü göstermektedir. Burada tek bir seçim yaptığımız için size=1 olarak alınmıştır. Diğer taraftan sample() fonksiyonu dinamik bir fonksiyon olduğu için R üzerinde set.seed(1919) fonksiyonu ile sabitlenmiştir her defasında aynı sonuçları elde etmek için. Bahsedilen bu işlemleri yapmak için yazılan R kod bloğu aşağıdadır.
set.seed(1919)

N=NROW(df)#popülasyon büyüklüğü

n=200#seçilecek örneklemin büyüklüğü

k=N/n#5

rs=sample(1:k, size=1, replace=F)#ilk örneklem birimi
rs

Yukarıdaki R kod bloğu çalıştırıldığında ilk örneklem birimimiz (RS) 5 olarak bulunur. Bu 5 sıra numarasına popülasyon veri setinde karşılık gelen gözlem bizim ilk örneklem birimimizi oluşturur. Sıra numarasına göre eşleştirme işlemi aşağıda yazılan R kod bloğu ile yapılmaktadır. Bu kod bloğunda aynı zamanda seçilen örneklem excel (xlsx) dökümanına yazdırılmıştır.

#RS ve k ile örneklem büyüklüğüne ulaşarak bu aralıktan örneklem seçme
ss<-seq(rs, N, by=k)
ss<-as_tibble(ss) %>% rename(ID="value")
ss

#popülasyon listesinden belirlenen örneklem birimlerini seçme
ssorneklemsecimi<-merge(ss, df, all.x = TRUE) %>% as_tibble() %>% mutate("Örneklem Sırası"= seq(1, NROW(BKI))) %>% rename("Popülasyon Sırası"=ID) %>% select("Örneklem Sırası","Popülasyon Sırası", BKI, Kategori)

#seçilen örneklem birimlerini excele yazdırma
writexl::write_xlsx(ssorneklemsecimi, "ornek1.xlsx")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra seçilen örneklem birimlerinin listesi aşağıdaki linkte verilmiş olup, buradan indirebilirsiniz.

b) k’nın kesirli bir değer alması durumunda sistematik örneklem seçimi

İkinci örneğimizde popülasyon büyüklüğü (N) 1000 olan BKİ değerleri içerisinde örneklem büyüklüğü (n) 230 olan gözlemimizi sistematik örnekleme yöntemiyle sırasıyla seçelim.

  • 1. k=N/n, yani 1000/230=4,3 olarak bulunur. k’yı belirledik. Ancak k katsayısı kesirli burada. Amacımız bizim k katsayısının tamsayı olmasıdır. Bu amaçla k katsayısını 10 (k x 10) ile çarparak k=43 katsayısını elde ediyoruz. Sıra 1 ile k=43 arasında tesadüfi bir tamsayı değeri hesaplamaya gelmiştir. R’da bu işlemi sample(1:k, size=1, replace=F) fonksiyonu ile yapıyoruz. sample() fonksiyonu dinamik bir fonksiyon olduğu için R üzerinde set.seed(1920) fonksiyonu ile sabitlenmiştir her defasında aynı sonuçları elde etmek için. Bahsedilen bu işlemleri yapmak için yazılan R kod bloğu aşağıdadır.
set.seed(1920)

N1=NROW(df)

n1=230

k1=round(N1/n1,1)#4,3
k1
k1=k1*10#k kesirli olduğu için 10 ile çarpıldı (k=43). Bu durumda RS 1-43 arasında belirlenecektir.
k1
rs1=sample(1:k, size=1, replace=F)
rs1#30

Yukarıdaki kod bloğunda k’yı 10 ile çarpmıştık kesirli olduğu için. Bu durumda hesaplanan örneklem birimlerine ait sıra numaraları N=1000 olan popülasyon büyüklüğü aşacaktır ve bu istenen bir durum değildir. Burada yapacağımız işlem aşağıdaki kod bloğunda da görüleceği üzere hesaplanan sıra numaralarındaki son basamak çıkarılarak popülasyon sıra numaralarını aşmaması sağlanmıştır. Örneğin yukarıdaki R kod bloğu çalıştırıldığında ilk örneklem birimimiz (RS) 30 olarak olarak hesaplanmıştır. Son basamak çıkarıldığında 3 sıra numarasına popülasyon veri setinde karşılık gelen gözlem bizim ilk örneklem birimimizi oluşturacaktır. Bundan sonra ilk örneklem birimimizde olduğu gibi sıra numaralarındaki son basamak çıkarılarak bu sıra numaralarına göre eşleştirme işlemi yapılmıştır. Aşağıda yazılan R kod bloğunda bahsedilen bu adımların yerine getirilmesinin yanısıra seçilen örneklem birimlerine ait liste excel (xlsx) dökümanına da yazdırılmıştır.

nson<-(n1-1)*k1+rs1

ss1<-seq(rs1, nson, by=k1)
#as_tibble(ss1) %>% rename(ID="value")
ss1
x1<-as.character(ss1)

#sıra numaralarından son basamağın çıkarılması
sst1<-as.numeric(substr(x1, 1, nchar(x1)-1))%>% as_tibble()%>% rename(ID="value")

ssorneklemsecimi2<-merge(sst1, df, all.x = TRUE) %>% as_tibble() %>% mutate("Örneklem Sırası"= seq(1, NROW(BKI))) %>% rename("Popülasyon Sırası"=ID) %>% select("Örneklem Sırası","Popülasyon Sırası", BKI, Kategori)

writexl::write_xlsx(ssorneklemsecimi2, "ornek2.xlsx")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra k’nın kesirli olması durumunda seçilen örneklem birimlerinin listesi aşağıdaki linkte verilmiş olup, buradan indirebilirsiniz.

Literatürde bu yapılan işlemin dışında hesaplanan örneklem genişliği (k)’nin kesirli olması durumunda, bu örnekte olduğu gibi, k katsayısını tam sayıya dönüştürmek için aşağı veya yukarı yuvarlandığı görülmektedir. Bu yöntem zaman zaman belirlenmiş olan örneklem büyüklüğü (n)’ndeki örneklem birimlerin eksik veya fazla seçilmesine sebebiyet verebilmektedir. Bu hususu dikkate almakta fayda vardır. Bu nedenle k katsayının 10 ile çarpılması, ardından 1 ile k arasında tesadüfi bir şekilde belirlenen RS (ilk örneklem birimi) ve RS’ye k’nın ilave edilerek elde edilen 2. ve sonraki örneklem birimlerini temsil eden sıra sayılarının son basamağı çıkartılarak kalan sıra sayıları üzerinden gidilmesinin daha sağlıklı ve güvenilir bir yol olacağı düşünülmektedir.

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

Bilimle ve teknolojiyle kalınız.

Saygılarımla…

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

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

Yararlanılan Kaynaklar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s