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:
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:
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 |
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 |
st(veri,title="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, 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 |
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)
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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
))
Ö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.
Beden Kitle Endeksi Referans Değerleri. https://www.acibadem.com.tr/ilgi-alani/vucut-kitle-indeksi-hesaplama/#genel-tanitim
RStudio Cloud: https://login.rstudio.cloud/
The R Project for Statistical Computing. https://www.r-project.org/
Alpar, R. (2017). Uygulamalı Çok Değişkenli İstatistiksel Yöntemler. 5. Baskı. Detay Yayıncılık.
Nick Huntington-Klein (2021). vtable: Variable Table for Variable Documentation. R package version 1.3.3. https://CRAN.R-project.org/package=vtable
Kun Ren and Kenton Russell (2021). formattable: Create ‘Formattable’ Data Structures. R package version 0.2.1. https://CRAN.R-project.org/package=formattable
Hao Zhu (2021). kableExtra: Construct Complex Table with ‘kable’ and Pipe Syntax. R package version 1.3.4. https://CRAN.R-project.org/package=kableExtra