John

Tevfik Bulut

Data Scientist

Web Site

Linkedin

RPubs

Contact

Intro

The main focus of this study is the practical handling of some standardization methods that have found application in the literature.The standardization methods commonly used in the literature are as follows:

  1. Z-Score Standardization
  2. Standardization with a Distribution Range of 1
  3. Standardization with a Distribution Range (-1;+1)
  4. Standardization with a Distribution Range (0;+1)
  5. Standardization with Maximum Value of 1
  6. Standardization to Arithmetic Mean 1
  7. Standardization with a Standard Deviation of 1

Giriş

Veri bilimciler ve veri mühendisleri çok değişkenli istatistiksel analizler üzerinde yoğun bir şekilde şekilde çalışmaktadır. Ancak bazı durumlarda seçilen analiz yönteminin ilk varsayımlarının yerine getirilmesi gerekmektedir. Bu varsayımlardan ve gerekliliklerden biri de veri setinin standartlaştırılmasıdır. Örnek vermek gerekirse küme analizleri başta olmak üzere yapay sinir ağları alanlarında da standartlaştırmanın kendine uygulama alanı bulduğu görülmektedir. Peki standartlaştırma neden gereklidir? Verinin standartize edilmek istenmesinin temel sebebi verinin aynı ölçü birimine indirgenmesidir. Ancak bu indirgeme işlemi verinin dönüştürülmesi veya dönüşümü ile özellikle karıştırılmaması gerekir. Veri standartize edildiğinde yani aynı ölçü birimine indirgendiğinde dağılım şekli değişmemektedir. Değişen tek şey burada ölçü birimidir. Verinin dönüştürülmesi işleminde ise istastiksel dağılımın şekli de değişir. Bu işlem ise genelde verinin dağılım şeklini analizi yapılacak yöntemin benimsediği dağılım şekline dönüştürmek için yapılır. Verinin dağılım şekline göre farklı dönüşüm metodları uygulanabilmektedir. Örneğin pozitif çarpıksa log dönüşümü. Bu çalışma kapsamında verinin dönüşümü ele alınmayacaktır. Dolayısıyla verinin dönüşümü konusuna ayrıntılı bir giriş yapılmamıştır. Bu çalışmanın ana odağı, literatürde kendine uygulama alanı bulan bazı standartlaştırma yöntemlerinin uygulamalı örnek üzerinden ele alınmasıdır. Litaratürde ağırlıklı olarak kullanılan standartlaştırma yöntemleri şöyledir:

  1. Z Skor Standartlaştırma
  2. Dağılım Aralığı 1 Olacak şekilde Standartlaştırma
  3. Dağılım Aralığı (-1;+1) Olacak şekilde Standartlaştırma
  4. Dağılım Aralığı (0;+1) Olacak şekilde Standartlaştırma
  5. En Büyük Değer 1 Olacak şekilde Standartlaştırma
  6. Aritmetik Ortalama 1 Olacak Şekilde Standartlaştırma
  7. Standart Sapma 1 Olacak Şekilde Standartlaştırma

Yüklenen kütüphaneler

kütüphane<-c("dplyr","tibble","tidyr","DT","ggplot2","vtable","readr","readxl","ggpubr","formattable", "ggstance","scales", "rmarkdown", "knitr","writexl", "kableExtra")
yükle<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE)

#Kütüphane yüklenme durumunu gösteren tablo
 
tablo=suppressWarnings(yükle, classes = "warning")
   
isim=names(tablo)
   
deger=as_tibble(tablo)
   
data.frame(Sıra=1:length(isim), Kütüphane=isim, Durumu=deger$value) %>% mutate(Durumu=if_else(Durumu==TRUE, "Yüklendi", "Paket Kurulumu Gerekli")) %>% kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Sıra Kütüphane Durumu
1 dplyr Yüklendi
2 tibble Yüklendi
3 tidyr Yüklendi
4 DT Yüklendi
5 ggplot2 Yüklendi
6 vtable Yüklendi
7 readr Yüklendi
8 readxl Yüklendi
9 ggpubr Yüklendi
10 formattable Yüklendi
11 ggstance Yüklendi
12 scales Yüklendi
13 rmarkdown Yüklendi
14 knitr Yüklendi
15 writexl Yüklendi
16 kableExtra Yüklendi

Tesadüfi sentetik (hipotetik) veri üretme

Bu kısımda tek değişkenli ve 1000 (N) gözlemden oluşan bir veri seti, basit tekrarlı örneklem yöntemi kullanılarak üretilecektir. Üretilen veri setinde beden kitle endeksi (BKİ) alt ve üst sınır değerleri (alt sınır:18,5, üst sınır:40) modellenmiştir.

set.seed(61)#aynı sonuçları almak için
bki=seq(18.499, 40.001, 0.001)
N=sample(bki, 1000, replace=TRUE)
veri=tibble(x=N)
veri %>% head(10) %>% kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #ilk 10 gözlem
x
19.564
21.292
28.843
27.478
23.460
23.949
37.308
35.782
35.483
31.365

Tanımlayıcı istatistikler

st(veri,title="Tanımlayıcı İstatistikler")
Tanımlayıcı İstatistikler
Variable N Mean Std. Dev. Min Pctl. 25 Pctl. 75 Max
x 1000 29.134 6.136 18.51 23.715 34.299 39.98

Z skor standartlaştırma

Z skor standartlaştırma, veri setindeki gözlem değerlerinin ortalaması 0, standart sapması 1 olan yeni veri setine dönüştürülmesidir.Z skoru aşağıdaki eşitlik yardımıyla hesaplanmaktadır.

\[\frac{X_{i}-X_{ort}}{X_{sd}}\]

tibble(bki=veri$x, bki_zskor=scale(veri$x)) %>% 
head(10) %>% 
mutate_if(is.numeric, round, 2) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #ilk 10 kayıt
bki bki_zskor
19.56 -1.56
21.29 -1.28
28.84 -0.05
27.48 -0.27
23.46 -0.92
23.95 -0.84
37.31 1.33
35.78 1.08
35.48 1.03
31.36 0.36

Z skor standartlaştırma: Histogramların karşılaştırılması

Burada standartize edilen veri seti ile standartize edilmemiş veri setinin dağılımı histogramla karşılaştırılmıştır. Görüleceği üzere dağılımın şekli değişmemiştir.

df=tibble(bki=veri$x, bki_zskor=scale(veri$x))
v1<-ggplot(df, aes(x=bki)) +
  geom_histogram(fill="blue")+
  ggtitle("Orjinal Veri Seti")
v2<-ggplot(df, aes(x=bki_zskor)) +
  geom_histogram(fill="red")+
  ggtitle("Standartlaştırılmış Veri Seti")
ggarrange(v1,v2, ncol = 1)

Dağılım aralığı 1 olacak şekilde standartlaştırma

Her bir değer dağılım aralığına bölünerek hesaplanır. Dağılım aralığı= Mak-Min.

tibble(d1=veri$x/(max(veri$x)-min(veri$x))) %>% 
head(10) %>% 
mutate_if(is.numeric, round, 2) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #ilk 10 gözlem
d1
0.91
0.99
1.34
1.28
1.09
1.12
1.74
1.67
1.65
1.46

Dağılım aralığı (-1;+1) olacak şekilde standartlaştırma

Aşağıdaki eşitlik yardımı ile hesaplanır.

\[DA=\frac{(X_i-\frac{X_{max}+X_{min}}{2})}{(\frac{X_{max}-X_{min}}{2})}\]

m=veri$x-(max(veri$x)+min(veri$x))/2 # eşitliğin payı
x=(max(veri$x)-min(veri$x))/2 # eşitliğin paydası

tibble(d1_eksi1=m/x) %>% 
head(10) %>% 
mutate_if(is.numeric, round, 2) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #ilk 10 gözlem
d1_eksi1
-0.90
-0.74
-0.04
-0.16
-0.54
-0.49
0.75
0.61
0.58
0.20

En büyük değer 1 olacak şekilde standartlaştırma

Aşağıdaki eşitlik yardımı ile hesaplanır.

\[\frac{X_i}{X_{max}}\]

tibble(mak1=veri$x/max(veri$x)) %>% 
head(10) %>% 
mutate_if(is.numeric, round, 2) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #ilk 10 gözlem
mak1
0.49
0.53
0.72
0.69
0.59
0.60
0.93
0.89
0.89
0.78

Aritmetik ortalama 1 olacak şekilde standartlaştırma

Aşağıdaki eşitlik yardımı ile hesaplanır.

\[\frac{X_i}{X_{ort}}\]

tibble(a1=veri$x/mean(veri$x))%>% 
head(10) %>% 
mutate_if(is.numeric, round, 2) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #ilk 10 gözlem
a1
0.67
0.73
0.99
0.94
0.81
0.82
1.28
1.23
1.22
1.08

Dağılım aralığı (0;+1) olacak şekilde standartlaştırma

Aşağıdaki eşitlik yardımı ile hesaplanır.Dağılım aralığı (DA)= Mak-Min.

\[DA=\frac{X_i}{X_{max}-X_{min}}\]

tibble(dsifir_bir=(veri$x-min(veri$x))/(max(veri$x)-min(veri$x))) %>% 
head(10) %>% 
mutate_if(is.numeric, round, 2) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #ilk 10 gözlem
dsifir_bir
0.05
0.13
0.48
0.42
0.23
0.25
0.88
0.80
0.79
0.60

Standart sapması 1 olacak şekilde standartlaştırma

Bu standartlaştırma türü aşağıdaki eşitlik yardımı ile hesaplanır.

\[\frac{X_i}{X_{sd}}\]

tibble(sd_1=veri$x/sd(veri$x))%>% 
head(10) %>% 
mutate_if(is.numeric, round, 2) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #ilk 10 gözlem
sd_1
3.19
3.47
4.70
4.48
3.82
3.90
6.08
5.83
5.78
5.11

Yönteme göre standartlaştırılmış değerler ve orjinal veri seti

tum=tibble(bki=N) %>% mutate(zskor=scale(veri$x),d1=veri$x/(max(veri$x)-min(veri$x)),d_eksi1_arti1=m/x,mak1=veri$x/max(veri$x), ort1=veri$x/mean(veri$x),dsifir_bir=(veri$x-min(veri$x))/(max(veri$x)-min(veri$x)),sd_1=veri$x/sd(veri$x)) %>% mutate_if(is.numeric, round,2)

#ilk 10 gözlem

tum %>% 
head(10) %>% 
mutate_if(is.numeric, round, 2) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #ilk 10 gözlem
bki zskor d1 d_eksi1_arti1 mak1 ort1 dsifir_bir sd_1
19.56 -1.56 0.91 -0.90 0.49 0.67 0.05 3.19
21.29 -1.28 0.99 -0.74 0.53 0.73 0.13 3.47
28.84 -0.05 1.34 -0.04 0.72 0.99 0.48 4.70
27.48 -0.27 1.28 -0.16 0.69 0.94 0.42 4.48
23.46 -0.92 1.09 -0.54 0.59 0.81 0.23 3.82
23.95 -0.84 1.12 -0.49 0.60 0.82 0.25 3.90
37.31 1.33 1.74 0.75 0.93 1.28 0.88 6.08
35.78 1.08 1.67 0.61 0.89 1.23 0.80 5.83
35.48 1.03 1.65 0.58 0.89 1.22 0.79 5.78
31.36 0.36 1.46 0.20 0.78 1.08 0.60 5.11

Sonuçların indirilmesi

datatable(tum,  class = 'cell-border stripe', filter = 'top', extensions = 'Buttons', options = list(
    dom = 'Bfrtip',
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),searching = FALSE, pageLength = 10
  ))

Sonuç

Özetle, yapılan uygulamalı çalışmayla veri biliminde önemli bir yere sahip verinin standartlaştırılması konusu özelinde farkındalık oluşturulması amaçlanmıştır.

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

Yararlanılan Kaynaklar

web counter
Görüntülenme Sayısı