Öne çıkan

R’da Leaflet Paketi ile Harita Üzerinde Dinamik Etiketleme: Dynamic Tagging on Maps Using Leaflet Packages in R

Çalışma kapsamında ağırlıklı olarak leaflet, leaflet.extras, leaflet.extras2 ve mapview paketleri kullanılarak harita üzerinde etiketleme çalışmaları ile farklı formatta kaydetme çalışmaları yapılacaktır. Çalışmada R programlama dili kullanılmıştır.

Yüklenen Kütüphaneler

Aşağıdaki R kod bloğunun çalıştırılmasından sonra kütüphanelerin yüklenip yüklenmediğine dair aşağıdaki gibi mantıksal vektör sonuçları gelecektir. Eğer mantıksal vektör sonuçlarının hepsi TRUE ise kütüphanelerin tamamı yüklenmiştir. Kolaylık sağlaması açısından aşağıdaki kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için aşağıdaki kod bloğu içerisinde kısa bir kod yazdım. Bu kod çalıştırıldığında aşağıdaki tabloda görüleceği üzere bütün kütüphaneler yüklenmiştir. Eğer ilgili kütüphane yüklenmemiş olursa Paket Kurulumu Gerekli ifadesi tablo satırında yazacaktır. Satırda yazan bu uyarı metnine göre paketi ya kurar yada yüklersiniz. Bir paketin kurulması ile yüklenmesinin aynı şey olmadığını burada ifade etmek gerekir konuyu yabancı olanlar için. Paket kurulumu ilk defa yapılan bir işlem iken, paketin yüklenmesi zaten kurulan bir paketin yüklenmesi yani çalışır duruma getirilmesidir. İlk defa bir paket kurulumu gerçekleştiriliyorsa install.packages() fonksiyonunu, zaten bir paket kurulumu gerçekleştirilmiş ise ilgili paketin veya kütüphanenin yüklenmesi veya okunması için library() veya require() fonksiyonlarını kullanıyoruz. Fonksiyonlardaki parantez () içerisine yüklenecek paket veya kütüphane adını yazıyoruz.

kütüphane<-c("dplyr","tibble","tidyr","ggplot2","readr","RColorBrewer","crosstalk","leaflet","DT", "htmlwidgets","kableExtra","readr", "leaflet.extras", "sf", "plotly", "leafpop", "downloadthis", "tidygeocoder", "leaflet.extras2")
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, yuklenme_durumu=deger$value) %>% mutate(yuklenme_durumu=if_else(yuklenme_durumu==TRUE, "Yuklendi", "Paket Kurulumu Gerekli")) %>% kbl(caption = "Kütüphane Yüklenme Bilgisi") %>% kable_classic_2(full_width = F, html_font="arial")

Yukarıdaki kod bloğunun çalıştırılmasından sonra kütüphane yüklenme bilgisi aşağıdaki tabloda verilmiştir.

Veri Setinin Oluşturulması

Bu kısımda sentetik veri seti üretilerek bu veri seti üzerinde haritalama çalışmaları yapılmıştır.

deneme <- data.frame(
  Firma = rep(c("Ulusoy", "Metro", "Süzer", "Kanberoğlu"),3),
  Adres = rep(c("Ankara","İstanbul","Artvin","Rize"), 3),
  Tur=rep(c("A","B"),6),
  Ciro =rep(c(10000, 12500,30000,40000, 60000,80000),2)) %>%
  tidygeocoder::geocode(address = Adres, method = "osm", verbose = TRUE)
deneme

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen veri seti aşağıdaki tabloda verilmiştir. Kod bloğunda tidygeocoder::geocode() fonksiyonunun kullanılmasının nedeni illere göre enlem (lat) ve boylam (long) bilgisinin alınarak veri setine iki ayrı değişken olarak eklenmek istenmesidir. Doğal olarak enlem ve boylam bilgisi olmadan harita oluşturamıyoruz.

Haritanın Oluşturulması

leaflet(deneme) %>%
  addTiles(group = "OpenStreetMap") %>%
    addPulseMarkers(lng =~long, lat=~lat,  icon = makePulseIcon(), label=paste(deneme$Firma,"firmasının cirosu:", deneme$Ciro), labelOptions = labelOptions(noHide = F, direction = 'top', style = list(
        "color" = "green",
        "font-family" = "calibri",
        "font-style" = "bold",
        "box-shadow" = "3px 3px rgba(0,0,0,0.25)",
        "font-size" = "15px",
        "border-color" = "rgba(0,0,0,0.5)"
      ))) %>%
  addMiniMap() %>%  
  addSearchOSM() %>% 
  addReverseSearchOSM() %>% 
  addResetMapButton() %>% 
  addSearchGoogle()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen harita aşağıda verilmiştir. R Studio üzerinde çalıştırıldığında harita üzerinde bulunan kırmızı işaretleyiciler yanıp sönmektedir. Bunun için addPulseMarkers() fonksiyonu kullanılmıştır. Ayrıca il üzerine tıklandığında açılan bir etiket tanımlanmıştır. Bu etiket atama işlemi ise label=paste(deneme$Firma,”firmasının cirosu:”, deneme$Ciro) fonksiyonu ile yapılmıştır. Yani kırmızı kutu üzerine işaretleyiciler üzerine tıklandığında Firma adı ile birlikte cirosu görünecektir. addMiniMap() fonskiyonu ile de harita üzerinde mini bir harita oluşturulmaktadır.

Haritada il üzerine tıklandığında açılan bir etiket aşağıdaki gibi olacaktır. Eğer etiketleri harita üzerinde sabitlemek istiyorsak labelOptions = labelOptions(noHide = T) fonksiyonunu yazmamız yeterlidir.

Belirli Bir Bölgenin Kare İçine Alınarak İşaretlenmesi I

Yukarıda yapılan işlemlerden farklı olarak faydalı olabilir düşüncesiyle harita üzerinde belirli koordinatlara sahip bir bölgenin kare içerisine alınması işlemini de göstermek istiyorum. Bu uygulama için Türkiye örneği üzerinden gidelim.

leaflet() %>% addTiles() %>%
  addRectangles(
    lng1=25, lat1=35,
    lng2=45, lat2=43,
    fillColor = "transparent", color="red", label="TÜRKİYE'NİN YAKLAŞIK KOORDİNATLARI", labelOptions = labelOptions(noHide = T, direction = 'top')
  )

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Türkiye haritası kare içerisine alınmış bir şekilde aşağıda verilmiştir. Kare içerisine alınma işlemi addRectangles() fonksiyonu ile yapılmaktadır. Burada enlem ve boylamlar sırasıyla kuzey ve güney, ve aynı zamanda doğu ve batı şeklinde belirlenmelidir.

Belirli Bir Bölgenin Kare İçine Alınarak İşaretlenmesi II

Bu kısımda bir öncekinden farklı olarak kare içerisine alınmış bölgenin etiketi stilize edilmiştir. Bu amaçla aşağıda da görüleceği üzere addRectangles() fonskiyonu içerisinde tanımlanmış labelOptions parametresi içerisinde tanımlanmış style alt parametrisi kullanılmıştır.

leaflet() %>% addTiles() %>%
  addRectangles(
    lng1=25, lat1=35,
    lng2=45, lat2=43,
    fillColor = "transparent", color="red", label="YENİ STİLDE TÜRKİYE'NİN YAKLAŞIK KOORDİNATLARI", labelOptions = labelOptions(noHide = T, direction = 'top', style = list(
        "color" = "black",
        "font-family" = "Cursive",
        "font-style" = "Lucida Handwritingl",
        "box-shadow" = "3px 3px rgba(0,0,0,0.25)",
        "font-size" = "14px",
        "border-color" = "rgba(0,0,0,0.5)",
        "padding" = "4px",
        "background-color"= "rgba(255, 255, 255, 2)",
        "font-weight" = "bold"
      )))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Türkiye haritası kare içerisine alınmış bir şekilde yeni etiket tasarımı ile aşağıda verilmiştir.

Haritanın PNG ve JPEG Formatlarında Kaydedilmesi

Harita üzerinde yaptığımız işlemlerden sonra eğer haritayı kaydetmek istiyorsak önümüze farklı formatta seçenekler çıkmaktadır. Bu formatlar, html, png, pdf ve jpeg formatları olabilmektedir. Farklı formatlarda haritanın kaydedilmesi için bu kısımda mapview paketi kullanılmıştır. Aşağıdaki çalışmada bir önceki çalışmada elde edilmiş harita png formatında kaydedilmiştir. Bu kaydetme işleminde kullanılan fonksiyon mapshot() olup, bu fonksiyon içerisinde diğer formatlar da tanımlanabilmektedir.

library(mapview)
leaflet() %>% 
addTiles() %>%
addRectangles(
    lng1=25, lat1=35,
    lng2=45, lat2=43,
    fillColor = "transparent", color="red", label="YENİ STİLDE TÜRKİYE'NİN YAKLAŞIK KOORDİNATLARI", labelOptions = labelOptions(noHide = T, direction = 'top', style = list(
        "color" = "black",
        "font-family" = "Cursive",
        "font-style" = "Lucida Handwritingl",
        "box-shadow" = "3px 3px rgba(0,0,0,0.25)",
        "font-size" = "14px",
        "border-color" = "rgba(0,0,0,0.5)",
        "padding" = "4px",
        "background-color"= "rgba(255, 255, 255, 2)",
        "font-weight" = "bold"
      ))) %>% 
mapshot(file = "Turkiye.png")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Türkiye haritası kare içerisine alınmış bir şekilde png formatında aşağıda verilmiştir.

Bir diğer çalışmamızda ise çalışmamızın başında oluşturduğumuz haritayı jpeg formatında kaydedelim.

leaflet(deneme) %>%
addTiles(group = "OpenStreetMap") %>%
addPulseMarkers(lng =~long, lat=~lat,  icon = makePulseIcon(), label=paste(deneme$Firma,"firmasının cirosu:", deneme$Ciro), labelOptions = labelOptions(noHide = F, direction = 'top', style = list(
        "color" = "green",
        "font-family" = "calibri",
        "font-style" = "bold",
        "box-shadow" = "3px 3px rgba(0,0,0,0.25)",
        "font-size" = "15px",
        "border-color" = "rgba(0,0,0,0.5)"
      ))) %>% 
mapshot(file = "Turkiyeciro.jpeg")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen haritamız jpeg formatında aşağıda verilmiştir.

Verinin harita üzerinde görselleştirilmesine yönelik yaptığım çalışmalardan biri olan bu R Markdown çalışmasının özellikle veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunacağı 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

1.https://rstudio.github.io/crosstalk/ 

2.https://emilyriederer.github.io/demo-crosstalk/tutorial/tutorial-rmd.html 

3.https://www.jla-data.net/eng/leaflet-markers-in-r/ 

4.https://rstudio.github.io/leaflet/popups.html 

5.https://rstudio.github.io/crosstalk/using.html 

6.https://emilyriederer.github.io/demo-crosstalk/tutorial/tutorial-rmd.html 

7.https://plotly-r.com/client-side-linking.html 

8.https://nicar.r-journalism.com/docs/crosstalk-flexdashboard-leaflet-datatable/ 

9.https://rstudio-pubs-static.s3.amazonaws.com/367074_7396dc3734544b0f94e04b8801b24664.html 

10.https://rstudio.github.io/crosstalk/using.html 

11.https://rpubs.com/tevfik1461/deprem 

12.https://cran.r-project.org/web/packages/crosstalk/crosstalk.pdf 

13.https://cran.r-project.org/web/packages/leaflet.extras2/leaflet.extras2.pdf 

14.https://mrjoh3.github.io/2018/07/25/filtering-spatial-data/ 

15.https://rdrr.io/cran/leaflet/man/makeAwesomeIcon.html 

16.https://rstudio.github.io/leaflet/popups.html 

17.https://github.com/r-spatial/leafpop

18. Crostalk ve Leaflet Paketleriyle Türkiye Depremlerinin Analizi, https://rpubs.com/tevfik1461/harita

19. https://tevfikbulut.com/2021/06/29/crostalk-ve-leaflet-paketleriyle-turkiye-depremlerinin-analizi-analysis-of-turkey-earthquakes-using-crostalk-and-leaflet-packages/

20. RStudio Cloud: https://login.rstudio.cloud/

21. The R Project for Statistical Computing. https://www.r-project.org/

22. Mapview paketi, https://cran.r-project.org/web/packages/mapview/index.html

Öne çıkan

Crostalk ve Leaflet Paketleriyle Türkiye Depremlerinin Analizi: Analysis of Turkey Earthquakes Using Crostalk and Leaflet Packages

Çalışma kapsamında Türkiye’de son 1 yıl içerisinde gerçekleşen depremlerin keşifsel veri analizi yapılmıştır. Bu çalışmada rmdformats paketinde bulunan downcute teması kullanılarak R Markdown üzerinde html uzantılı raporlama yapılmıştır.Dolayısıyla bu formatta bir R Markdown raporu üretilmek isteniyorsa öncelikle rmdformats paketinin kurulumun yapılması gerektiği unutulmamalıdır.

Yüklenen Kütüphaneler

Aşağıdaki R kod bloğunun çalıştırılmasından sonra kütüphanelerin yüklenip yüklenmediğine dair aşağıdaki gibi mantıksal vektör sonuçları gelecektir. Eğer mantıksal vektör sonuçlarının hepsi TRUE ise kütüphanelerin tamamı yüklenmiştir. Kolaylık sağlaması açısından aşağıdaki kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için aşağıdaki kod bloğu içerisinde kısa bir kod yazdım. Bu kod çalıştırıldığında aşağıdaki tabloda görüleceği üzere bütün kütüphaneler yüklenmiştir. Eğer ilgili kütüphane yüklenmemiş olursa Paket Kurulumu Gerekli ifadesi tablo satırında yazacaktır. Satırda yazan bu uyarı metnine göre paketi ya kurar yada yüklersiniz. Bir paketin kurulması ile yüklenmesinin aynı şey olmadığını burada ifade etmek gerekir konuyu yabancı olanlar için. Paket kurulumu ilk defa yapılan bir işlem iken, paketin yüklenmesi zaten kurulan bir paketin yüklenmesi yani çalışır duruma getirilmesidir. İlk defa bir paket kurulumu gerçekleştiriliyorsa install.packages() fonksiyonunu, zaten bir paket kurulumu gerçekleştirilmiş ise ilgili paketin veya kütüphanenin yüklenmesi veya okunması için library() veya require() fonksiyonlarını kullanıyoruz. Fonksiyonlardaki parantez () içerisine yüklenecek paket veya kütüphane adını yazıyoruz.

kütüphane<-c("dplyr","tibble","tidyr","ggplot2","readr","RColorBrewer","crosstalk","leaflet","DT", "htmlwidgets","kableExtra","readr", "leaflet.extras", "sf", "plotly", "leafpop", "downloadthis", "tidygeocoder")
yükle<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE)
Kütüphane Yüklenme Bilgisi
sıra	kütüphane	yuklenme_durumu
1	dplyr	Yuklendi
2	tibble	Yuklendi
3	tidyr	Yuklendi
4	ggplot2	Yuklendi
5	readr	Yuklendi
6	RColorBrewer	Yuklendi
7	crosstalk	Yuklendi
8	leaflet	Yuklendi
9	DT	Yuklendi
10	htmlwidgets	Yuklendi
11	kableExtra	Yuklendi
12	readr	Yuklendi
13	leaflet.extras	Yuklendi
14	sf	Yuklendi
15	plotly	Yuklendi
16	leafpop	Yuklendi
17	downloadthis	Yuklendi
18	tidygeocoder	Yuklendi

Verinin okunması

deprem <- read_table("deprem.txt")%>% rename(Enlem="Enlem(N)",Boylam="Boylam(E)", "Buyukluk"=ML, Derinlik="Derinlik(km)"
)
# deprem veri seti
deprem<- deprem[, c(-6,-8,-10)]
deprem

Veri Setinin Yapısı

glimpse(deprem)

Kaydırma Eksenine Bağlı Harita, Grafik Kombinasyonu

deprem <- read_table("deprem.txt")%>% rename(Enlem="Enlem(N)",Boylam="Boylam(E)", "Buyukluk"=ML, Derinlik="Derinlik(km)"
)

deprem<- deprem[, c(-6,-8,-10)]


d1 <- highlight_key(deprem)

kaydirma <- filter_slider("Büyüklük", "Depremin Büyüklüğü", d1,~Buyukluk)

p <- plot_ly(d1, x = ~Derinlik, y = ~Buyukluk) %>% 
  add_markers(alpha = 0.5) %>% 
  highlight("plotly_selected")

harita <- leaflet(d1) %>% 
  addTiles() %>% 
  addCircleMarkers(
    label=deprem$Buyukluk,lng = ~Enlem, lat = ~Boylam,
    labelOptions = labelOptions(noHide = T, direction = 'top'))%>% addSearchOSM() %>% addReverseSearchOSM() %>% addResetMapButton()

bscols(
  widths = c(12, 12, 12), 
 kaydirma,  p, harita)

Örnek Veri Tablosu ve Harita Oluşturma

deneme <- data.frame(
  ticker = c("Ulusoy", "Metro", "Süzer", "Kanberoğlu"),
  address = c("Ankara","İstanbul","Artvin","Rize")
) %>%
  tidygeocoder::geocode(address = address,
                        method = "osm") %>%
  sf::st_as_sf(coords = c("long", "lat"), crs = 4326)
  
leaflet(deneme) %>%
  addMarkers(label = ~ address) %>%
  addProviderTiles("CartoDB.Positron")

İkon ve Harita Temalarının Haritaya Eklenmesi 1

deneme <- data.frame(
  Firma = c("Ulusoy", "Metro", "Süzer", "Kanberoğlu", "Pamukkale","Kamil Koç", "Anadolu", "Dadaş"),
  Adres = c("Ankara","İstanbul","Artvin","Rize", "Kayseri", "Antalya", "İzmir", "Sivas"),
  Ciro =c(1000, 12500,3000,4000, 6000,8000,9000,1800))%>%
  tidygeocoder::geocode(address = Adres,
                        method = "osm") %>%
  sf::st_as_sf(coords = c("long", "lat"), crs = 4326)


awesome <- makeAwesomeIcon(
  icon = "fire",
  iconColor = "red",
  markerColor = "blue",
  library = "fa"
)

leaflet(deneme) %>%
  addAwesomeMarkers(icon = awesome,
                    label = ~ Ciro) %>%
  addProviderTiles("CartoDB.Positron")

İkon ve Harita Temalarının Haritaya Eklenmesi 2

deneme <- data.frame(
  Firma = c("Ulusoy", "Metro", "Süzer", "Kanberoğlu", "Pamukkale","Kamil Koç", "Anadolu", "Dadaş"),
  Adres = c("Ankara","İstanbul","Artvin","Rize", "Kayseri", "Antalya", "İzmir", "Sivas"),
  Ciro =c(1000, 12500,3000,4000, 6000,8000,9000,1800))%>%
  tidygeocoder::geocode(address = Adres,
                        method = "osm") %>%
  sf::st_as_sf(coords = c("long", "lat"), crs = 4326)


awesome <- makeAwesomeIcon(
  icon = "automobile",
  iconColor = "red",
  markerColor = "blue",
  library = "fa"
)

leaflet(deneme) %>%
  addAwesomeMarkers(icon = awesome,
                    label = ~ Ciro) %>%
  addProviderTiles("Esri.NatGeoWorldMap")

Haritaya Açılan Tablo Ekleme 1

deneme <- data.frame(
  Firma = c("Ulusoy", "Metro", "Süzer", "Kanberoğlu", "Pamukkale","Kamil Koç", "Anadolu", "Dadaş"),
  Adres = c("Ankara","İstanbul","Artvin","Rize", "Kayseri", "Antalya", "İzmir", "Sivas"),
  Ciro =c(1000, 12500,3000,4000, 6000,8000,9000,1800))%>%
  tidygeocoder::geocode(address = Adres,
                        method = "osm") %>%
  sf::st_as_sf(coords = c("long", "lat"), crs = 4326)

leaflet() %>%
  addTiles() %>%
  addCircleMarkers(data = deneme,
                   popup = popupTable(deneme))

Spesifik Yer İşaretleme

Bu kısımda Sanayi ve Teknoloji Bakanlığı’nın adresi, web sitesi etiketlenmiştir.

etiket=content <- paste(sep = "<br/>",
  "<b><a href='https://www.sanayi.gov.tr/anasayfa'>T.C. Sanayi ve Teknoloji Bakanlığı</a></b>",
  "Mustafa Kemal Mahallesi Dumlupınar Bulvarı (Eskişehir Yolu 7.km) 2151. Cadde No:154/A",
  "Çankaya/ANKARA, 06530"
)
leaflet() %>% addTiles() %>% setView(32.78216614147982,39.911152425885824, zoom = 15) %>% addPopups(32.78216614147982,39.911152425885824,etiket, options = popupOptions(closeButton = TRUE))

Buraya kadar yapılan çalışmaların tamamını ve daha fazlasını RPubs üzerinde yayınladığım Crostalk ve Leaflet Paketleriyle Türkiye Depremlerinin Analizi adlı çalışma içerisinde bulabilirsiniz.

Verinin harita üzerinde görselleştirilmesine yönelik yaptığım bu R Markdown çalışmasının özellikle veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunacağı 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

1.https://rstudio.github.io/crosstalk/ 

2.https://emilyriederer.github.io/demo-crosstalk/tutorial/tutorial-rmd.html 

3.https://www.jla-data.net/eng/leaflet-markers-in-r/ 

4.https://rstudio.github.io/leaflet/popups.html 

5.https://rstudio.github.io/crosstalk/using.html 

6.https://emilyriederer.github.io/demo-crosstalk/tutorial/tutorial-rmd.html 

7.https://plotly-r.com/client-side-linking.html 

8.https://nicar.r-journalism.com/docs/crosstalk-flexdashboard-leaflet-datatable/ 

9.https://rstudio-pubs-static.s3.amazonaws.com/367074_7396dc3734544b0f94e04b8801b24664.html 

10.https://rstudio.github.io/crosstalk/using.html 

11.https://rpubs.com/tevfik1461/deprem 

12.https://cran.r-project.org/web/packages/crosstalk/crosstalk.pdf 

13.https://cran.r-project.org/web/packages/leaflet.extras2/leaflet.extras2.pdf 

14.https://mrjoh3.github.io/2018/07/25/filtering-spatial-data/ 

15.https://rdrr.io/cran/leaflet/man/makeAwesomeIcon.html 

16.https://rstudio.github.io/leaflet/popups.html 

17.https://github.com/r-spatial/leafpop

18. Crostalk ve Leaflet Paketleriyle Türkiye Depremlerinin Analizi, https://rpubs.com/tevfik1461/harita

Öne çıkan

R Markdown İle Örnek Uygulama Raporu Oluşturma: Example of Creating an Application Report with R Markdown

Bu çalışmanın amacı prettydoc paketi kullanılarak R Markdown üzerinde html uzantılı raporlama yapmaktır. Bu nedenle kod bloklarıyla birlikte adım adım uygulama adımlarına yer verilmiştir. Çalışma R programlama ara yüzü olan R Studio üzerinde yapılmıştır.

R Markdown Raporunu Tanımlama

title: "R Markdown Örnek Uygulama Raporu"
author: "Tevfik Bulut"
date: "`r format(Sys.time(), '%d %B %Y')`"
output:
  prettydoc::html_pretty:
    theme: cayman
    highlight: github
    toc: true
    toc_float: false
    #toc_depth: 4
    number_sections: true

Yüklenen Kütüphaneler

Aşağıdaki R kod bloğunun çalıştırılmasından sonra kütüphanelerin yüklenip yüklenmediğine dair aşağıdaki gibi mantıksal vektör sonuçları gelecektir. Eğer mantıksal vektör sonuçlarının hepsi TRUE ise kütüphanelerin hepsini yüklenmiştir demektir. Kolaylık sağlaması açısından yukarıda kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için yukarıdaki kod bloğu içerisinden kısa bir kod yazdım. Bu kod çalıştırıldığında aşağıdaki tabloda görüleceği üzere bütün kütüphaneler yüklenmiştir. Eğer ilgili kütüphane yüklenmemiş olursa “Paket Kurulumu Gerekli” ifadesi satırda yazacaktır. Satırda yazan bu uyarı metnine göre paketi ya kurar yada yüklersiniz. Bir paketin kurulması ile yüklenmesinin aynı şey olmadığını burada ifade etmek gerekir konuyu yabancı olanlar için. Paket kurulumu ilk defa yapılan bir işlem iken, paketin yüklenmesi zaten kurulan bir paketin yüklenmesi yani çalışır duruma getirilmesidir. İlk defa bir paket kurulumu gerçekleştiriliyorsa install.packages() fonksiyonunu, zaten bir paket kurulumu gerçekleştirilmiş ise ilgili paketin veya kütüphanenin yüklenmesi veya okunması için library() veya require() fonksiyonlarını kullanıyoruz. Fonksiyonlardaki parantez () içerisine yüklenecek paket veya kütüphane adını yazıyoruz.


kütüphane&lt;-c(&quot;dplyr&quot;,&quot;tibble&quot;,&quot;tidyr&quot;,&quot;ggplot2&quot;,&quot;ggthemes&quot;,&quot;readr&quot;,&quot;readxl&quot;,&quot;ggpubr&quot;,&quot;formattable&quot;, &quot;ggstance&quot;, &quot;pastecs&quot;,&quot;writexl&quot;, &quot;psych&quot;, &quot;GGally&quot;,&quot;pander&quot;, &quot;rstatix&quot;,&quot;RColorBrewer&quot;, &quot;htmlwidgets&quot;,&quot;kableExtra&quot;,&quot;stargazer&quot;,&quot;readr&quot;, &quot;equatiomatic&quot;)
yükle% mutate(yuklenme_durumu=if_else(yuklenme_durumu==TRUE, "Yuklendi", "Paket Kurulumu Gerekli")) %&gt;% kbl(caption = "Kütüphane Yüklenme Bilgisi") %&gt;% kable_classic_2(full_width = F, html_font="arial")

Tanımlayıcı İstatistikler

mtcars Veri Seti

Çalışma kapsamında R içerisinde bulunan mtcars veri setinden yararlanarak tanımlayıcı ve çıkarımsal istatistikler ortaya konulmuştur.Veri seti 11 değişkenden ve 32 gözlemden oluşmaktadır.

  1. mpg:Mil/(ABD) galon
  2. cyl:Silindir sayısı
  3. disp:Displacement (m.in.)
  4. hp:Brüt beygir gücü
  5. drat:Arka aks oranı
  6. wt:Ağırlık (1000 lbs)
  7. qsec: 1/4 mil zaman
  8. vs:Motor (0 = V şeklinde, 1 = düz)
  9. am:Şanzıman (0 = otomatik, 1 = manuel)
  10. gear: İleri vites sayısı
veri=mtcars
veri %&gt;% kbl() %&gt;% kable_styling()

Tanımlayıcı İstatistikler Tablosu

veri1 &lt;- within(veri, {
   vs &lt;- factor(vs, labels = c(&quot;V&quot;, &quot;S&quot;)) #değişkenin nominal kategorik veri tipine dönüştürülmesi
   am &lt;- factor(am, labels = c(&quot;otomatik&quot;, &quot;manuel&quot;)) #değişkenin nominal kategorik veri tipine dönüştürülmesi
   cyl  &lt;- ordered(cyl) # değişkenin nominal sıra ölçekli veri tipine dönüştürülmesi
   gear &lt;- ordered(gear) # değişkenin nominal sıra ölçekli veri tipine dönüştürülmesi
   carb % kbl(caption = "Tanımlayıcı İstatistikler") %&gt;%
  kable_classic(full_width = F, html_font = "Cambria")

Tanımlayıcı İstatistikler Tablosu Alternatifi

cikarma=names(veri1) %in% c("vs", "am", "cyl","gear", "carb") # tanımlayıcı istatistiklerden çıkarılacak nominal değişkenler

stargazer(veri[!cikarma], type = "text",title="Tablo 1: Sürekli Değişkenlerde Tanımlayıcı İstatistikler Tablosu", digits=1, out="table3.html", flip=T)

Vites türüne göre yakıt tüketimleri ve beygir güçleri

Veri setinde ‘mpg’ değişkeni yakıt tüketimini, ‘am’ değişkeni vites tipini ve ‘hp’ değişkeni ise beygir gücünü göstermektedir.


veri1 %&gt;% ggplot(aes(x=mpg, y=hp, col=(am))) + geom_point()+
    facet_wrap(. ~ am, scales="free_y")+
    theme_economist()+
    theme(legend.position = "none")+
    theme(
      strip.text.x = element_text(
        size = 12, color = "black", face = "bold"
        ))
      

Eşitlik yazma

Eşitlik ortalanmak isteniyorsa eşitliğin soluna ve sağına çift dolar işareti ilave edilir. Eşitlik sola yaslanacaksa soluna ve sağına tek dolar işareti eklenir.

$$X_i$$

Büyüktür işareti

$$ x\ge y$$

Kesirli ifade yazımı

$$\frac{2}{3}$$

$$ x = \frac{-b \pm \sqrt{b^2 – 4ac}}{2a} $$

$$ E = mc^2 $$

Tabakalı örneklemede örneklem büyüklüğü formülü

İlgili değişken kesikli ise aşağıdaki eşitlik örneklem büyüklüüğünün hesaplanmasında kullanılır.

$$ n = \frac{Nt^2pq}{d^2(N-1)+t^2pq} $$

Standart sapma

$$\sigma = \sqrt{\frac{\sum\limits_{i=1}^{n} \left(x_{i} – \bar{x}\right)^{2}} {n-1}}$$

Sayı serilerini toplama

$$x_{1} + x_{2} + \cdots + x_{n}$$

$Y = X\beta + \epsilon$,footnotes^[Doğrusal regresyon modellerinde regresyon eşitliğini göstermektedir.].

Çıkarımsal İstatistikler

Modeli kurma ve eşitliklere dönüştürme

# Doğrusal regresyon modeli
model1 &lt;- lm(mpg ~ am + hp, veri1)
# Teorik modeli gösterme
equatiomatic::extract_eq(model1)

model2 &lt;- lm(mpg ~ am + hp+drat + wt, veri1)

Model 1 katsayılarını gösterme

equatiomatic::extract_eq(model1, use_coefs = TRUE,  wrap = TRUE)

Model 2 katsayılarını gösterme

equatiomatic::extract_eq(model2, use_coefs = TRUE,  wrap = TRUE)

Model 1 ve 2 Özeti

İki model karşılaştırıldığında kurulan 2. modelin açıklayıcılığı 1. modele göre daha yüksektir. Diğer bir ifadeyle düzeltilmiş R^2 (Adjusted R2) 1. modelde % yaklaşık % 76,7 iken 2. modelde % 82’dir.

stargazer(model1,model2, type = &quot;text&quot;, title=&quot;Model Karşılaştırmaları&quot;)

Regresyon Model1 Grafikleri

par(mfrow = c(2,2))
plot(model1)

Regresyon Model2 Grafikleri

par(mfrow = c(2,2))
plot(model2)

Yapılan bu R Markdown çalışmasının özellikle veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunacağı düşünülmektedir.

Çalışmaya ve kod bloklarının uygulama sonuçlarına https://rpubs.com/tevfik1461/Markdown linkinde yer verilmiş olup, buradan yukarıda yapılan işlemleri daha iyi takip edebilir, somut rapor çıktısını inceleyebilirsiniz.

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

  1. https://github.com/yixuan/prettydoc/
  2. https://bookdown.org/yihui/rmarkdown-cookbook/equatiomatic.html
  3. https://rmd4sci.njtierney.com/math
  4. Anderson, Daniel, Andrew Heiss, and Jay Sumners. 2021. Equatiomatic: Transform Models into LaTeX Equations. https://github.com/datalorax/equatiomatic.
  5. https://rpruim.github.io/s341/S19/from-class/MathinRmd.html
  6. https://www.rdocumentation.org/packages/datasets/versions/3.6.2/topics/mtcars
  7. https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html#Add_header_rows_to_group_columns
  8. https://tevfikbulut.com/2020/07/12/rda-multinominal-lojistik-regresyon-uzerine-bir-vaka-calismasi-a-case-study-on-multinominal-logistic-regression-in-r/
  9. https://cran.r-project.org/web/packages/prettydoc/index.html
  10. https://rmarkdown.rstudio.com/docs/
  11. https://rpubs.com/tevfik1461/Markdown

R Markdown raporunun oluşturulmasında kullanılan kodların tamamı kod bloklarıyla birlikte aşağıdaki linkten pdf formatında indirilebilir.

Öne çıkan

Tabakalı Örnekleme Üzerine Bir Simülasyon Çalışması: A Simulation Study on Stratified Sampling

Öncelikle nicel araştırmalarda hedef popülasyon (target population) hakkında çıkarımlarda bulunmak istiyorsak mutlaka olasılıklı örnekleme yöntem veya yöntemlerinin kullanılması gerektiğini belirtelim. Çünkü yapılan tezlerde, yayınlanan bazı makalelerde ya da araştırma raporlarında bu konuya yeterince önem verilmediği ve yada konunun yeterince bilinmediği görülmektedir. Bu durum yapılan bilimsel çalışmanın niteliğinin sorgulanmasına neden olmaktadır.

Olasılıklı örneklemede temel felsefe popülasyonu oluşturan her popülasyon biriminin örnekleme seçilme şansının eşit olmasıdır. Olasılıklı örnekleme yöntemlerinden biri olan tabakalı örnekleme (stratified sampling)’de, popülasyon ya da evren, tabaka adı verilen üst üste binmeyen gruplara bölünür ve her tabaka içindeki bazı tasarımlarla bir örneklem seçilir. Tabakalı örnekleme tasarımları, popülasyondaki her örnekleme birimi için bilinen belirli bir özelliğe dayalı olarak bir popülasyonun tabakalara bölünmesini ve ardından her bir tabakadan bağımsız olarak örneklemlerin seçilmesini içerir. Bu tasarım, farklı tabakalarda örnekleme yöntemlerine esneklik kazandırır ve her tabaka göreceli olarak kendi içerisinde homojen birimlerden oluştuğunda, hedef parametrelerin tahminlerinde iyi kesinlik (precision) elde edilir.

Tabakalı örnekleme tasarımı, popülasyonun belirli bölümlerinin kolayca hedeflenmesini de sağlar. Örneğin, coğrafi bölgeler, habitat türü, yükseklik veya toprak türü gibi bilinen bazı değişkenler aracılığıyla benzer bölgelere ayrılabilir. Bir başka örnek, bir fabrikada monte edilen kusurlu ürünlerin oranlarını belirlemek olabilir. Bu durumda, örnekleme, üretim hatları, fabrika vb. faktörlere göre tabakalandırılabilir. Hatta COVID-19 pandemisinden örnek vermek gerekirse illeri COVID-19 vaka sayılarına göre 4 farklı şekilde tabakalandırabiliriz. Örneğin, mavi rengin az riskli, sarı rengin orta riskli, turuncu rengin yüksek riskli ve kırmızı rengin çok yüksek riskli iller olmak üzere Türkiye’yi 4 farklı tabakaya ayırabiliriz.

Tabakalı örnekleme genellikle tabakalar arasında eşit tahsis ile yapılır. Bu, örneklemdeki tabaka oranlarının popülasyondaki karşılık gelen oranları temsil etmediği anlamına gelir. Bu sorunu çözmek için, her tabaka için o tabaka büyüklüğünün toplam popülasyona oranı (sampling fraction (f)=n/N) olarak tanımlanan tabaka ağırlıkları dikkate alınarak örneklem büyüklüklerinin belirlenmesi gerekir. Bu yapıldığında, her tabaka için tahminler yanlılık (bias) içermez ve ilgili tabaka büyüklükleri ile çarpılan tabaka ağırlıkları (diğer bir ifadeyle f) tabaka büyüklükleri toplamına eşit olan popülasyon (N) tahminleri de yansız olur. Her tabaka için tarafsız bir tahmincinin varlığı, aynı tasarım için tabakadaki tüm olası örneklemler üzerindeki tahminlerin ortalamasının, tahmin edilen gerçek parametreye eşit olduğu anlamına gelir. Tabaka ağırlıkları doğru bir şekilde hesaplanmazsa, tahminde yanlılığa neden olur. Genel olarak, uygun tabakalı bir örneklemin ağırlıklı ortalaması, popülasyondan basit tekrarsız tesadüfi örnekleme (SRSWOR) ile çekilen örneklemin aritmetik ortalamasından daha az değişkenliğe yani varyansa sahiptir. Tabaka ağırlıkları, tabakalı veriler için varyans tahmininde de kullanılabilir.

Tabakalı örneklemenin mantıklı olacağı birkaç ek örnek düşünebilir misiniz? Tabakalı örneklemede amaç, tabakalar içinde homojenliği yani varyansı azaltmaktır. Tabakalar arasında ise heterojenlik söz konusudur. Tabakalı örnekleme çeşitli avantajları nedeniyle çoğu büyük ölçekli araştırmada kullanılmaktadır.

Tabakalı örneklemenin avantajları nelerdir?

  1. Alt popülasyonların tahmini: Nüfus özelliklerinin tahminlerinin sadece tüm popülasyon için değil, aynı zamanda farklı alt popülasyonları için gerekli olduğu durumlarda, bu tür alt popülasyonlar tabaka olarak ele alınmalıdır. Örneğin, ulusal bir işsizlik anketinde, hükümet tüm ülke için ve il düzeyinde işsizlik rakamlarını tahmin etmekle ilgilenebilir. Bu durumda her il bir tabaka olarak alınabilir.
  2. İdari uygunluk: Araştırmayı yürüten kurum, araştırmanın verimli bir şekilde denetlenebilmesi için nüfusu tabakalı hale getirebilir. Örneğin kurum, her tabaka için ayrı ayrı araştırma yapmak üzere ayrı denetmenler atayabilir.
  3. Örneklemin popülasyonu temsil kapasitesi: Tabakalı örneklemede, tabakaların oluşturulması ve örneklemlerin farklı tabakalara atanması, örneklemin çalışılan özelliklere göre popülasyonu temsil edebileceği şekilde yapılabilir. Örneğin, Türkiye’de farklı etnik grupları temsil eden bir okuldan öğrenci örneklemini seçmek istersek, okulun tamamından basit tesadüfi örnekleme (SRSWOR) ile seçilen örneklem temsil edici olmayabilir. Bu durumda, tabaka olarak farklı etnik gruplarını kullanan tabakalı bir örneklemenin, tüm okuldan alınan bir SRSWOR örnekleminden daha temsili bir örneklem olması beklenir.
  4. Etkinlik: Tabakalı örneklemede, her bir tabakanın çalışılan özelliğe göre homojen hale gelmesini sağlayacak şekilde tabakalar oluşturarak tahminlerin etkinliği artırılabilir. İlgili tabakalara uygun örnekleme şemaları, tahmin edicilerin etkinliklerini artırabilir.
  5. İyileştirilmiş veri kalitesi: Farklı tabakalarda farklı araştırmacılar kullanılarak iyileştirilmiş veri kalitesi elde edilebilir. Örneğin, yerel dilleri bilen araştırmacılar kırsal alanlarda görevlendirilebilirken, kentsel alanlarda İngilizce bilen araştırmacılar daha avantajlı olabilir.
  6. Maliyet: Araştırmada gözlem başına maliyet, popülasyon unsurlarının uygun tabakalara ayrılmasıyla azaltılabilir.

Tabakalı örneklemede notasyonlar şöyledir:

L = tabaka sayısı
Nh = her h. tabakadaki popülasyon büyüklüğü
nh = her h. tabakadan çekilen örneklem büyüklüğü
N = popülasyondaki toplam birim sayısı ya da popülasyon büyüklüğü, yani N1 + N2 + … + NL

Kafamızda canlanması adına tabakalı örnekleme yöntemi Şekil 1 üzerinde gösterilmiştir. Şekil 1’de SRSWOR ifadesi basit tesadüfi tekrarsız örnekleme anlamına gelmekte olup bu örnekleme tekniğinin literatürdeki kısaltılışıdır. Şekil 1 tabakalı örneklemeyi ortaya koysa da biraz bahsetmekte fayda vardır. Popülasyon veya evrenden belirlediğimiz birimlerden tabakalara atanmış popülasyon birimleri üzerinden seçim yaparız. Burada tabaka örneklem (n) büyüklükleri eşit tahsis şeklinde olabileceği gibi orantılı tahsis şeklinde de olabilir. Ancak bu iki yaklaşımdan orantılı olanı tabaka örneklemlerinin popülasyondaki tabakaları temsil etmesi açısından daha iyidir ve tabakalar içerisindeki varyansı eşit seçime göre daha da azaltırsınız. Tabaka örneklem büyüklüklerini belirledikten sonra sıra popülasyon tabakalarından örneklem tabakalarına örneklem birimlerinin seçiminde hangi olasılıklı örnekleme yöntemini benimseyeceğimize gelmektedir. Şekil 1’de görüleceği üzere burada araştırma tasarımına bağlı olarak basit tesadüfi tekrarsız örnekleme veya sistematik olasılıklı yöntemlerinden biri seçilebilir. Çalışmanın sonunda yararlanılan kaynaklar kısmında bu iki örnekleme yöntemleri üzerine R programla dili ve Microsoft Excel kullanarak uygulama olarak yaptığım örnek çalışmaların linklerine yer verilmiştir. Buradan bu iki olasılıklı örnekleme yöntemini uygulamalar üzerinden yakından inceleyebilirsiniz.

Şekil 1: Tabakalı Örnekleme Yöntemi

Örnek Uygulama

Tabakalı örneklemeden bahsettikten sonra şimdi uygulama aşamasına geçebiliriz. 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. 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 şöyledir:

Parametre DeğeriKategori
18,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

Yukarıdaki tablodaki göstergelerden oluşturulan popülasyon (N) veri seti üzerinden tabakalı örnekleme yapılmıştır. Söz gelimi araştırma kapsamında bu tabakalarda yer alan bireylerle yüz yüze görüşme (face to face interview) yapılarak bu bireylerin beslenme ve sağlıklı yaşam alışkanlıkları araştırılsın. Çalışmanın sonunda tabakalı örnekleme çalışması simülasyonu paylaşılmıştır. Bu simülasyonda tabaka örneklem büyüklüğünün belirlenmesinden örneklem seçimine kadar pek çok konu bulunmaktadır. Zaten simülasyonu inceleyince konuyu çok yüksek ihtimalle ayrıntılı bir şekilde öğrenmiş olacaksınız. Tablo 1’de BKİ (Beden Kitle Endeksi) değerleri kategorize edilmiş ve tabaka olarak alınmıştır. Tabaka sayımız yani L=6, popülasyon büyüklüğü (N) ise 1000’dir.

Tablo 1: Tabakalar (L=6) ve Büyüklükleri

TabakaN
Zayıf257
Normal Kilolu161
Fazla Kilolu119
I.Derece Obez114
II.Derece Obez122
III.Derece Morbid Obez227
Toplam1000

Tabaka örneklemlerinin popülasyonu ve popülasyon tabakalarını daha iyi temsil etmesini istediğimiz için orantılı tahsis yöntem ile tabaka örneklem büyüklüklerini belirliyoruz. Ancak tabaka örneklem büyüklüğüne geçmeden önce popülasyon büyüklüğünün bilindiğinden hareketle popülasyondan çekilecek örneklem büyüklüğünü aşağıda yazılan eşitlikle hesaplayalım.

Aşağıdaki eşitlikte kullanılan parametreler içerisinde

N=Popülasyon büyüklüğünü

n=Örneklem büyüklüğünü

p= Olayın görülüş olasılığını

q= (1-p) = Olayın görülmeme olasılığını

t= t tablo değerini

d= Tolerans seviyesini

göstermektedir.

Örneklem büyüklüğünün hesaplanmasında bilinen parametreler aşağıdakiler olsun:

N=1000

p=0,05

q=0,05

t=1,96

d=0,05

Verilenlere göre popülasyondan çekilecek örneklem büyüklüğünü hesaplayalım.

Bu çalışmada söz gelimi popülasyondan çekeceğimiz örneklem büyüklüğü (n) yaklaşık 278’dir. Tabakaların örneklem büyüklüklerini hesaplamak için bu aşamada yapılacak ilk işlem tabaka ağırlığı (w)’nın hesaplanmasıdır. Tabaka ağırlığı, n/N eşitliği ile hesaplanmaktadır. Bu çalışmada belirlenen tabaka ağırlığı (w) = n/N=277,7/1000=0,2777‘dir.

Daha sonra bu ağırlık katsayısı ile tabaka büyüklüğü (Ni) çarpılarak tabaka örneklem büyüklükleri belirlenmektedir. Bu durumda tabakalara göre hesaplanan örneklem büyüklükleri Tablo 2’de verilmiştir. Burada somutlaştırmak adına Zayıf tabakasının örneklem büyüklüğünü hesaplayalım.

  • Zayıf tabakası (n1) için örneklem büyüklüğü n1=(257x 0,2777=71‘dir. Bu işlem diğer tabakalara da uygulanırsa Tablo 1’de en sağ sütundaki sonuçlar elde edilmiş olur.
  • Tabaka örneklem büyüklükleri belirlendikten sonra sıra tabaka örneklem (n) büyüklüklerine göre tabakalardan örneklem birimlerini seçmeye gelmiştir. Bu aşamada olasılıklı örnekleme yöntemlerinden biri olan basit tesadüfi tekrarsız örnekleme (SRSWOR) veya sistematik örnekleme yöntemini kullanabilirsiniz. Bu çalışmada kullanılan olasılıklı örnekleme yöntemi SRSWOR’dur. Bu örnekleme yönteminde tabakalardaki popülasyon birimlerinin her birine tabaka örneklemlerine eşit seçilme şansı veriyoruz.

Tablo 2: Tabakalar (L=6) ve Tabaka Örneklem (n) Büyüklükleri

TabakaNÖrneklem (n) Büyüklüğü
Zayıf25771,0
Normal Kilolu16145
Fazla Kilolu11933
I.Derece Obez11432
II.Derece Obez12234
III.Derece Morbid Obez22763
Toplam1000278

Bahsedilenler Şekil 2 üzerinde de özetlenmiştir.

Şekil 2: Tabakalı Örnekleme Uygulaması

Örnek uygulamadaki yapılanları ve tabaka örneklem birimlerinin seçimini göstermesi adına örneklem büyüklüğü (n) 278’de sabitlenmiş olup, aşağıda Microsoft Excel uzantılı (xlsx) olarak paylaşılmıştır. Buradan bu dokümanı indirebilirsiniz.

Örnek uygulama üzerinden hazırladığım simülasyon çalışması da aşağıda Microsoft Excel uzantılı (xlsx) olarak paylaşılmıştır. Burada örneklem büyüklüğü (n) tesadüfi bir şekilde belirlenmekte olup, çalışmalarınıza da uyarlayabilirsiniz. Bu simülasyonda örneklem büyüklüğünü sizin belirlemenize gerek bulunmamaktadır. =RASTGELEARADA(300;750) fonksiyonu ile 300 ile 750 arasında tesadüfi bir şekilde örneklem büyüklüğü belirlenmektedir. Aynı zamanda çalışma içerisinde F9 tuşuna basılı tutarak simulasyondan basit tekrarsız tesadüfi örnekleme yöntemiyle yeni örneklem birimleri seçebilirsiniz. Özellikle bu simülasyon çalışmasının sahada ve akademide faaliyet gösteren çalışanlara çok faydalı olacağı düşünülmektedir. Bu çalışmanın içerisinde olasılıklı örneklem seçiminden örneklem büyüklüğünün belirlenmesi kadar pek çok konu mevcuttur.

Buradan simülasyon çalışmasını indirebilirsiniz.

Simülasyon çalışmasında bazı sayfalardaki formüller şifre ile korunmuştur. Değişiklik yapılması istenmesi durumundan sayfa korumasının kaldırılması için şifre olarak “tevfik” girilmesi yeterlidir. Özellikle bu simülasyon çalışmasının sahada ve akademide faaliyet gösteren çalışanlara çok faydalı olacağı düşünülmektedir. Bu çalışmanın içerisinde olasılıklı örneklem seçiminden örneklem büyüklüğünün belirlenmesine kadar pek çok konu mevcuttur. Bu simülasyonda örneklem büyüklüğünü tesadüfi bir şekilde belirlendiğinden sizin belirlemenize gerek bulunmamaktadır.

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

Öne çıkan

Z Tablosuna Göre Güven Aralığının Hesaplanmasına Yönelik Bir Simülasyon Çalışması: A Simulation Study for Calculating Confidence Interval by Z Table

Güven aralıkları ingilizce ifadeyle confidence interval (CI) hem sahadan veri toplama yöntemleriyle elde edilen birincil verilerin hem de veri tabanlarından elde edilen işlenmiş ikincil verilerin analizinde çok yoğun bir şekilde kullanılmaktadır. Peki nedir bu güven aralığı? Güven aralığının hesaplanması için hangi parametrelere ihtiyaç vardır? Güven aralığı nasıl hesaplanır? Güven aralığını etkileyen faktörler nelerdir? Tanımlayıcı ve çıkarımsal istatistiklerin rolü nedir? Hipotez testlerinde yapılan hatalar nelerdir? Bu çalışmada bahsedilen bu sorulara cevaplar bulunacaktır. Bu amaçla olasılıklı örneklem yöntemlerinden biri olan ön yargısız (without bias) basit tesadüfi tekrarsız örneklem yöntemi kullanılmıştır. Basit tekrarlı örneklem yöntemi ile ise rastgele beden kitle endeksi verileri üretilmiştir. Üretilen bu sentetik veriler üzerinden deneysel güven aralığı çalışması hazırlanmıştır. Diğer programlama dilleri kullanılarak veya paket programlar üzerinde de bu çalışmanın yapılması her zaman mümkündür. Bunu da yapabilirdim ancak Microsoft Office Excel 2016 kullanılarak güven aralığı çalışması yapılmasının daha uygun olacağını düşündüm. Bunun nedeni excel üzerinde okuyucuya fonksiyon (formül) etkileşimleri gösterilerek konu hakkında daha fazla katkı sunulması amaçlanmasıdır. İki farklı güven aralığı çalışmasına yer verilmiştir. İlkinde güven aralığı çalışmasında elde edilen değerler sabitlenmiştir. İkincisi ise simülasyona izin verecek dinamik bir şekilde excel uzantılı dosya içerisinde sunulmuştur.Bunun nedeni seçilen örneklemlerdeki parametre ve güven aralıkları değişimlerinin karşılaştırmalı ve dinamik olarak sunulmak istenmesidir.

Tanımlayıcı istatistiklerin rolü nedir?

Adından da anlaşılacağı gibi, tanımlayıcı istatistikler (descriptive statistics) bir veri kümesini tanımlar. Burada, bir araştırmacının bir veri seti hakkında bilmek isteyebileceği üç şeyi nasıl belirleyeceğimizi tartışıyoruz:

  1. Merkezi eğilim noktaları,
  2. Değişkenlik miktarı (varyans derecesi)
  3. İki veya daha fazla değişkenin birbiriyle ilişkilendirilme derecesi.

Merkezi Eğilim Ölçüleri

Merkezi bir eğilim noktası, verilerin etrafında döndüğü bir noktadır, belirli bir değişkenle ilgili verilerin etrafında dolaştığı bir orta sayıdır. İstatistik dilinde, böyle bir noktayı belirleme tekniklerine atıfta bulunmak için merkezi eğilim ölçüleri terimini kullanıyoruz. Merkezi eğilimin yaygın olarak kullanılan üç ölçüsü mod, medyan (ortanca) ve ortalamadır ve her biri kendi özelliklerine ve uygulamalarına sahiptir.

Mod, en sık meydana gelen tek sayı veya puandır. Ortanca, bir puan setinin sayısal merkezidir. Ortalama ise belirli bir değişken için puanların aritmetik ortalamasıdır. Hesaplamak için tüm puanların toplamını hesaplıyoruz (her gerçekleştiğinde her puanı ekliyoruz) ve ardından toplam puan sayısına bölüyoruz.

Ortalama ayrıca istatistiksel analizlerde ve araştırma raporlarında en yaygın olarak kullanılan merkezi eğilim ölçüsüdür. Bununla birlikte, yalnızca aralık veya oran verileri için uygundur, çünkü yalnızca sayılar belirli bir ölçek boyunca eşit aralıkları yansıttığında bir ortalamayı hesaplamak matematiksel olarak mantıklıdır.

Medyan, sıralı verilerde daha uygundur. Medyan, bir araştırmacı bir yönde veya diğerinde oldukça çarpık bir veri kümesiyle uğraşırken de sıklıkla kullanılır. Medyanlar genellikle aile geliri ve finansal varlıkların düzeylerinde merkezi eğilimi yansıtmak için kullanılır; çoğu aile geliri ve hane halkı varlıkları ölçeğin alt ucunda kümelenmiştir ve yalnızca çok azı bu aralıkta yayılmıştır. Buradan medyanın uç değerlerden etkilenmediği anlaşılmaktadır.

Her durumda, temel bir ilke geçerlidir: Verilerin konfigürasyonu, o özel durum için en uygun merkezi eğilim ölçüsünü belirler. Veriler normal dağılım gösteren bir eğriye yaklaşan bir dağılıma yakınsarsa, bir merkezi eğilim ölçüsü gerektirirler. Eğer bir ogive-eğri niteliğine sahiplerse (bir büyüme durumunun özelliği), başka bir ölçüt gerekir. Birden fazla zirveye sahip olan çok modlu bir dağılım, yine de üçüncü bir yaklaşımı gerektirebilir; örneğin, araştırmacı onu iki veya daha fazla mod açısından tanımlayabilir. Araştırmacı, ancak verilerin özelliklerinin dikkatli ve bilinçli bir şekilde değerlendirilmesinden sonra en uygun istatistiği seçebilir.

Bu nedenle, veri analizlerinde istatistik kullanan araştırmacılar için temel bir kuralı vurgulamalıyız: Verilerin doğası istatistiksel tekniği belirler, tersi bir durum geçerli değildir. Tıpkı doktorun belirli hastalıklar ve bozukluklar için hangi ilaçların mevcut olduğunu bilmesi gerektiği gibi, araştırmacının da belirli araştırma taleplerine hangi istatistiksel tekniklerin uygun olduğunu bilmesi gerekir. Tablo A, her bir ölçünün uygun olduğu çeşitli veri türleri ile birlikte merkezi eğilim ölçüleri ve kullanımlarının bir özetini sunmaktadır.

Tablo A: Farklı Veri Türleri İçin Merkezi Eğilim Ölçülerini Kullanma

Merkezi Eğilim ÖlçüsüNasıl Belirlenir (N = puan sayısı)Uygun Olduğu Veriler
ModEn sık meydana gelen puan belirlenir.● Nominal, sıra, aralık ve oran ölçek türündeki veriler
● Çok modlu dağılımlar (bir dağıtımın birden fazla zirvesi olduğunda iki veya daha fazla mod tanımlanabilir)
MedyanPuanlar en küçükten en büyüğe sıralanır ve orta puan (N tek sayı olduğunda) veya iki orta puan arasındaki orta nokta (N çift sayı olduğunda) belirlenir.● Sıra, aralık ve oran ölçekleriyle ilgili veriler
● Oldukça çarpık veriler
Aritmetik ortalamaTüm puanlar toplanır ve toplamları toplam puan sayısına (N) bölünür.● Aralık ve oran ölçekleriyle ilgili veriler
● Normal dağılım gösteren veriler
Geometrik OrtalamaTüm puanlar birlikte çarpılır ve çarpımlarının N’inci kökü hesaplanır.● Oran ölçekleriyle ilgili veriler
● Bir büyüme (ogive) eğrisine yakın olan veriler (Örneğin, büyüme verileri)

Kaynak: Leedy ve Ormrod (2021). Practical Research: Planning and Design

Değişkenlik Ölçüleri: Dağılım ve Sapma

Veri merkezi eğilim noktası etrafında ne kadar çok kümelenirse, belirli bir veri noktasının nerede olduğuna dair doğru bir tahminde bulunma olasılığı o kadar artar. Şekil A’da gösterildiği gibi, ortalamaya yakın kümelenirlerse veriler daha benzerdir. Onları dağıtın ve tekdüzeliklerinin bir kısmını kaybederler; daha çeşitli, daha heterojen hale gelirler. Belirli veri noktaları ortalamadan uzaklaştıkça, kendilerini “ortalama” yapan kaliteyi giderek daha fazla kaybederler.

Şekil A: Değişkenlikte Farklılaşan Dağılımlar

Kaynak: Leedy ve Ormrod (2021). Practical Research: Planning and Design

Değişkenliğin en basit, en açık göstergesi, verilerin en düşük değerden en yüksek değere yayılmasını gösteren aralıktır:

Aralık = En yüksek puan – En düşük puan.

Aralığın hesaplanması kolay olmasına rağmen, değişkenliğin bir ölçüsü olarak sınırlı kullanışlılığa sahiptir ve aşırı üst veya alt sınırlar serideki diğer değerlerden atipik ise yanıltıcı olabilir.

Diğer değişkenlik ölçüleri, başlangıç noktası olarak daha az uç değerler kullanır. Böyle bir ölçü, çeyrekler arası aralıktır. Dağılımı dört eşit parçaya bölersek, 1. çeyrek grup üyelerinin % 25’inin altında olduğu bir noktada yer alır. 2. Çeyrek, grubu iki eşit parçaya böler ve medyan ile aynıdır. 3. çeyrek, değerlerin % 75’inin altında olduğu bir noktada yer alır. Çeyrekler aralığı, Çeyrek 3 (75. yüzdelik nokta) eksi Çeyrek 1’e (25. yüzdelik nokta) eşittir:

Çeyrekler arası aralık = 3. Çeyrek – 1. Çeyrek

Böylece, çeyrekler arası aralık bize dağılımdaki vakaların % 50’si için aralığı verir. Çeyrekler medyan ile ilişkili olduğundan, merkezi eğilim ölçüsü olarak medyanı kullanan herhangi bir araştırmacı, çeyrek sapmayı da değişkenlik için olası bir istatistiksel ölçü olarak dikkate almalıdır. Sıralı verilerle veya çok çarpık verilerle çalışırken, bazı araştırmacılar, en düşük ve en yüksek sayıların yanı sıra Çeyrek 1, ortanca (aynı zamanda Çeyrek 2’dir) ve Çeyrek 3’ten oluşan beş göstergeyi raporlar.

Şimdi bunun yerine ortalamayı başlangıç noktası olarak kullanalım. Her bir puanın ortalamadan ne kadar uzakta olduğunu belirlediğimizi hayal edin. Yani, her puan ile ortalama arasındaki farkı hesaplıyoruz (bu farka sapma diyoruz). Tüm bu farkları toplarsak (artı ve eksi işaretlerini göz ardı ederek) ve ardından toplamı puan sayısına bölersek (bu, puan ortalaması farklılıklarının sayısını da yansıtır), herhangi bir puan ile ortalama arasındaki farkların ortalamasını alırız. Bu işlem bazen ortalama sapma (AD) olarak adlandırılır. Ortalama sapma eşitliği:

Burada | X – M |, artı ve eksi işaretleri dikkate alınmadan X-M anlamına gelir. Diğer bir deyişle, her bir puan ile ortalama arasındaki farkın mutlak değeridir.

Ortalama sapma kolayca anlaşılır ve bu nedenle bazı anlamlar içerir. Başka bir istatistiksel prosedür düşünülmediğinde kabul edilebilir. Birincil zayıflığı, mutlak değerleri kullanmasıdır. Bunun yerine, hesapladığımız puanda artı ve eksi işaretlerini tutarsak ne olacağını hayal edin. Ortalamanın solunda bulunan (ve dolayısıyla ortalamadan daha küçük bir değere sahip olan) herhangi bir sayı için, sayı ile ortalama (X-M) arasındaki fark negatif bir sayı olacaktır. Buna karşılık, ortalamanın sağında bulunan herhangi bir sayı, pozitif bir X-M değeri verir. Tüm olumlu ve olumsuz sapmaları bir araya getirdiğimizde, birbirlerini tamamen dengeleyecekler, esasen birbirlerini “iptal edecekler” ve genel bir sıfır toplamı vereceklerdi. Ortalama sapma, artıları ve eksileri göz ardı ederek bu sorunu ortadan kaldırır. Yine de bu oldukça şüpheli bir prosedürdür. Sevmediğimiz şeyleri görmezden gelmek ne sağlam matematik ne de sağlam araştırma uygulamasıdır.

Ortalama sapma formülünden farklı olarak, standart sapma formülü, mutlak değerle negatifleri pozitiflere dönüştürür. Daha spesifik olarak formül, puan-ortalama farklılıklarının her birinin karesinin alınmasını gerektirir. Örneğin, (X-M)2.

Aritmetikte, negatif bir sayıyı kendisiyle çarptığımızda, sonuç pozitif bir sayıdır. Elbette aynı şey pozitif bir sayının karesini almak için de geçerlidir; dolayısıyla, pozitif farklılıkları dengelemek için negatif puan – ortalama farkı bu durumda yoktur.

Standart bir sapmayı hesaplamak için (sırasıyla bir popülasyon parametresi ve örneklem istatistiği için σ veya s olarak sembolize edilir), ortalama sapmanın hesaplanmasına benzer bir prosedür izliyoruz. Bununla birlikte, puanın mutlak değerlerini elde etmek yerine – ortalama farklar, bu farkların her birinin karesini alırız. Daha sonra tüm farkların toplamını (Σ) hesaplıyoruz, bu toplamı puan sayısına böleriz ve son olarak yeni elde edilen bölümün karekökünü buluruz. Bu nedenle, popülasyon standart sapmanın formülü aşağıdaki gibidir:

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

Standart sapma, istatistiksel prosedürlerde en yaygın olarak kullanılan değişkenliğin ölçüsüdür. Birçok istatistiksel prosedür, standart sapmaya ek olarak veya bunun yerine ikinci, ilgili bir değişkenlik ölçüsü kullanır. Bu istatistik, basitçe standart sapmanın karesi olan varyans olarak bilinir:

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

Normal ve normal olmayan dağılımların karakteristikleri nelerdir?

Genel olarak normal dağılım veya normal eğri olarak adlandırılan bu model için çan eğrisi terimini de görebilirsiniz. Normal dağılımın birkaç ayırt edici özelliğe sahiptir:

  • Yatay olarak simetriktir. Bir taraf, diğer tarafın aynadaki yansımasıdır, yani eğri simetriktir.
  • En yüksek noktası orta noktasıdır. Daha fazla insan (veya araştırmanın odağı olan diğer birimler), eğri boyunca başka herhangi bir noktada olduğundan daha tam ortada yer alır. İstatistiksel terimlerle, merkezi eğilimin yaygın olarak kullanılan üç ölçüsü, mod, medyan ve ortalama (tümü kısaca açıklanacak) bu noktada birbirine eşittir.
  • Nüfusun tahmin edilebilir yüzdeleri, eğrinin her iki bölümünde bulunur. Eğriyi standart sapmasına göre bölersek (ayrıca kısaca açıklanacaktır), popülasyonun belirli yüzdelerinin her iki kısmında yer aldığını biliyoruz. Özellikle, popülasyonun yaklaşık % 34,1’i ortalama ile ortalamanın altındaki bir standart sapma arasındadır ve diğer % 34,1’i ortalama ile ortalamanın üzerindeki bir standart sapma arasındadır. Nüfusun yaklaşık % 13,6’sı ortalamanın altında bir ila iki standart sapma arasında yer alırken, diğer % 13,6’sı ortalamanın üzerinde bir ve iki standart sapma arasında yer alır. Kalan % 4,6, dağılımın her bir ucunda % 2,3 ile ortalamadan iki veya daha fazla standart sapma uzaktadır. Bu model Şekil B’de gösterilmektedir. Normal dağılımın herhangi belirli bir bölümünde yer alan nüfus oranları, çoğu giriş istatistik kitabında bulunabilir.

Şekil B: Normal Dağılımın İki Kısmındaki Yüzdeler

Kaynak: Leedy ve Ormrod (2021). Practical Research: Planning and Design

Ancak bazen veriler normal bir dağılımı yansıtmaz. Örneğin, dağılımları orantısız veya çarpık olabilir. “Çarpıklık”, dağılımın biraz daha bir tarafa uzanan kısmıdır. Tepe orta noktanın solunda yer alıyorsa, dağılım pozitif olarak çarpıktır; tepe orta noktanın sağında yer alıyorsa, dağılım negatif olarak çarpıktır. Ya da belki bir dağılım alışılmadık derecede sivri veya düzdür, öyle ki dağılımın her bir bölümündeki yüzdeler Şekil B’de gösterilenlerden önemli ölçüde farklıdır. Burada, bir leptokürtik dağılımı yansıtan alışılmadık şekilde sivri bir dağılımla ve alışılmadık derecede düzleşen platikürtik bir dağılım olan basıklıktan bahsediyoruz (Bkz. Şekil C).

Şekil C: Normal Dağılımdan Ayrılışlar

Kaynak: Leedy ve Ormrod (2021). Practical Research: Planning and Design

Parametrik ve parametrik olmayan istatistikler arasında neden seçim yaparız?

İstatistiksel prosedürler seçiminiz, bir dereceye kadar verilerinizin yapısına ve bunların normal dağılımı ne ölçüde yansıttığına bağlı olmalıdır. Parametrik istatistikler olarak bilinen bazı istatistikler, söz konusu popülasyonun doğası hakkında belirli varsayımlara dayanmaktadır. En yaygın varsayımlardan ikisi şunlardır:

  • Veriler aralık veya oran ölçeğinde olmalıdır.
  • Veriler normal bir dağılım göstermelidir (örneğin, dağılımın merkezi bir yüksek noktası vardır ve ciddi şekilde çarpık, leptokurtik veya platikurtik değildir).

Bu varsayımlardan herhangi biri ihlal edildiğinde, parametrik istatistiklerden elde edilen sonuçlar hatalı olabilir.

Buna karşılık, parametrik olmayan istatistikler bu tür varsayımlara dayalı değildir. Örneğin, bazı parametrik olmayan istatistikler, doğası gereği aralıktan ziyade sıralı olan veriler için uygundur. Diğerleri, bir popülasyon bir yönde veya diğerinde oldukça çarpık olduğunda yararlı olabilir.

“Veriler hakkında herhangi bir varsayımda bulunmaktan (ve muhtemelen ihlal etmekten) kaçınmak için neden her zaman parametrik olmayan istatistikleri kullanmıyorsunuz?” diye düşünüyor olabilirsiniz. Nedeni basit: En karmaşık ve güçlü çıkarımsal istatistiklerimiz parametrik istatistiklere dayanmaktadır. Parametrik olmayan istatistikler, genel olarak, yalnızca nispeten daha basit analizler için uygundur.

İyimser bir not olarak, bazı istatistiksel prosedürlerin belirli varsayımlar açısından sağlam (robust) olduğunu belirtmeliyiz. Yani, bir varsayım karşılanmadığında bile genellikle geçerli sonuçlar verirler. Örneğin, belirli bir prosedür normal dağılımda olduğu gibi leptokürtik veya platikürtik dağılım için de geçerli olabilir, yani aralık verilerinden ziyade sıralı verilerle bile geçerli olabilir.

Çıkarımsal istatistiklerin rolü nedir?

Çıkarımsal (inferential) istatistikler, nispeten küçük örneklemlerden büyük popülasyonlar hakkında çıkarımlar yapmamızı sağlar. Daha spesifik olarak, çıkarımsal istatistiklerin iki ana işlevi vardır:

  1. Rastgele bir örneklemden bir popülasyon parametresini tahmin etmek,
  2. İstatistiksel temelli hipotezleri test etmek

Özellikle nicel araştırma yaptığımızda çoğu kez, örneklemin alındığı daha büyük popülasyon hakkında bilgi edinmek için bir örneklem kullanıyoruz. Tipik olarak, çalıştığımız örneklem için çeşitli istatistikleri hesaplıyoruz. Çıkarımsal istatistikler bize bu örneklem istatistiklerin genel popülasyonun parametrelerine ne kadar yakın olduğunu söyleyebilir. Örneğin, genellikle merkezi eğilim (örneğin, ortalama veya μ), değişkenlik (örneğin, standart sapma veya σ) ve oran (P) ile ilgili popülasyon parametrelerini tahmin etmek isteriz. Popülasyondaki bu değerler, örneklemdeki M veya X, s ve p parametreleri ile karşılaştırılır.

Buradaki sorun, örneklem istatistikleri temelinde popülasyon yani evren parametrelerini belirlemektir. Popülasyon parametrelerinin istatistiksel tahminleri, örneklemin tesadüfi seçildiği (mutlaka olasılıklı örnekleme yöntemi olmalı) ve toplam popülasyonu temsil ettiği varsayımına dayanmaktadır. Yalnızca tesadüfi, temsili bir örneklem olduğunda, istatistiklerimizin popülasyon parametrelerini ne kadar yakından tahmin ettiğine dair makul tahminlerde bulunabiliriz. Bir örneklem rastgele olmadığı ve dolayısıyla temsili olmadığı ölçüde – seçimi bir şekilde önyargılı olduğu ölçüde – hesapladığımız istatistikler, örneklemin alındığı popülasyonu yansıtmaz.

Popülasyonlardan gelen tesadüfi örneklemler – lütfen burada tesadüfi kelimesine dikkat edin – seçildikleri popülasyonlarla kabaca aynı özellikleri gösterir. Bu nedenle, örneklemimizin ortalama yüksekliğinin, genel popülasyonun ortalamasıyla yaklaşık olarak aynı olmasını beklemeliyiz. Ancak tam olarak aynı olmayacaktır.

Farklı örneklemler – her biri aynı popülasyondan rastgele seçilse bile – neredeyse kesinlikle o popülasyon hakkında biraz farklı tahminler verecektir. Popülasyon ortalaması ile örneklem ortalaması arasındaki fark, tahminimizde bir hata oluşturur. Popülasyonun tam olarak ne anlama geldiğini bilmediğimiz için tahminimizde ne kadar hata olduğunu da bilmiyoruz. Ancak üç şey biliyoruz:

  1. Sonsuz sayıda rastgele örneklemlerden elde edebileceğimiz ortalamalar normal bir dağılım oluşturur.
  2. Örneklemlerin ortalamalarının ortalaması, örneklemlerin alındığı popülasyonun ortalamasına eşittir (μ). Başka bir deyişle, popülasyon ortalaması, tüm örneklem ortalamalarının ortalamasına eşittir.
  3. Örneklem ortalamalarının dağılımının standart sapması, genel popülasyon için ölçülen değişkenin – tüm ortalamalarını hesapladığımız değişken – standart sapmasıyla doğrudan ilgilidir.

Nokta tahminleri mi yoksa aralık tahminleri mi?

Popülasyon parametrelerini tahmin etmek için örneklem istatistikleri kullanırken, iki tür tahmin yapabiliriz: nokta tahminleri ve aralık tahminleri.

Nokta tahmini, popülasyon parametresinin makul bir tahmini olarak kullanılan tek bir istatistiktir; örneğin, popülasyon ortalamasına yakın bir yaklaşım olarak örneklem ortalamasını kullanabiliriz. Nokta tahminlerinin kesin olma gibi görünen faydası olsa da, aslında bu kesinlik yanıltıcıdır. Bir nokta tahmini tipik olarak popülasyondaki eşdeğeriyle tam olarak uyuşmaz.

Daha doğru bir yaklaşım – yine de % 100 güvenilir olmasa da – parametrelerin aralık tahminlerini belirlemektir. Özellikle, bir popülasyon parametresinin muhtemelen içinde bulunduğu bir aralığı belirleriz ve gerçekte orada olma olasılığını belirtiriz. Bu tür bir aralığa genellikle güven aralığı denir, çünkü tahmine belirli bir olasılık seviyesi ekler. Yani, güven aralığı, tahmin edilen aralığın popülasyon parametresini içerdiğine dair belirli bir güven seviyesidir.

Hipotez testlerindeki hatalar nelerdir?

Elbette, belirli bir sonucun tek başına tesadüflerin sonucu olmadığına karar verdiğimizde hata yapmamız mümkündür. Aslında, herhangi bir sonuç muhtemelen tesadüflere bağlı olabilir; Örneğimiz, rastgele seçilmesine rağmen, sadece çekilişin şansı aracılığıyla atipik özellikleri gösteren bir şans olabilir. Aslında bir sonucun şans eseri olduğu halde bir sonucun şans eseri olmadığı sonucuna varırsak, yani eğer boş hipotezi yanlış bir şekilde reddedersek Tip I hatası yapıyoruz (alfa hatası da denir).

Başka bir durumda ise bir sonucun aslında tesadüflerden kaynaklandığı sonucuna varabiliriz. Böyle bir durum, aslında yanlış olan boş bir hipotezi reddetmeyi başaramadığımız durumdur. Bu durum, beta hatası olarak da bilinen Tip II hatasıdır. Örneğin, yeni bir ilacın, insanların kanındaki düşük yoğunluklu lipoprotein kolesterolü (“kötü” kolesterol türü) azaltmadaki etkilerine karşı plasebonun göreli etkilerini test ettiğimizi hayal edin. Belki de yeni ilacı alan kişilerin ortalama olarak, plasebo alanlara göre daha düşük bir kolesterol seviyesine sahip olduğunu görürüz, ancak fark küçüktür. Sadece şansa bağlı olarak 100 üzerinden 25 kez böyle bir farkın ortaya çıkabileceğini keşfederiz ve bu nedenle boş hipotezi muhafaza ederiz. Gerçekte, ilaç, kolesterolü bir plasebodan daha fazla düşürüyorsa, Tip II hatası yapmış oluruz.

İstatistiksel hipotez testi tamamen bir olasılık meselesidir ve her zaman Tip I veya Tip II hata yapma şansımız vardır. Önem düzeyimizi, örneğin 0,05’ten 0,01’e veya belki daha da düşük bir düzeye düşürerek Tip I hata yapma olasılığını azaltabiliriz. Bununla birlikte, bunu yapma sürecinde, Tip II hata yapma olasılığımızı artırıyoruz – aslında yanlış olan boş bir hipotezi reddetmekte başarısız olacağız. Tip II hata olasılığını azaltmak için, anlamlılık düzeyimizi (α) artırmamız gerekir; bu, sıfır hipotezini reddetme olasılığını artırdığı için, aynı zamanda Tip I hata olasılığını da artırır. Açıkçası, o zaman Tip I ve Tip II hataları arasında bir denge vardır: Birini yapma riskini her azalttığınızda, diğerini yapma riskini artırırsınız.

Yeni bir araştırmacı için önemsiz sonuçlar elde etmek son derece sinir bozucu olabilir – istatistiksel bir bakış açısıyla, sadece tesadüflere bağlı olanlar. Aşağıda, Tip II hata yapma olasılığını azaltmak ve böylece yanlış bir sıfır hipotezini doğru bir şekilde reddetme olasılığını artırmak için dört öneri bulunmaktadır. Başka bir deyişle, bunlar istatistiksel bir testin gücünü artırmak için önerilerdir:

  • Mümkün olduğu kadar büyük bir örneklem kullanın. Örneklem ne kadar büyükse, hesapladığınız istatistikler gerçek popülasyon parametrelerinden o kadar az farklılık gösterir.
  • Değerlendirme araçlarınızın geçerliliğini ve güvenilirliğini en üst düzeye çıkarın. Bir araştırma çalışmasındaki değerlendirme araçları nadiren mükemmel (% 100) geçerliliğe ve güvenilirliğe sahiptir, ancak bazı araçlar diğerlerinden daha geçerli ve güvenilirdir. Yüksek geçerlilik ve güvenilirliğe sahip araçları veya diğer değerlendirme stratejilerini kullanan araştırma projelerinin istatistiksel olarak anlamlı sonuçlar vermesi daha olasıdır.
  • Mantıksal olarak savunulabilir ve lojistik olarak pratikse, bağımlı değişkeninizin tekrarlanan ölçümlerini elde edin. Diğer şeyler eşit ya da sabit olduğunda, her katılımcı için belirli bir davranış veya özelliğin tekrarlanan ölçümleri istatistiksel analizlerin gücünü artırır. Tekrarlanan ölçümler, (a) her bir katılımcı için genel değerlendirme puanlarının güvenilirliğini artırarak ve/veya (b) değerlendirme puanlarındaki olası değişkenlik kaynakları olarak konular arasındaki farklılıkları istatistiksel olarak kontrol ederek istatistiksel gücü artırır.
  • Mümkün olduğunca parametrik olmayandan ziyade parametrik istatistikleri kullanın. Genel bir kural olarak, parametrik olmayan istatistiksel prosedürler parametrik tekniklerden daha az güçlüdür. “Daha az güçlü” ile parametrik olmayan istatistiklerin tipik olarak, araştırmacının boş bir hipotezi reddetmesini sağlayan sonuçlar elde etmek için daha büyük örnekler gerektirdiğini kastediyoruz. Verilerin özellikleri parametrik istatistik varsayımlarını karşıladığında bu istatistikleri kullanmanızı tavsiye ederiz.

Güven aralığı nedir?

Maliyetlerin yüksekliği, uzun zaman alması, güncel ve derinlemesine veri elde edilmesi gibi temel öncelikler esas alınarak sıklıkla kişiler ya da kurumlar popülasyonun tamamının yerine bu popülasyonu temsil eden örneklem üzerinde araştırma yapmayı tercih ederler. Ancak seçilen örneklemin popülasyonun tamamını temsil etmesi isteniyorsa yeterli örneklem büyüklüğü (n) belirlenerek mutlaka olasılıklı örneklem yöntemlerinden biri veya birkaçı birlikte kullanılmalıdır. Popülasyonun tamamı yerine bu popülasyondan seçilen örneklem söz konusu olunca örneklem popülasyonu ne kadar temsil ediyor sorusu ortaya çıkmaktadır. Güven aralığı ise aslında tam da bize bunu söylemektedir. Güven aralığı, popülasyon ortalamasının tahmincisi olup, bize örneklem ortalamalarının popülasyon ortalamasından ne kadarlık bir sapma olduğunu göstermektedir. Güven aralığının bir alt limit (lower bound)’i ve üst limit (upper bound)’i vardır. Bu alt ve üst limitlerin olması güven aralığına adını vermektedir. Yani örneklemden elde edilen güven aralıkları popülasyon ortalamasını mutlaka içerecektir. Burada güven aralığındaki alt ve üst limitin yorumlanması önem arz etmektedir. Alt ve üst limitler arasında fark ne kadar az ise, diğer bir deyişle güven aralığı genişliği (CI Width) ne kadar dar ise örneklem ortalaması popülasyon ortalamasına o kadar yakın ve popülasyon ortalamasını o kadar doğru tahmin ediyor demektir. Tersi bir durum, örneklem ortalamasının popülasyon ortalamasından uzaklaşması anlamı taşımaktadır ki, bu durum örneklemin popülasyonu kötü temsili anlamına gelmektedir.

Örneğin bir okulda 70 öğrenciden oluşan tesadüfi bir örneklem seçildi ve seçilen her öğrenciye bir matematik testi uygulandı. Matematik testi puanları için % 95 güven aralığı oluştururken alt limitimiz 56,302 puan, üst limitimiz 84,422 puan olsun. Yani 56,302<popülasyon ortalaması< 84,422 olsun. Bu durumda bizim güven aralığı yorumumuz şöyle olacaktır: Bu okuldaki tüm öğrencilerin popülasyonundaki ortalama matematik puanının 56,302 ile 84,422 arasında olduğuna % 95 eminiz demektir. Tersinden düşünürsek % 5 emin değiliz anlamı da çıkmaktadır. Bu % 5’lik hata, bizim Tip I (alfa hatası olarak da bilinir) hatamızı göstermektedir.

Güven aralığının hesaplanması için hangi parametrelere ihtiyaç vardır?

Genel olarak, güven aralığını hesaplamak için adım adım ele alınması gereken parametreler Şekil 1’de verilmiştir.

Şekil 1: Güven Aralığı Hesaplama Adımları

Şekil 1’de görüleceği üzere ilk olarak popülasyondan çekilen örneklemin ortalaması hesaplanır. Ortalama ise aşağıdaki eşitlik yardımıyla hesaplanmaktadır. Eşitlik örneklem ortalamasının hesaplanmasına yönelik olduğu için “X” parametresi kullanılmıştır. Örneklem ortalaması bütün gözlem değerlerinin toplamının toplam gözlem sayısına bölünmesi ile elde edilir. Eşitlikte küçük “n” örneklem büyüklüğünü ifade etmektedir.

Eğer popülasyon ortalamasını hesaplamış olsaydık eşitlikte n yerine büyük “N” e yer verecektik. Burada N popülasyondaki gözlem sayısını ifade etmektedir. Popülasyon ortalaması (μ) ise bütün gözlem değerlerinin toplamının toplam gözlem sayısı (N)’na bölünmesi ile elde edilmekte olup, aşağıdaki eşitlik yardımıyla hesaplanır.

Örnekleme ait standart sapmanın hesaplanmasında ise aşağıdaki eşitlikten faydalanılır. Burada standart sapma ile aslında örneklem ortalamasından ne kadarlık bir sapma olduğunu gösteriyoruz. Adım adım örneklem standart sapması şöyle hesaplanır:

  1. Örneklemdeki gözlem değerlerinin ortalaması hesaplanır.
  2. Her bir gözlemin gözlem ortalamasından farkı alınır.
  3. Her bir gözleme ait hesaplanan farkın karesi hesaplanır.
  4. Her bir gözleme ait hesaplanan farkların karesi toplanır.
  5. Elde edilen fark kareleri toplamı örneklemdeki gözlem sayısının bir eksiğine bölünür.
  6. Elde edilen değerin karesi hesaplanır.

Popülasyon standart sapmasının hesaplanması ise örneklem standart sapmasına benzer olup tek fark karekök içindeki eşitliğin paydasında büyük “N” e, diğer bir deyişle popülasyondaki toplam gözlem sayısına yer verilmesidir. Yukarıda örneklem standart sapmasındaki işlemler popülasyon standart sapması için de yapılır.

Element varyansı ise örneklem standart sapmasının karesi olup, aşağıdaki eşitlik yardımıyla hesaplanmaktadır.

Eğer örneklemin popülasyon içinde yüzdesi (f=(n/N) x 100) %5’ten büyükse örneklem varyansının hesaplanması ve bunun üzerinden standart hata hesaplanması yoluna gidilmelidir. Örneklem varyansı ise aşağıdaki eşitlik yardımıyla hesaplanır.

Popülasyon varyansı ise popülasyon standart sapmasının karesinin alınması ile hesaplanır. Aşağıdaki eşitlik yardımıyla popülasyon varyansı hesaplanır.

Standart hata (se), diğer bir ifade ile ortalamanın standart hatası aşağıdaki eşitlik yardımıyla hesaplanmaktadır. Örneklemin standart sapması (s)’nın karekök içerisindeki örneklem gözlem sayısı (n)’na bölünmesi bize ortalamanın standart hatası (standard error of the mean)’nı verir. Standart hatayı aynı zamanda örneklem varyansının karekökünü alarak da hesaplayabiliriz. Örneklem büyüklüğünün artırılması merkezi limit teoremi (central limit teorem)’ne dayalı olarak standart hatayı azaltır ve bu istenen bir durumdur. Böylece, örneklem dağılımı standart normal dağılıma (ortalaması 0, standart sapması 1) evrilir.

Güven aralığı nasıl hesaplanır?

Güven aralığının belirlenmesini sağlayan eşitliklere yer verildikten sonra sırasıyla şimdi çok yalın bir şekilde güven aralığı eşitliğini alt ve üst limitten başlayarak verelim. Bu çalışmada güven aralığı, ortalaması ve standart sapması bilinen bir popülasyon üzerinden hesaplanmıştır.

Güven aralığının alt ve üst limitini verdikten sonra bir bütün olarak güven aralığı (confidence interval) eşitliğini verelim. Eşitliğin ortasında yer verilen μ popülasyon ortalamasını göstermektedir. Daha önce de belirtildiği üzere güven aralıklarıyla aslında popülasyon ortalamasını tahmin ediyoruz.

Güven aralığının alt ve üst, diğer bir deyişle iki kuyruklu (two tailed) alfa katsayıları aşağıdaki şekil üzerinde verilmiştir. Z tablosu ortalaması 0, standart sapması 1 olan standart normal dağılımı kullanmaktadır. Standart normal dağılım eğrisi şeklinden dolayı can eğrisi (bell curve) olarak da adlandırılmaktadır. Eğrinin altında alanın toplamı 1’e eşittir. Burada belirlenen güven düzeyi % 95’tir. Bu güven düzeyi s

osyal bilimler dışında özellikle sağlık bilimlerinde % 95’in üzerine çıkabilmektedir daha kesin çıkarımlar (inferences) alınmak istendiğinden.

Güven aralığı eşitliğinde görüleceği üzere güven aralığının hesaplanması için gerekli parametreler örneklemin ortalaması, standart hatası (se) ve Z tablo değeridir. Burada Z tablo yerine pekala t tablo değeri de alınabilirdi. Ancak örneklem büyüklüğümüz bu çalışma kapsamında 30’un üzerinde (n>30) olduğu için Z tablosu kullanılmıştır. Ancak isteğe bağlı olarak çalışmada 30’un altında örneklem büyüklüğü (n) belirlenerek t tablo değeri hesaplanabilir. Diğer taraftan, genel olarak sosyal bilimlerdeki istatistiksel analiz ve araştırmalarda güven düzeyleri % 95 olarak alınmaktadır. Ancak bu çalışmada % 90 güven düzeyi benimsenmiştir. Güven düzeyinin % 90 olarak alınması % 10’luk hata payının (alfa hastasının ya da Tip I hatanın) önceden kabul edildiğini göstermektedir. Çalışmanın sonunda paylaştığım simülasyon çalışmasında % 95 üzeri ve altı güven düzeyleri için de güven aralıkları simüle edilebilmektedir.

Sırası gelmişken belirtmekte fayda olduğuna inanıyorum. Güven aralığının kamuoyunda ve literatürde sık sık yanlış yorumlandığı ve adlandırıldığı görülmektedir. Diğer bir deyişle, güven aralığı (confidence interval) ile güven düzeyi (confidence level) karıştırılmaktadır. Burada güven aralığı eğer yüzde olarak ifade edilmişse bu güven düzeyini, yüzde olarak ifade edilmemişse güven aralığını ifade etmektedir. % 95 güven düzeyine sahip olmak, sonuçlarınızın herkese anket yapmış gibi neredeyse aynı olduğundan emin olduğunuz anlamına gelir.

Güven aralığını etkileyen faktörler nelerdir?

Güven aralığını etkileyen faktörler şöyle sıralanabilir:

  1. Örneklem büyüklüğü: örneklem büyüklüğü (n) artıkça elde edilen cevapların popülasyonu doğrulama olasılığı o kadar artar. Diğer bir deyişle, örneklem büyüklüğünün artması güven aralığını daraltır. Ancak bu artış lineer olmayabilir.
  2. Örneklem seçiminde kullanılan yöntem: eğer örneklem olasıklı örneklem yöntemleri kullanılmadan ya da bu yöntemler kullanılsa bile hatalı örneklem seçimi yapılmışsa güven aralıklarını etkileyebilir. Dolayısıyla popülasyon parametresi olan ortalamalar doğru bir şekilde tahmin edilmemiş olur.
  3. Örneklem büyüklüğü sabit tutulduğunda güven düzeyi (% 95’ten % 99’a yükselmesi) yükseldikçe güven aralığı genişler.
  4. Örneklem ortalaması arttıkça güven aralığının genişliği aynı kalır. Dolayısıyla, örneklem ortalaması aralığın genişliğinde bir rol oynamaz.
  5. Örneklem standart sapmasının azalması varyansın azalması anlamına geldiğinden hata oranı düşer. Bu durum güven aralığının daralmasına ve daha yüksek doğruluk (accuracy) ile popülasyon ortalamasının tahmini anlamına gelmektedir.

Güven aralığından yeterince bahsettikten sonra şimdi uygulama aşamasına geçebiliriz. 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. 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 şöyledir:

Parametre DeğeriKategori
18,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

İlk olarak popülasyondan tekrarsız basit tesadüfi örneklem yöntemi kullanarak her birinin örneklem büyüklüğü sırasıyla 456, 758 ve 434 olan 3 farklı örneklem çekilmiştir. Çekilen örneklemleri popülasyondaki ID koduyla birlikte excel (xlsx) formatında aşağıdaki linkten indirebilirsiniz.

Güven aralıklarını vermeden önce popülasyona ait temel parametrelerinin verilmesinin faydalı olduğu düşünülmektedir. Bu amaçla popülasyon parametre değerleri Tablo 1’te sunulmuştur.

Tablo 1: Popülasyon (N) Parametreleri

Popülasyon ParametreleriDeğer
Ortalama (µ)28,5
Varyans149,9
Standart Sapma12,2
N1000,0

Örneklem gruplarına ait üretilen güven aralıkları ise Tablo 2’de verilmiştir. Tablo 2’ye göre öne çıkan bulgular şöyledir:

  • Ortalamasının 28,07 ortalamanın standart hatasının (se) 0,22 olduğu örneklem 2 grubu popülasyon ortalamasını en doğru tahmin eden örnek grubu olarak öne çıkmıştır. Bu grupta güven aralığı genişliği (0,85) diğer gruplara göre daha dar olup güven aralığı (CI) “27,71 ≤ µ ≤28,43” şeklindedir. Buradan örneklem beden kitle endeksi ortalamasının % 90 olasılıkla veya güven aralığında 27,71 ile 28,43 arasında olduğunu söyleyebiliriz. Örneklem 2 grubunu ise güven aralığı genişliği (CI width) 0,71 olan örneklem 2 grubu izlemiştir. Burada güven düzeyi sabit, ancak örneklem büyüklüğü değiştiğinde bu tür bir yargıya vardığımızı özellikle ifade etmek gerekir.

Tablo 2: Örneklem Grubuna Göre Güven Aralıkları

Örneklem ParametreleriÖrneklem 1Örneklem 2Örneklem 3
Ortalama (m)28,6128,0728,60
Element Varyans (s^2)151,16147,84150,99
Standart Sapma (s)12,2912,1612,29
Örneklem büyüklüğünün popülasyon içindeki oranı (f)0,460,760,43
Finite population correction(fpc) (1-f): Popülasyon düzeltmesi0,540,240,57
Örneklem varyansı (var(x))0,180,050,20
Standart Hata (se)0,420,220,44
Nispi hata (Coefficient of Variation) (CV)1,480,771,55
Alfa (a/2) değeri (güven aralığının olasılık değeri)0,0500,0500,050
Z tablo değeri1,641,641,64
Güven Aralığı Alt Limit (Lower boundary of CI)27,9127,7127,87
Güven Aralığı Üst Limit (Upper boundary of CI)29,3028,4329,33
Güven Aralığı Genişliği (CI Width)1,400,711,46
Güven aralığı gösterimi (CI)27,91 ≤ µ ≤29,327,71 ≤ µ ≤28,4327,87 ≤ µ ≤29,33

Tablo 2’deki güven aralıkları genişlikleri baz alınarak örneklem gruplarına göre güven aralıkları Tablo 3’te verilmiştir. Görüleceği üzere güven aralığı genişliği en dar olan örneklem grubu 0,71 ile örneklem 1 grubudur. Buradan şöyle bir yorum yapabiliriz: güven düzeyi sabit tutulduğunda örneklem büyüklüğü (n) artıkça standart hata (se) düşer, buna bağlı olarak güven aralığı (CI width) daralır. Eğer biz burada güven düzeyini % 90’dan % 95’e veya % 99’a çıkarmış olsaydık güven aralığı genişleyecekti. Çalışmanın sonunda paylaştığım simülasyonda bunların tamamını test edebilirsiniz.

Tablo 3: Örneklem Gruplarına Göre Güven Aralığı Genişlikleri

Özet Çıkarımlar

1. Güven düzeyi sabit tutulduğunda örneklem büyüklüğü (n) artıkça standart hata (se) azalmakta ve buna bağlı olarak güven aralığı (CI) daralmaktadır. 
2. Örneklem büyüklüğü sabit tutulup güven düzeyi artırıldıkça ise güven aralığı genişlemektedir.
3. Örneklem büyüklüğü ve güven düzeyi yükseltildiğinde örneklem büyüklüğüne bağlı olarak güven aralığı daralmakta ve daha kesin sonuçlar alacağımızı göstermektedir. Tabi burada örneklem büyüklüğünün artması tip II hatayı yani beta hastasını azaltırken, diğer taraftan tip 1 hata olarak adlandırılan alfa hatası da azalmaktadır. Ancak genel olarak tip I hata ile tip II hata arasında ters orantı vardır. Yani birini azaltırken diğeri artış göstermektedir. Örneğimizde güven düzeyini 0,90’dan 0,99’a çıkarmamız tip I hatayı azaltmaktadır. Örneklem büyüklüğünü artırmamız ise aynı zamanda testin gücünü de gösteren beta hatasını azaltmaktadır. Ancak bu adımlardan birini artırırken diğeri sabit tutmak ister istemez hatalardan birini azaltırken diğerini de artırmaktadır. Burada önemli olan bir dengenin kurulmasıdır.

Burada Z tablosu üzerinden yapılan güven aralığı deneysel çalışmasının excel uzantılı dosyasını aşağıda linkten indirebilirsiniz.

Z tablosu üzerinden Güven aralığının hesaplanmasına yönelik olarak hazırladığım simülasyonu ise aşağıdaki linkten indirebilirsiniz. Simülasyon çalışmasında bazı sayfalardaki formüller şifre ile korunmuştur. Değişiklik yapılması istenmesi durumundan sayfa korumasının kaldırılması için şifre olarak “tevfik” girilmesi yeterlidir. Özellikle bu simülasyon çalışmasının sahada ve akademide faaliyet gösteren çalışanlara faydalı olacağı düşünülmektedir. Bu çalışmanın içerisinde olasılıklı örneklem seçiminden örneklem büyüklüğünün ve güven düzeylerinin belirlenmesi kadar pek çok konu mevcuttur. Bu simülasyonda örneklem büyüklüğünü sizin belirlemenize gerek bulunmamaktadır.

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

Öne çıkan

Küresel Ekonomik Sistem ve Dönüşüm Zamanlarında İşletmeler

Bu yazım kapsamında önemli olduğuna inandığım Birleşmiş Milletler Çevre Programı (UNEP) tarafından yayınlanan “Hayatta Kalmak İçin Uyum Sağlayın: Belirsizlik zamanlarında işletmelerin dönüşümü” adlı rapordan öne çıkan bulgulara yer verilmiştir.

Dünya, çevrede, teknolojide, ekonomide ve toplumda dramatik değişikliklere tanık oluyor. “Her zamanki gibi iş” anlayışı artık kabul edilemez ve bu noktada soru, dünyanın sürekli artan verimliliği esas alan tüketim ve büyümeyi ne kadar süre sürdürebileceğidir. COVID-19 salgını, küresel ekonominin son derece birbirine bağlı ve savunmasız durumunu ortaya koymuştur. Ayrıca salgın küresel ekonominin doğa ile ilişkini ve bu gezegendeki insanlar da dahil olmak üzere her canlı varlığın hayatta kalmak ve gelişmek için umutları hakkındaki endişelerini de artırmıştır.

Ancak bu endişe yeni değildir. Bilim, onlarca yıldır maddi, doğrusal, fosil yakıt temelli ekonomik büyüme ile ilgili sorunlara dikkat çekmiştir. 2019’da yayınlanan GEO-6 raporundaki kanıtlar, insanların halihazırda diğer insanların hayatta kalmasını riske attığıdır. Sadece yıkıcı iklim değişikliğine ve artan kirliliğe neden olmakla kalmıyor, aynı zamanda tüm ekosistemlerin istikrarı ve dayanıklılığı için gerekli olan zengin yaşam çeşitliliği olan benzeri görülmemiş bir biyoçeşitlilik kaybına da yol açıyoruz. Bu bilimsel fikir birliği, aynı zamanda, Küresel Doğa Anlaşması ile sonuçlanan Paris Anlaşması dahil olmak üzere yüksek düzeyli siyasi taahhütlere de dönüştürüldü.

Yakın zamandaki ilerlemeye ve artan ivmeye rağmen iş dünyası ve hükümetler de dahil olmak üzere küresel toplum, insanların hayatta kalması için gerekli dönüştürücü eylemleri gerçekleştirmede başarısız oldu. Baskın tepkiler, kısa vadeli finansal ve ekonomik iyileşme arayışına ve bu büyüme gezegenin doğal kaynakları ve uzun vadeli refahı pahasına olsa bile ilerlemenin itici gücü olarak büyümeye odaklanmış olmaya devam ediyor. Bu refahın şimdi dramatik ve belki de geri döndürülemez biçimde zayıflatılmasıyla dünyayı bu noktaya getiren düşünce ve sistemleri sorgulamaya ihtiyaç vardır. Dayanıklı ve sürdürülebilir bir ekonominin, doğanın ve insanların refahına öncelik veren ve onu destekleyen bir ekonomi olması gerektiği açıktır. Bu bağlamdadünyanın dört bir yanındaki topluluklar, ülkelerin ve işletmelerin enerji, gıda, ulaşım ve kaynaklarda doğa pozitif modelleri arama ve geliştirme içerisine girmiştir.

Ortaya çıkan bu hareket, işletmeleri yeni bir ekonomi türüne doğru yönlendirmeye yardımcı olabileceği için bir umut ve ilham kaynağıdır. Ancak, geleneksel ekonomik düşünceye saplanıp doğrusal, fosil yakıt temelli uygulamalara kilitlenmiş işletmelerin doğa ile olumlu bir ilişkiye doğru bu dönüştürücü değişimi benimsemesi varoluşsal zorluklar ortaya çıkarmaktadır.

Önümüzdeki on yıllardaki dönüştürücü değişimde yer almak ve hayatta kalmak için her işletmenin tüm yaratıcılık ve hayal gücünü kullanması gerekecektir. Bu durumda ekonomiyi ve işletmelerini doğanın ve insanların sömürülmesine dayanmaktan uzaklaştıracak ve yeşil ve yenileyici ilkelere dayalı yeni bir refah modeline doğru yönlendirecek CEO’lara ve girişimcilere ihtiyacımız olacaktır. İş dünyasındaki liderlerin bu yeni bağlamda amaçlarını, planlarını ve stratejilerini gözden geçirme ve farklı gelecekleri keşfetme, yeni ortaklarla ilişki kurma ve deneyimler için alan yaratma zamanı gelmiştir. Bu kadar çok şey söz konusu olduğunda her zamanki gibi geleneksel bakış açılarına bağlı kalınarak işe sarılmak sadece riskli değil, aynı zamanda dar ve sorumsuz bir yaklaşımdır. Geleceğe hazırlanmanın tek yolu, şirketlerin bugünden başlayarak, doğaya olumlu bir yaklaşımı nasıl benimseyebileceklerini keşfetmektir.

Peki bahsedilenler ışığında işletmeler nasıl dönüşebilir?

  • Doğanızın pozitif amacını (yeniden) tanımlayın.
  • İşletmenizi içeriden değiştirmeye başlayın.
  • Başarının tanımını değiştirin.
  • Yeni ortaklar bulun.
  • Doğayı olumlu etkileyen hedefler koyun ve raporlayın.

Küresel ekonomik sistem, çevresel hasar modeline kilitlenmiştir. Bir grup STK’nın belirli bir yılda insanlığın ekolojik kaynaklara ve hizmetlere yönelik talebinin gezegenin o yıl yeniden üretebileceğini aştığını tahmin ettiği Dünya Limit Aşımı Günü (World overshoot day), 2019’daki aşım gününden yalnızca 24 gün sonra 22 Ağustos 2020’de düştü. Bu, COVID-19 salgınının ilk aşamalarında azaltılmış kaynak kullanımıyla bile çevresel hasar modelinin hala küresel ekonomik sisteme bağlı olduğu anlamına geliyor. Ekonomik sistemler, dünyayı, olumlu değişikliklerin ve yeniliklerin sürekli artan malzeme tüketimi ve kirlilik ile dengelendiği bir kalkınma yoluna itiyor. Bu arada kısaca hatırlatmakta fayda olduğunu düşünüyorum. Küresel Ayak izi Ağı (Global Footprint Network) insanlığın doğa üzerindeki yıllık talebinin, dünyanın bir yılda sağlayabileceği kapasiteyi aştığı günü, Dünya Limit Aşımı Günü (World overshoot day) olarak tanımlamaktadır.

Bu çevresel zarardan ve bunun dramatik sonuçlarından kaçınmak, emisyonlardaki ve biyolojik çeşitlilik kaybındaki kademeli azalmalardan temelde farklı bir şey gerektirir. Bu süreç, insan refahını, sosyal ve ekonomik değeri artırırken çevre üzerindeki baskıları azaltan yeni düşünce yolları ile üretim ve tüketim modelleri gerektirir.

Ekonomiyi bu kısır döngüden çıkarmak, ekonominin kolektif olarak organize edilmesinden ve derin dönüştürücü değişikliklerden geçmektedir. Bu yeni bir anlayış değil, ancak ona göre hareket etmek son derece karmaşık, tartışmalı ve zorludur. Örneğin, kişisel ulaşım sistemlerinin temeli olan içten yanmalı motor, ekonomik sektörlerde ve organizasyonlarda “yol bağımlılığının” kasıtlı olarak “sürdürülebilirlik geçişlerini” nasıl engellediğini gösterir. Önem arz etmesi nedeniyle neredeyse tüm araç üreticileri, en azından çok yakın zamana kadar, motorun etkililiğinin ve verimliliğinin kademeli olarak iyileştirilmesine yatırım yapmaya devam etmenin mantıklı olduğunu düşünüyordu. Sonuç, araç yapımında kaynakların kullanımını azaltan ve motorları daha verimli hale getiren ancak araçların büyüyen boyutu, özellikleri, sayısı ve kullanımıyla eşleşmeyen “kaynak ayırmada” hafif ilerlemedir. Nihai sonuç, inovasyona ve verimliliğe odaklanan tüm çabaların baskın teknolojiye ve ekonomik modele yatırım olmasıdır: mevcut durumu güçlendirir, daha fazla kirlilik üretmeye devam eder ve bu bağımlılığı güçlendirir.

Belirli bir noktada inovasyon yoluyla elde edilen verimlilik kazançları sınırlarına ulaşır: fosil yakıtla çalışan bir motor, fosil yakıtlara bağımlıdır ve her zaman bir miktar emisyon üretir. Daha da kötüsü: Bir noktada karmaşıklık ve kilitlenme, daha fazla iyileştirme elde etmeyi gittikçe zorlaştıracak ve pahalı hale getirecektir. Bu tür işletmeler için farklı kaynak türlerine ve teknolojilere dayanan tamamen yeni iş modellerine geçişte değer önerileri ve piyasa yapıları, ekipman, personel ve varlıklara yapılan “batık” yatırımların yanı sıra tedarikçilere, ortaklara veya alıcılara yönelik yasal ve işbirliğine dayalı taahhütlerle daha da karmaşık hale gelir. Ancak bu tür işletmeler savunmasızdır ve yakında daha iyi alternatifler tarafından potansiyel olarak ezilecektir.

Dönüştürücü değişime ilişkin bu bakış açısı, olası kesintileri öngören ve istenen dönüşümleri yönlendirmeye ve hızlandırmaya yardımcı olan yollara odaklanan yeni stratejiler gerektirir. Aslında, bu zaten olmaktadır. AB, Çok Yıllı Finansal Çerçeve (MFF)’de bütçenin yüzde 30’unu kapsayan yeşil geçişler gibi iddialı hedefleri benimsiyor ve dönüştürücü değişime ivme kazandırmaktadır. Birleşmiş Milletler Dünya Şampiyonası’nın galibi Kosta Rika, son 15 yılda yüzde 100 yenilenebilir enerjiye geçti, ülkeyi yeniden ağaçlandırdı ve GSYH’yı ikiye katladı. Bu örnekler, politika düşüncesinde, kademeli iyileştirme ve ekonomik büyümenin ötesinde değişikliklere ihtiyaç duyulduğunun ve işletmeler için yeni ölçütlere, düzenlemelere, ekonomik koşullara ve kurumsal koşullara ihtiyaç duyulduğuna dair artan kabulün altını çizmektedir. Dönüştürücü politikalar, pandeminin diğer tarafında daha iyi bir dünya inşa etmeye yönelik toplum ve iş dünyasının birlikte çalışması için elverişli bir ortam oluşturmaktadır.

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

Bilimle ve teknolojiyle kalınız.

Yararlanılan Kaynaklar

Öne çıkan

R’da Duygu Analizi Üzerine Vaka Çalışmaları: Case Studies on Sentiment Analysis in R

Giriş

Genel olarak pozitif, negatif  ve nötr dilin ölçümü anlamına gelen duygu analizi, fikir madenciliği (opinion mining) olarak da anılır. Nitel araştırmanın bir yönünü oluşturan bu analizle ürünlerden, reklamlardan, lokasyonlardan, reklamlardan ve hatta rakiplerden ortaya çıkan müşteri düşüncelerini açığa çıkarılabilmektedir. Müşterilerin hoşlandığı veya hoşlanmadığı ürünlerin tespitinde bu analiz önemli rol oynayarak ürün gamı ve ürünün kalitesi şekillendirilebilmektedir. Diğer bir deyişle, firmalar müşterilerin ne hissettiğini ve düşündüğünü bilerek müşteri beklentilerini daha iyi karşılayabilir. Sağlık sektöründe de benzer durum söz konusu olabilir. Hasta beklentileri, algıları ve yönetiminin analizleri ile sağlık krizlerinde fikirlerin analizinde duygu analizlerinin yoğun bir şekilde kullanıldığı literatürden yakinen bilinmektedir. Literatürde aynı zamanda duygu analizlerinden önce kelime bulutlarının oluşturulduğu da görülmektedir.

Veri madenciliğinin (data mining) bir kolunu oluşturan metin madenciliği (text mining) metotları içinde kelime bulutları (word clouds) metinlerde en sık kullanılan anahtar kelimeleri vurgulamamıza ve görselleştirmemize olanak tanır. Bu metotlarla metin verisinden metin bulutu veya etiket bulutu diyebileceğimiz kelime bulutu oluşturulabilir. Kelime bulutları metni hızlı analiz etmemize ve kelime bulutu olarak ortaya çıkan anahtar kelimeleri görselleştirmemize olanak tanır. Bahsedilenler ışığında metin verisini sunmada kelime bulutunu kullanmanız gerektiği durumlar şunlardır:

  1. Kelime bulutları sadelik ve yalınlık sağlar. En sık kullanılan anahtar kelimeler, kelime bulutu içinde daha iyi kendini gösterir.
  2. Kelime bulutları potansiyel iletişim araçlarıdır. Kelime bulutlarının anlaşılması, paylaşılması kolaydır ve kelime bulutları etkilidirler.
  3. Kelime bulutları bir tablo verisinden görsel olarak daha ilgi çekicidir.

Kelime bulutları, sektör ayrımı gözetilmeksizin bütün alanlarda kullanılabilmekle birlikte en sık kullanılan alanlarla en sık kullanılan meslek grupları şöyle özetlenebilir;

  1. Kalitatif (nitel) araştırma yapan araştırmacılar,
  2. Müşterilerin ihtiyaçlarının belirlenmesi noktasında pazarlamacılar,
  3. Temel konuları desteklemek için eğitimciler,
  4. Politikacı ve gazeteciler
  5. Kullanıcı görüşlerini toplayan, analiz eden ve paylaşan sosyal medya siteleri

Duygu analizi (sentiment analysis) ise kendisine bir çok farklı alanda uygulama alanı bulmakta olup başlıca kullanım alanları Şekil 1 üzerinde verilmiştir:

Şekil 1: Duygu Analizi Kullanım Alanları

Duygu analizlerinde temel veri kaynaklarının sosyal medya platformları, bilim veri tabanları ve arama motorları verileri olduğu görülmektedir. Duygu analizi çalışmalarında duygu sözlükleri adı verilen “leksikon” lardan yaygın bir şekilde yararlandığı görülmektedir. Literatürde yer alan başlıca leksikonlar Şekil 2’de verilmiştir.

Şekil 2: Duygu Analizinde Kullanılan Duygu Sözlükleri

Şimdi sırayla Şekil 2’de verdiğimiz leksikonlardan kısaca bahsedelim.

Polarite Testi

En basit duygu sözlüğünü oluşturan bu testte skorlar -1 ile 1 arasında değerler almaktadır. Kelime ve cümle bazında yapılan sınıflandırmalarda negatif ve pozitif olmak iki kategori bulunmaktadır.

NRC Leksikonu

Analizde kullanılan metin NRC lexiconu açısından analiz edilmiştir. NRC lexiconu hesaplamalı dil bilimci Saif Mohammad tarafından geliştirilmiş olup bu leksikon sözlüğünde 10 duygu bulunmaktadır. Bu hisler şöyledir;

  1. positive
  2. negative
  3. Anger
  4. Anticipation
  5. Disgust
  6. Fear
  7. Joy
  8. Sadness
  9. Surprise
  10. Trust

Afinn Leksikonu

Afinn dil sözlüğü, 2009 ve 2011 yılları arasında Finn Årup Nielsen tarafından geliştirilmiş olup dil sözlüğünde skorlar -5 (negatif) ve +5 (pozitif) arasında tamsayı değerleri almaktadır.

Bing Leksikonu

Bing leksikonunda ise duygular basit bir şekilde negatif ve pozitif olarak sınıflandırılarak skorlanır.

Syuzhet Leksikonu

Syuzhet, Nebraska Dil Bilim Laboratuarında (Nebraska Literary Lab) geliştirilmiş bir duygu sözlüğüdür. “Syuzhet” adı, metni “fabula” ve “syuzhet” olmak üzere iki bileşene ayıran Rus formalist Victor Shklovsky ve Vladimir Propp’tan gelmektedir.

Loughran Leksikonu

Finansal belgelerde kullanılmak üzere geliştirilmiş duygu sözlüğüdür. Bu sözlük, kelimeleri finansal bağlamlarında ele almakta olup altı duygu kategorisinden oluşmaktadır: “olumsuz”, “pozitif”, “ihtilaflı”, “belirsizlik”, “kısıtlayıcı” veya “gereksiz” (“negative”, “positive”, “litigious”, “uncertainty”, “constraining”, or “superfluous”).

Esasında bu platform üzerinde R programlama dili kullanarak duygu analizleri üzerine 2018 yılında, kelime bulutları üzerine ise farklı tarihlerde örnek uygulamalar yapmıştım. Ancak R kodları açık kaynak olarak paylaşmamıştım. Bu çalışma kapsamında yapılan örnek uygulama ile ilk olarak metnin kelime bulutları oluşturulmuş, ardından ise dil sözlükleri kullanılarak eş zamanlı olarak duygu analizleri yapılmıştır. Aşağıda göreceğiniz üzere en ince ayrıntısına kadar bütün R kodları paylaşılmıştır. Yapacağınız tek şey minor değişikliklerle kendi çalışmalarınıza uyarlamanızdır. Ancak temel R programlama bilginizin olması tavsiye edilir.

Metodoloji ve Uygulama Sonuçları

Örnek uygulama kapsamında ilk metin verisi 30.01.2021 tarihinde ücretsiz e-kitapların çeşitli formatlarda yayınlandığı https://www.gutenberg.org/ebooks/50540 adresinden alınmıştır. Metin verisi olarak alınan eserin adı Zeyneb Hanoum tarafından kaleme alınan Bir Türk Kadınının Avrupa İzlenimleri (A Turkish Woman’s European Impressions)‘dir. Eser 23 Kasım 2015 tarihinde https://www.gutenberg.org sitesinde yayınlanmıştır. Bu metin verisi ile yukarıda linki verilen web uygulaması üzerinden kelime bulutları oluşturulacaktır. Örnek uygulama metnini word (docx) formatında aşağıdaki linkten indirebilirsiniz.

Bir Türk Kadınının Avrupa İzlenimleri

Örnek uygulama kapsamında ikinci metin pdf formatında olup, Dünya Bankası tarafından 5 Ocak 2021 tarihinde 234 sayfalık Küresel Ekonomik Beklentiler (Global Economic Prospects) raporudur. Rapor https://openknowledge.worldbank.org/bitstream/handle/10986/34710/9781464816123.pdf?sequence=15&isAllowed=y url adresinde yayınlanmıştır.  Bu raporla ilgili 22 Şubat 2021 tarihinde blog sitemde, 23 Şubat 2021 tarihinde ise Sanayi Gazetesi’nde “Küresel Ekonomik Beklentiler 2021 Ocak Dönemi Raporuadlı yazım yayımlanmıştır. Raporu incelediğim için acaba bu raporun kelime bulutu ve duygu analizini de yapsam nasıl olur diye kendime sordum 🙂 . Neticede denemesi bedava 🙂 . Bu soru beni bu raporun kelime bulutlarını oluşturmaya ve duygu analizlerini yapmaya itmiştir. Bu çalışma kaynağından okunarak hem kelime bulutları çıkarılmış, ardından duygu analizleri yapılmıştır. İlk örnek uygulamanın aksine bu çalışma pdf formatında olan metinlerin analizini içerdiğinden bu yönüyle farklılık göstermektedir. Bu kısımdaki analiz 3. PDF dokümanların kelime bulutlarının çıkarılması ve duygu analizlerinin yapılması başlığı altında ele alınmıştır.

Örnek uygulama kapsamında 3. çalışma sentetik veriler üretilip kelime bulutlarının oluşturulmasıdır. 3. çalışma kapsamında sentetik olarak üretilen kelimelerin büyük bir çoğunluğu İstiklal Marşımızdan alınmıştır. Burada sentetik verilerin üretilmesinde tekrarlı örnekleme tekniği kullanılmış ve 10.000 gözlem üretilmiştir. Bu gözlemler üzerinde kelime bulutları oluşturulmuştur. Bu bölümdeki analiz ise 4. Sentetik veriler üzerinden kelime bulutlarının oluşturulması başlığı altında irdelenmiştir.

Çalışma kapsamında ilk olarak metnin kelime bulutları oluşturulmuş, ardından ise dil sözlükleri kullanılarak duygu sözlüklerine göre duygu analizleri yapılmıştır. İlk olarak analizde kullanılacak R kütüphanelerini vererek işe başlayalım. Aşağıda gerekenden fazla kütüphane verdiğimi biliyorum. Ancak daha çok esneklik ve estetik tasarım tanıdığı için genellikle olması gerekenden fazla kütüphane ile çalışıyorum. Kelime bulutlarının oluşturulması ve duygu analizlerinde kullanılan temel paketler “sentimentr”,”webshot”,”stringr”, “wordcloud”, “wordcloud2″,”RColorBrewer”, “htmlwidgets”,”syuzhet” paketleridir. Analizlerde R programlama dili kullanılmıştır. Bulguların çalışma kitaplarına yazdırılmasında ise xlsx uzantılı Microsoft Excel çalışma kitapları kullanılmıştır.

Yüklenecek Kütüphaneler

#Kütüphaneler

kütüphane<-c("dplyr","tibble","tidyr","ggplot2","ggthemes","readr","readxl","ggpubr","formattable", "ggstance", "pastecs","writexl", "psych", "GGally","pander", "rstatix", "stringr", "sentimentr","webshot","stringr","wordcloud", "wordcloud2","RColorBrewer", "htmlwidgets","syuzhet")
yükle<-sapply(kütüphane, require, character.only = TRUE)

#Kütüphane yüklenme durumunu gösteren tablo

tablo=suppressWarnings(yükle, classes = "warning")
  
isim=names(tablo)
  
deger=as_tibble(tablo)
  
data.frame(sira=1:length(isim), kutuphane=isim, yuklenme_durumu=deger$value) %>% mutate(yuklenme_durumu=if_else(yuklenme_durumu==TRUE, "Yuklendi", "Paket Kurulumu Gerekli")) %>% pander(caption="Kütüphane Yüklenme Bilgisi")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra yukarıdaki kütüphanelerin yüklenip yüklenmediğine dair aşağıdaki gibi mantıksal vektör sonuçları gelecektir. Eğer mantıksal vektör sonuçlarının hepsi TRUE ise kütüphanelerin hepsini yüklenmiştir demektir. Kolaylık sağlaması açısından yukarıda kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için yukarıdaki kod bloğu içerisinden kısa bir kod yazdım. Bu kod çalıştırıldığında aşağıdaki tabloda görüleceği üzere bütün kütüphaneler yüklenmiştir. Eğer ilgili kütüphane yüklenmemiş olursa “Paket Kurulumu Gerekli” ifadesi satırda yazacaktır. Satırda yazan bu uyarı metnine göre paketi ya kurar yada yüklersiniz. Bir paketin kurulması ile yüklenmesinin aynı şey olmadığını burada ifade etmek gerekir konuyu yabancı olanlar için. Paket kurulumu ilk defa yapılan bir işlem iken, paketin yüklenmesi zaten kurulan bir paketin yüklenmesi yani çalışır duruma getirilmesidir. İlk defa bir paket kurulumu gerçekleştiriliyorsa install.packages() fonksiyonunu, zaten bir paket kurulumu gerçekleştirilmiş ise ilgili paketin veya kütüphanenin yüklenmesi veya okunması için library() veya require() fonksiyonlarını kullanıyoruz. Fonksiyonlardaki parantez () içerisine yüklenecek paket veya kütüphane adını yazıyoruz.

---------------------------------------
 sira    kutuphane     yuklenme_durumu 
------ -------------- -----------------
  1        dplyr          Yuklendi     

  2        tibble         Yuklendi     

  3        tidyr          Yuklendi     

  4       ggplot2         Yuklendi     

  5       ggthemes        Yuklendi     

  6        readr          Yuklendi     

  7        readxl         Yuklendi     

  8        ggpubr         Yuklendi     

  9     formattable       Yuklendi     

  10      ggstance        Yuklendi     

  11      pastecs         Yuklendi     

  12      writexl         Yuklendi     

  13       psych          Yuklendi     

  14       GGally         Yuklendi     

  15       pander         Yuklendi     

  16      rstatix         Yuklendi     

  17      stringr         Yuklendi     

  18     sentimentr       Yuklendi     

  19      webshot         Yuklendi     

  20      stringr         Yuklendi     

  21     wordcloud        Yuklendi     

  22     wordcloud2       Yuklendi     

  23    RColorBrewer      Yuklendi     

  24    htmlwidgets       Yuklendi     

  25      syuzhet         Yuklendi     
---------------------------------------

Table: Kütüphane Yüklenme Bilgisi

1. Kelime bulutlarının oluşturulması

Bu kısımda bahse konu metin üzerinden adım adım kelime bulutları oluşturulacaktır. Kelime bulutlarının oluşturulması frekanslara göre oluşturulduğundan metnin dili çok belirleyici olmamaktadır. Ancak duygu analizinde durum biraz farklıdır. Yani duygu analizi yapıyorsanız metnin bulunduğu dili destekleyen bir R kütüphanesi ile çalışmak zorundasınız. Bunu da yeri gelmişken burada ifade etmekte yarar olduğunu düşünüyorum.

Veri setinin okunması

bs1 <- read.delim("metin.txt", col.names = "cumle")
bs1

Veri setindeki ilk 10 satırı tablo formatında aşağıda yazılan kod bloğu ile verebiliriz.

bs1 %>% head(10) %>% formattable()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen ilk 10 satır aşağıdaki tabloda verilmiştir.

Veri setinin yapısının incelenmesi

Aşağıda yazılan kod bloğu ile veri setindeki değişken tipi ve gözlem sayısı ortaya konulmuştur.

glimpse(bs1)

#alternatif
str(bs1)

Yukarıdaki kod bloğu çalıştırıldığında aşağıda verildiği üzere veri setinin 3,264 gözlemden yani cümleden oluştuğu, değişken tipinin ise karakter yani nominal olduğu görülmektedir. Veri setinin 1 değişkenden oluştuğu ve değişkenin “cumle” olduğu da görülmektedir.

Rows: 3,264
Columns: 1
$ cumle <chr> "This eBook is for the use of anyone anywhere at no cost and with", "almost no restrictions w...

Metin verisinin kelime bulutu oluşturulmadan önce temizlenmesi ve çıkarılacak kelimelerin belirlenmesi

Bu kısımda ilk olarak aşağıda yazılan kelimeler metinden çıkarılacaktır. Bu kısımda ister Türkçe isterse diğer dillerde çıkarılacak kelimeleri belirleyebilirsiniz.

rmv1<-c("may", "can","years","age","mean","diet", "qol","based","dog","two","per","model","will","is","aarc","results","label","among","are","level","cancer", "used","many", "nlm", "data", "study", "p", "n", "net", "biochar", "aloe", "ses", "systems","avs", "acid","rate","aha","year","time","since","stroke", "however", "p lt", "ssris", "score", "index","hia", "largest", "current", "ncds", "found", "labelobjective", "It","yet","models", "vera","total", "also", "ptsd", "lt", "sroi", "icdm", "scores", "new", "arm", "china", "sample", "semen", "survey", "labelconclusions","within","labelbacground","range","followed","tagsnps","mbovis","labeldesign","increased","published", "likely", "nlmcategorymethods", "acids", "fatty", "employersponsored","labelmethods", "using", "conclusions","setting", "whether","findings","crosssectional", "one", "three","review","associated", "analysis", "studies", "nlmcategory", "background", "nlmcategorymethods", "in", "of", "and", "as", "19", "the","have","were","an", "was", "during", "to", "for","a", "cth","or","hcs", "this", "u","ci", "t", "la", "043d", "064a","043b", "062a", "trastuzumab","ewars","research", "either", "ipps73","ippss","87,017", "ofips", "15,000", "eshre","tdabc","thaihealth", "0.157", "and", "analyzed", "methods", "terms", "subjects", "being", "there", "compared", "while",  "when", "their","these","between", "his","her", "which", "that","who", "after","related","higher","group", "other","each","those","lower", "number","rates","first", "about", "groups","through","including", "across", "should", "must", "have","months","adjusted", "analyses", "estimated", "could", "would", "without", "further", "versus", "cross", "method", "follow", "general", "under", "below", "estimate","following", "received", "available", "before", "aimed", "collected", "often", "often","include","relevant","having","therefore","because","thus", "gutenberg","almost", "license", "ebook", "anyone", "anywhere", "title", "author", "enough", "nothing", "cannot", "really", "never", "again", "wwwgutenbergorg", "whatsoever", "editor", "chapter","perhaps", "shall", "every","where", "been", "more", "than", "even", "with", "what",  "who", "when", "only", "your", "into", "in", "on", "always", "online", "copy", "away", "back", "myself", "still")

Bu kısımda aşağıda yazılan kod bloğundaki satırlarda sırasıyla;

  • Metindeki harflerin tamamı küçük harfe dönüştürülmüştür.
  • Metindeki noktalama işaretleri kaldırılmıştır.
  • Metinle iç içe geçmiş (kızgın325 gibi) rakam ve sayılar metinden ayıklanmıştır.
  • Metinden rakam ve sayılar çıkarılmıştır.
  • Yukarıdaki belirtilen kelimeler metinden çıkarılmıştır. Burada dikkat edilirse çıkarılan kelimeler daha çok zamir, sıfat, edat ve bağlaçlardır. İsteğe bağlı olarak burada değişiklikler yapabilirsiniz.
  • Karakter sayısı 3’ten büyük kelimeler filtrelenmiştir. İsteğe bağlı olarak burada değişiklikler yapabilirsiniz.
  • Metin istenmeyen formatta kelimeler varsa ve bu kelimeleri çıkarmanız analize zarar verecekse yerine kelimeler atayabilirsiniz.
  • Metnin değişiklikler sonrası “tibble” tablo düzenine dönüştürülmüştür.
tr<-bs1 %>% mutate(word=str_to_lower(cumle))%>% unnest_tokens(word, cumle) # Metindeki harflerin tamamı küçük harfe dönüştürülmüştür.
tr<-tr %>% mutate(word=removePunctuation(word)) # Metindeki noktalama işaretleri kaldırılmıştır.
tr<-tr %>% mutate(word=str_squish(word)) # Metinle iç içe geçmiş (kalem325) rakam ve sayılar metinden ayıklanmıştır.
tr<-tr %>% mutate(word=removeNumbers(word)) # Metinden rakam ve sayılar çıkarılmıştır.
tr<-tr %>% filter(!word %in% rmv1) # Yukarıdaki belirtilen kelimeler metinden çıkarılmıştır. Burada dikkat edilirse çıkarılan kelimeler daha çok zamir, sıfat, edat ve bağlaçlardır. İsteğe bağlı olarak burada değişiklikler yapabilirsiniz.
tr<-tr %>% filter(str_length(word)>3) # Karakter sayısı 3'ten büyük kelimeler filtrelenmiştir. İsteğe bağlı olarak burada değişiklikler yapabilirsiniz.
tr<-str_replace(tr$word, "[ı]", "i") # Metin istenmeyen formatta kelimeler varsa ve bu kelimeleri çıkarmanız analize zarar verecekse yerine kelimeler atayabilirsiniz.
tr<-tr %>% as_tibble()%>%rename(word=value) # Metnin değişiklikler sonra tibble tablo düzenine dönüştürülmüştür.
tr

Kelime sıklıklarının ortaya konulması

Aşağıda yazılan kod bloğunda metindeki kelimelerin sıklıkları bulunmuş, ardından ise frekansı en yüksek ilk 50 kelime verilmiştir. En sonda ise kelimeler ve frekansları xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmıştır.

# Kelime sıklıklarının elde edilmesi
sayi<-tr %>% group_by(word) %>% count() %>% arrange(desc(n))
sayi<-sayi %>% add_column(id=1:NROW(sayi),.before = "word")
sayi

#Frekansı en yüksek ilk 50 kelime
sayi %>% head(50)  %>% pander(caption="Frekansı En Yüksek İlk 50 Kelime")

#xlsx uzantılı çalışma kitabına sıklıklarına göre kelimelerin yazdırılması
write_xlsx(sayi, "kelimeler.xlsx")

Yukarıdaki kod bloğunda ikinci alt blok çalıştırıldığında elde edilen frekansı en yüksek ilk 50 kelime aşağıda verilmiştir.

---------------------------
 id        word         n  
---- ---------------- -----
 1         they        250 

 2       turkish       154 

 3         from        138 

 4        women        130 

 5         life        97  

 6        little       84  

 7         them        82  

 8        woman        79  

 9       country       66  

 10        know        66  

 11       people       64  

 12        same        55  

 13        come        54  

 14        like        54  

 15       zeyneb       54  

 16       turkey       52  

 17        here        50  

 18        much        50  

 19        very        50  

 20        said        47  

 21        some        47  

 22       think        46  

 23        most        44  

 24        such        43  

 25        then        43  

 26       harem        42  

 27        find        40  

 28       great        40  

 29        long        38  

 30        west        38  

 31      western       38  

 32       friend       37  

 33        ever        36  

 34        over        35  

 35        seen        35  

 36       asked        34  

 37        came        34  

 38     understand     34  

 39       house        32  

 40       paris        32  

 41        went        32  

 42        made        31  

 43        read        31  

 44        told        31  

 45        left        30  

 46      thought       30  

 47   constantinople   29  

 48       seemed       29  

 49        tell        29  

 50      another       28  
---------------------------

Table: Frekansı En Yüksek İlk 50 Kelime

Yukarıdaki kod bloğunda üçüncü alt blok çalıştırıldığında elde edilen kelimeler ve frekansları xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmış olup aşağıda linkten indirebilirsiniz.

Kelime bulutlarının oluşturulması

Bu kısımda aynı metinden birden fazla kelime bulutu oluşturulacaktır. İlk kelime bulutunu wordcloud kütüphanesini kullanarak aşağıdaki kod bloğunda verelim. Aşağıda yazılan kod bloğunda kelime frekansımız minimum 20, maksimum 200 olacak şekilde düzenledik. Dilerseniz wordcloud fonksiyonu içerisindeki parametreleri değiştirerek farklı alternatifler deneyebilirsiniz.

set.seed(1923) # Aynı sonuçları almak için sabitlenmiştir.
wordcloud(words = sayi$word, freq = sayi$n, min.freq = 20,
          max.words=200, random.order=FALSE, rot.per=0.35, 
          colors=brewer.pal(8, "Dark2"))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde ettiğimiz kelime bulutu aşağıda verilmiştir. Aşağıdaki kelime bulutunda dikkat edeceğiniz üzere metinde hala temizlenmeyi bekleyen “they”, “whom”, “till”, “does”, “over”, “from”, “just”, “here”, “some” gibi zamir, yardımcı fiiller ve yer zarfları bulunmaktadır. Literatürde yapılan çalışmalarda bu hususa çok dikkat edildiği söylenemez ama siz dikkat etmelisiniz iyi bir araştırma ortaya koymak açısından. Metin verisinin kelime bulutu oluşturulmadan önce temizlenmesi ve çıkarılacak kelimelerin belirlenmesi başlığı altında yer alan kod bloğundaki vektör içerisine bahsettiğim bu kelimeleri girerek kelime bulutundan bu kelimeleri çıkarabilirsiniz.

Şimdi de diğer kütüphanemiz olan wordcloud2‘yi kullanarak kelime bulutları oluşturalım. Burada aynı zamanda oluşturulan kelime bulutu png ve html uzantılı olarak da kaydedilmektedir. Aşağıda yazılan kod bloğunda en yüksek frekansa sahip ilk 250 satırdaki kelimelerin frekansı ele alınmıştır.

#kelime bulutunun oluşturulması
hw1=wordcloud2(head(sayi[,2:3], 250), size=1, minSize = 10, shape = "circle", color = "random-light",backgroundColor = "black")

#html ve png olarak kaydedilmesi
saveWidget(hw1,"26.html",selfcontained = F)
webshot::webshot("26.html","hw1.png",vwidth = 1800, vheight = 1000, delay =10)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde ettiğimiz kelime bulutu aşağıda verilmiştir.

Farklı düzenlerde kelime bulutunu elde etmek mümkündür. Yıldız şeklinde eğer kelime bulutu elde etmek istersek yazacağımız kod bloğunda yapacağımız tek şey shape parametresinde “star” şeklinde değişiklik yapmaktır.

#kelime bulutunun oluşturulması
hw1=wordcloud2(head(sayi[,2:3], 250), size=1, minSize = 10, shape = "star", color = "random-light",backgroundColor = "black")

#html ve png olarak kaydedilmesi
saveWidget(hw2,"27.html",selfcontained = F)
webshot::webshot("27.html","hw1.png",vwidth = 1800, vheight = 1000, delay =10)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde ettiğimiz kelime bulutu aşağıda verilmiştir.

Şimdide aşağıda yazılan kod bloğunda beşgen (pentagon) düzeninde ve gri arka planında başka bir kelime bulutu oluşturalım. Aynı zamanda veri setinde frekansı en yüksek ilk 350 kelimeyi baz alalım.

#kelime bulutunun oluşturulması
hw1=wordcloud2(head(sayi[,2:3], 350), size=1, minSize = 10, shape = "pentagon", color = "random-light",backgroundColor = "grey")

#html ve png olarak kaydedilmesi
saveWidget(hw2,"27.html",selfcontained = F)
webshot::webshot("27.html","hw1.png",vwidth = 1800, vheight = 1000, delay =10)

Yukarıda yazılan kod bloğunun çalıştırılmasından sonra elde edilen beşgen (pentagon) düzeninde ve gri arka planında kelime bulutu aşağıda verilmiştir.

2. Duygu analizlerinin yapılması

Bu kısımda yukarıda giriş kısmında bahsedilen dil sözlükleri kullanılarak duygu analizleri yapılacaktır.

Polarite testi

Bu kısımda aşağıda yazılan kod bloğu ile kelime bazlı polarite testi yapılmıştır. Cümle bazlı polarite testi yapılabileceğini hatırlatmakta fayda vardır.

polarite<-sentiment(tr$word)

tablo<-cbind(tr$word, polarite[,c(3,4)])

  ggplot(tablo, aes(word_count, sentiment))+
  geom_point(color="blue")+
  geom_hline(yintercept = mean(tablo$sentiment), color="red", size=1)+
  labs(y = "Skor", x = "Kelimelerin Frekansı") +
  theme_igray()+
  labs(caption = "Veri Kaynağı: A Turkish Woman’s European Impressions adlı eserden Tevfik Bulut tarafından analiz edilmiştir.") +
  theme(plot.caption = element_text(hjust = 0, face = "italic"))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen polarite skorları aşağıdaki grafikte verilmiştir. Daha önce polarite skorlarının -1 ile +1 arasında değiştiğini ifade etmiştik. Elde edilen bulgular eserde hakim olan duygunun nötr (0)’e yakın olduğunu göstermektedir.

Polarite test sonuçlarına ilişkin tanımlayıcı istatistikler ise aşağıda yazılan kod bloğu ile elde edilmiştir.

stat.desc(polarite$sentiment, basic=T) %>% pander()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Polarite testi tanımlayıcı istatistikleri aşağıdaki tabloda verilmiştir. Elde edilen ortalama (0,02947) polarite test değeri nötr (0)’e yakın bir görünüm sergilemektedir.

----------------------------------------------------------------------------
 nbr.val   nbr.null   nbr.na   min   max   range    sum    median    mean   
--------- ---------- -------- ----- ----- ------- ------- -------- ---------
  14754     10936       0      -1     1      2     434.8     0      0.02947 
----------------------------------------------------------------------------

Table: Table continues below

 
-------------------------------------------------------
 SE.mean    CI.mean.0.95    var     std.dev   coef.var 
---------- -------------- -------- --------- ----------
 0.002724     0.00534      0.1095   0.3309     11.23   
-------------------------------------------------------

Bing leksikonu

Aşağıda yazılan kod bloğu ile Bing leksikonu duygu grupları (pozitif ve negatif) elde edilmiştir.

d6<-sayi[,-1] %>% inner_join(get_sentiments("bing"),by="word")
d6[,c(1,3,2)]%>% group_by(sentiment) %>% arrange(desc(n)) %>%
  top_n(10) %>%
  ggplot(aes(x=reorder(word,n), y=n, fill = sentiment)) +
  geom_col(show.legend = FALSE) +
  facet_wrap(~sentiment, scales = "free_y") +
  labs(
    y = "Kelime",
    x = "Sıklık"
  ) +
  coord_flip()+
 theme_hc()+
 labs(caption = "A Turkish Woman’s European Impressions adlı eserden Tevfik Bulut tarafından analiz edilmiştir.")+
 theme(plot.caption = element_text(hjust = 0, face = "italic"))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Bing leksikonu sonuçları kelime frekansı en yüksek olan ilk 10 kelimeye göre aşağıdaki grafikte verilmiştir. Elde edilen bulgular metinde baskın olan duygunun olumlu (pozitif) olduğunu göstermektedir.

Bing leksikonuna ilişkin tanımlayıcı istatistikler ise aşağıda yazılan kod bloğunda verilmiştir.

d6<-sayi[,-1] %>% inner_join(get_sentiments("bing"),by="word")
#duygu grubuna göre frekanslar
d6[,c(1,3,2)]%>% group_by(sentiment) %>% summarise(toplam=sum(n)) %>% mutate(oran=round(toplam/sum(toplam)*100,2)) %>% arrange(desc(oran)) %>% formattable()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Bing leksikonu tanımlayıcı istatistikleri aşağıdaki tabloda verilmiştir. Aşağıda verilen bulgudan şu bilgi çıkarılmalıdır: Metinde pozitif kelimelerin frekansı ve frekansların oranı (n=1119, frekansların toplam içindeki oranı = %52,09) negatif olanlardan daha yüksek olduğundan metinde pozitif duygu daha ağır basmaktadır.

Afinn leksikonu

Afinn dil sözlüğünde skorlar -5 (negatif) ve +5 (pozitif) arasında tamsayı değerleri almaktadır. Afinn leksikonu bulguları aşağıda yazılan kod bloğu ile elde edilmiştir.

#Afinn leksikon değerlerinin elde edilmesi
d6<-tr %>% inner_join(get_sentiments("afinn"),by="word")

#Tanımlayıcı istatistikler
stat.desc(d6$value, basic=T) %>% pander()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Afinn leksikonu tanımlayıcı istatistikleri aşağıdaki tabloda verilmiştir. Aşağıda verilen bulgudan şu bilgi çıkarılmalıdır: Afinn leksikon sonuçlarına bakıldığında merkezi dağılım ölçülerinden biri olan ortalama 0,3821 olduğu için metinde nötr (0)’ün biraz üstünde ve pozitife yakın duyguların daha ağırlıkta olduğu söylenebilir.

-------------------------------------------------------------------------
 nbr.val   nbr.null   nbr.na   min   max   range   sum   median    mean  
--------- ---------- -------- ----- ----- ------- ----- -------- --------
  1879        0         0      -4     4      8     718     1      0.3821 
-------------------------------------------------------------------------

Table: Table continues below

 
-----------------------------------------------------
 SE.mean   CI.mean.0.95    var    std.dev   coef.var 
--------- -------------- ------- --------- ----------
 0.04935      0.0968      4.577    2.139     5.599   
-----------------------------------------------------

Loughran leksikonu

Loughran leksikonunda kelimeler altı duygu kategorisinde ele alınır: “olumsuz”, “pozitif”, “ihtilaflı”, “belirsizlik”, “kısıtlayıcı” veya “gereksiz” (“negative”, “positive”, “litigious”, “uncertainty”, “constraining”, or “superfluous”). Loughran leksikonu bulguları aşağıda yazılan kod bloğu ile elde edilmiştir.

#Loughran leksikon değerlerinin elde edilmesi
l1<-tr %>% inner_join(get_sentiments("loughran"),by="word")

#Duygu grubuna göre frekanslar
l1 %>% group_by(sentiment) %>% summarise(toplam=n()) %>% mutate(oran=round(toplam/sum(toplam)*100,2)) %>% arrange(desc(oran)) %>% formattable()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Loughran leksikonu tanımlayıcı istatistikleri aşağıdaki tabloda verilmiştir. Aşağıda verilen bulgudan şu sonuç çıkarılmalıdır: %45,53 ile negatif duygunun metnin genelinde baskın olduğu görülmektedir. Metinde negatif duyguyu pozitif ve belirsizlik duyguları izlemiştir.

Loughran leksikonu sonuçları aşağıda yazılan kod bloğu ile grafik üzerinde de verebiliriz.

  l1 %>% 
  group_by(sentiment) %>% summarise(n=n())%>%
  ggplot(aes(reorder(sentiment, n), n, fill=sentiment)) +
  geom_bar(stat="identity", show.legend = FALSE)+
  labs(y = "Frekans", x = "Duygu")+
  theme_igray()+
  labs(caption = "Veri Kaynağı: A Turkish Woman’s European Impressions adlı eserden Tevfik Bulut tarafından analiz edilmiştir.")+
  theme(plot.caption = element_text(hjust = 0, face = "italic"))

Yukarıdaki kod bloğu çalıştırıldığında Loughran leksikonuna göre metinden elde edilen duygular aşağıdaki grafikte verilmiştir.

Dil sözlükleri içerisinde duygu kategorisine filtreleme yapmak oldukça kolaydır. Örnek teşkil teşkil etmesi adına Loughran leksikonunda pozitif olarak etiketlenen kelimelerden ilk 50’sini aşağıda yazılan kod bloğu ile verelim. Dilersek pozitif olarak etiketlenen kelimelerin tamamı elde edebilir ve xlsx uzantılı çalışma kitaplarına yazdırabiliriz. Benzer işlemleri diğer dil sözlüklerinde de yapabiliriz.

l1 %>% filter(sentiment=='positive') %>% head(50) %>% pander(caption="Pozitif olarak etiketlenen ilk 50 kelime")

Yukarıdaki kod bloğunun çalıştırılmasından sonra metinde pozitif olarak etiketlenen ilk 50 kelime aşağıdaki tabloda verilmiştir.

-------------------------
    word       sentiment 
------------- -----------
    good       positive  

    dream      positive  

    great      positive  

    easy       positive  

   better      positive  

    great      positive  

  greatest     positive  

 diligently    positive  

  progress     positive  

 exclusively   positive  

    great      positive  

    great      positive  

  happiness    positive  

  pleasure     positive  

    great      positive  

    great      positive  

   highest     positive  

  beautiful    positive  

   pleased     positive  

  strength     positive  

   better      positive  

  pleasure     positive  

   perfect     positive  

  delighted    positive  

   impress     positive  

    great      positive  

    best       positive  

  stronger     positive  

  beautiful    positive  

  beautiful    positive  

   winner      positive  

    great      positive  

  satisfied    positive  

    great      positive  

    great      positive  

  beautiful    positive  

    happy      positive  

  greatest     positive  

    easy       positive  

    great      positive  

    great      positive  

  pleasure     positive  

    able       positive  

  stronger     positive  

   invent      positive  

    great      positive  

   better      positive  

   leading     positive  

 compliment    positive  

    great      positive  
-------------------------

Table: Pozitif olarak etiketlenen ilk 50 kelime

Şimdide Loughran leksikonunda duygulara göre etiketlenmiş kelimelerin tamamını aşağıda yazılan kod bloğu ile verelim.

l1<-tr %>% inner_join(get_sentiments("loughran"),by="word")
write_xlsx(l1, "loughranleksikonu.xlsx")

Yukarıdaki kod bloğunun çalıştırılmasından sonra Loughran leksikonundaki duygu kategorilerine göre etiketlenmiş metindeki bütün kelimeler xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmış olup aşağıdaki linkten indirebilirsiniz.

Loughran leksikonundaki duygu kategorilerine göre etiketlenmiş 50 kelimeyi olasılıklı örnekleme yöntemlerden biri olan ve önyargı (bias) içermeyen tekrarsız basit tesadüfi örnekleme yöntemi kullanarak seçmek için aşağıdaki gibi basit bir kod satırı yazalım.

set.seed(1985) # Örneklemde aynı gözlem birimlerinin elde edilmesi için sabitlenmiştir.
tr %>% inner_join(get_sentiments("loughran"),by="word") %>% sample_n(50) %>% pander(caption="Basit Tekrarsız Örnekleme Yöntemi İle Seçilen Kelimeler ve Duygu Etiketleri")

Loughran leksikonundaki duygu kategorilerine göre etiketlenmiş 50 kelime tekrarsız basit tesadüfi örnekleme yöntemi kullanarak belirlenmiş ve aşağıdaki tabloda verilmiştir.

-----------------------------
     word        sentiment   
-------------- --------------
 exceptional      positive   

  neglected       negative   

     poor         negative   

    doubt       uncertainty  

    unjust        negative   

  delighted       positive   

    strict      constraining 

     hurt         negative   

   possible     uncertainty  

   pleased        positive   

     risk       uncertainty  

    great         positive   

 disastrously     negative   

    error         negative   

    slowly        negative   

     good         positive   

     late         negative   

   probably     uncertainty  

   believed     uncertainty  

    risked      uncertainty  

     good         positive   

    great         positive   

   exposed        negative   

 permissible    constraining 

    force         negative   

   perfect        positive   

    great         positive   

    great         positive   

    ceased        negative   

    might       uncertainty  

 unknowingly      negative   

     lost         negative   

   against        negative   

    strong        positive   

    court        litigious   

    great         positive   

   pleasure       positive   

   suddenly     uncertainty  

  satisfied       positive   

  exaggerate      negative   

    vague       uncertainty  

   believed     uncertainty  

  excitement      positive   

     best         positive   

    great         positive   

  criticism       negative   

   harmful        negative   

 disappointed     negative   

   pleasure       positive   

  suffering       negative   
-----------------------------

Table: Basit Tekrarsız Örnekleme Yöntemi İle Seçilen Kelimeler ve Duygu Etiketleri

Nrc leksikonu

NRC dil sözlüğünde 10 duygu bulunmaktadır. Bu duygular şöyledir:

  1. positive
  2. negative
  3. Anger
  4. Anticipation
  5. Disgust
  6. Fear
  7. Joy
  8. Sadness
  9. Surprise
  10. Trust

Aşağıda yazılan kod bloğu ile Nrc leksikonuna göre metindeki duygular ortaya konulmuştur.

#Nrc leksikon değerlerinin elde edilmesi
nrc<-tr %>% inner_join(get_sentiments("nrc"),by="word")

#Duygu grubuna göre frekanslar
nrc %>% group_by(sentiment) %>% summarise(toplam=n()) %>% mutate(oran=round(toplam/sum(toplam)*100,2)) %>% arrange(desc(oran)) %>% formattable()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Nrc leksikonu tanımlayıcı istatistikleri aşağıdaki tabloda verilmiştir. Aşağıda verilen bulgudan şu sonuç çıkarılmalıdır: %22,12 ile pozitif duygunun metnin genelinde baskın olduğu görülmektedir. Metinde pozitif duyguyu negatif ve güven (trust) duyguları izlemiştir.

Nrc leksikonu sonuçlarına frekansı en yüksek ilk 5 kelime duygu kategorilerine göre aşağıda yazılan kod bloğu ile grafik üzerinde de verilmiştir.

   nrc  %>% 
   group_by(sentiment) %>% 
   count(word, sort=T) %>% 
   top_n(5) %>% 
   ggplot(aes(reorder(word, n), n, fill=sentiment)) +
   geom_bar(stat="identity", show.legend = FALSE) +
   facet_wrap(~sentiment, scales="free_y", ncol=5) +
   labs(y = "Frekans", x = NULL) +
   coord_flip()+
   labs(caption = "Veri Kaynağı: A Turkish Woman’s European Impressions adlı eserden Tevfik Bulut tarafından analiz edilmiştir.")+
   theme(plot.caption = element_text(hjust = 0, face = "italic"))

Yukarıdaki kod bloğu çalıştırıldığında Nrc leksikonuna göre metinden elde edilen duygular aşağıdaki grafikte verilmiştir.

Syuzhet leksikonu

Syuzhet leksikonu -1 +1 değeri arasında değer almaktadır. Bu leksikona dair bulgular aşağıda yazılan kod bloğu ile elde edilmiştir.

#Syuzhet leksikon değerlerinin elde edilmesi
sskor=get_sentiment(as.vector(tr$word), method="syuzhet")
syuzhet=tibble(kelime=tr$word, skor=sskor)

#Tanımlayıcı istatistikler
stat.desc(syuzhet$skor, basic=T) %>% pander()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Syuzhet leksikonu tanımlayıcı istatistikleri aşağıdaki tabloda verilmiştir. Aşağıda verilen bulgudan şu bilgi çıkarılmalıdır: Syuzhet leksikon sonuçlarına bakıldığında merkezi dağılım ölçülerinden biri olan ortalama 0,02742 olduğu için metinde nötr (0)’ün biraz üstünde ve pozitife yakın duyguların daha ağırlıkta olduğu söylenebilir. Syuzhet testinde elde edilen ortalama değer ile polarite (negatif ve pozitif duygular) testi sonucu elde edilen ortalama (0,02947) değer birbirine oldukça yakındır.

----------------------------------------------------------------------------
 nbr.val   nbr.null   nbr.na   min   max   range    sum    median    mean   
--------- ---------- -------- ----- ----- ------- ------- -------- ---------
  14754     11031       0      -1     1      2     404.5     0      0.02742 
----------------------------------------------------------------------------

Table: Table continues below

 
-------------------------------------------------------
 SE.mean    CI.mean.0.95    var     std.dev   coef.var 
---------- -------------- -------- --------- ----------
 0.002631     0.005157     0.1021   0.3196     11.66   
-------------------------------------------------------

3. PDF dokümanların kelime bulutlarının çıkarılması ve duygu analizlerinin yapılması

Bu kısımda bahse konu metin üzerinden adım adım kelime bulutları oluşturulacaktır. Kelime bulutlarının oluşturulması frekanslara göre oluşturulduğundan metnin dili çok belirleyici olmamaktadır.

Veri setinin kaynağından okunması

#Raporun bulunduğu URL adresi
url="https://openknowledge.worldbank.org/bitstream/handle/10986/34710/9781464816123.pdf?sequence=15&isAllowed=y"
# Pdf fonksiyonu içerisinde URL adresinin tanımlanması ve dilin ingilizce olarak belirlenmesi doküman ingilizce olduğu için
rapor<- readPDF(control=list(text="-layout"))(elem=list(uri=url), language="en")
rapor <- rapor$content
#Rapor içeriğinin tibble tablo formatına dönüştürülmesi
rp=as_tibble(rapor) %>% rename(cumle=value)
rp

Veri setinin yapısının incelenmesi

Aşağıda yazılan kod bloğu ile veri setindeki değişken tipi ve gözlem sayısı ortaya konulmuştur.

glimpse(rp)

#alternatif
str(rp)

Yukarıdaki kod bloğu çalıştırıldığında aşağıda verildiği üzere veri setinin 234 gözlemden yani cümleden oluştuğu, değişken tipinin ise karakter yani nominal olduğu görülmektedir. Veri setinin 1 değişkenden oluştuğu ve değişkenin “cumle” olduğu da görülmektedir. Bu veri setinde her bir gözlem raporun bir sayfasını göstermektedir. Zira söz konusu rapor da 234 sayfadan oluşmaktadır.

Rows: 234
Columns: 1
$ cumle <chr> "A World Bank Group\r\nFlagship Report\r\n                   JANUARY 2021\r\n

Metin verisinin kelime bulutu oluşturulmadan önce temizlenmesi ve çıkarılacak kelimelerin belirlenmesi

Bu kısımda ilk olarak aşağıda yazılan kelimeler metinden çıkarılacaktır. Bu kısımda ister Türkçe isterse diğer dillerde çıkarılacak kelimeleri belirleyebilirsiniz.

rmv1<-c("may", "can","years","age","mean","diet", "qol","based","dog","two","per","model","will","is","aarc","results","label","among","are","level","cancer", "used","many", "nlm", "data", "study", "p", "n", "net", "biochar", "aloe", "ses", "systems","avs", "acid","rate","aha","year","time","since","stroke", "however", "p lt", "ssris", "score", "index","hia", "largest", "current", "ncds", "found", "labelobjective", "It","yet","models", "vera","total", "also", "ptsd", "lt", "sroi", "icdm", "scores", "new", "arm", "china", "sample", "semen", "survey", "labelconclusions","within","labelbacground","range","followed","tagsnps","mbovis","labeldesign","increased","published", "likely", "nlmcategorymethods", "acids", "fatty", "employersponsored","labelmethods", "using", "conclusions","setting", "whether","findings","crosssectional", "one", "three","review","associated", "analysis", "studies", "nlmcategory", "background", "nlmcategorymethods", "in", "of", "and", "as", "19", "the","have","were","an", "was", "during", "to", "for","a", "cth","or","hcs", "this", "u","ci", "t", "la", "043d", "064a","043b", "062a", "trastuzumab","ewars","research", "either", "ipps73","ippss","87,017", "ofips", "15,000", "eshre","tdabc","thaihealth", "0.157", "and", "analyzed", "methods", "terms", "subjects", "being", "there", "compared", "while",  "when", "their","these","between", "his","her", "which", "that","who", "after","related","higher","group", "other","each","those","lower", "number","rates","first", "about", "groups","through","including", "across", "should", "must", "have","months","adjusted", "analyses", "estimated", "could", "would", "without", "further", "versus", "cross", "method", "follow", "general", "under", "below", "estimate","following", "received", "available", "before", "aimed", "collected", "often", "often","include","relevant","having","therefore","because","thus", "gutenberg","almost", "license", "ebook", "anyone", "anywhere", "title", "author", "enough", "nothing", "cannot", "really", "never", "again", "wwwgutenbergorg", "whatsoever", "editor", "chapter","perhaps", "shall", "every","where", "been", "more", "than", "even", "with", "what",  "who", "when", "only", "your", "into", "in", "on", "always", "online", "copy", "away", "back", "myself", "still", "from", "figure", "over", "such")

Bu kısımda aşağıda yazılan kod bloğundaki satırlarda sırasıyla;

  • Metindeki harflerin tamamı küçük harfe dönüştürülmüştür.
  • Metindeki noktalama işaretleri kaldırılmıştır.
  • Metinle iç içe geçmiş (kızgın325 gibi) rakam ve sayılar metinden ayıklanmıştır.
  • Metinden rakam ve sayılar çıkarılmıştır.
  • Yukarıdaki belirtilen kelimeler metinden çıkarılmıştır. Burada dikkat edilirse çıkarılan kelimeler daha çok zamir, sıfat, edat ve bağlaçlardır. İsteğe bağlı olarak burada değişiklikler yapabilirsiniz.
  • Karakter sayısı 3’ten büyük kelimeler filtrelenmiştir. İsteğe bağlı olarak burada değişiklikler yapabilirsiniz.
  • Metin istenmeyen formatta kelimeler varsa ve bu kelimeleri çıkarmanız analize zarar verecekse yerine kelimeler atayabilirsiniz.
  • Metnin değişiklikler sonrası “tibble” tablo düzenine dönüştürülmüştür.
tr<-rp %>% mutate(word=str_to_lower(cumle))%>% unnest_tokens(word, cumle) # Metindeki harflerin tamamı küçük harfe dönüştürülmüştür.
tr<-tr %>% mutate(word=removePunctuation(word)) # Metindeki noktalama işaretleri kaldırılmıştır.
tr<-tr %>% mutate(word=str_squish(word)) # Metinle iç içe geçmiş (kalem325) rakam ve sayılar metinden ayıklanmıştır.
tr<-tr %>% mutate(word=removeNumbers(word)) # Metinden rakam ve sayılar çıkarılmıştır.
tr<-tr %>% filter(!word %in% rmv1) # Yukarıdaki belirtilen kelimeler metinden çıkarılmıştır. Burada dikkat edilirse çıkarılan kelimeler daha çok zamir, sıfat, edat ve bağlaçlardır. İsteğe bağlı olarak burada değişiklikler yapabilirsiniz.
tr<-tr %>% filter(str_length(word)>3) # Karakter sayısı 3'ten büyük kelimeler filtrelenmiştir. İsteğe bağlı olarak burada değişiklikler yapabilirsiniz.
tr<-str_replace(tr$word, "[ı]", "i") # Metin istenmeyen formatta kelimeler varsa ve bu kelimeleri çıkarmanız analize zarar verecekse yerine kelimeler atayabilirsiniz.
tr<-str_replace(tr$word, "emdes", "emde") # Metin istenmeyen formatta kelimeler varsa ve bu kelimeleri çıkarmanız analize zarar verecekse yerine kelimeler atayabilirsiniz.
rpc<-tr %>% as_tibble() %>% rename(word=value) # Metnin değişiklikler sonrası tibble tablo düzenine dönüştürülmüştür.
rpc

Kelime sıklıklarının ortaya konulması

Aşağıda yazılan kod bloğunda metindeki kelimelerin sıklıkları bulunmuş, ardından ise frekansı en yüksek ilk 100 kelime verilmiştir. En sonda ise kelimeler ve frekansları xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmıştır. Veri setindeki yeni gözlem sayısı 68,142’dir. Yani xlsx uzantılı çalışma kitabında 68,142 satır bulunmaktadır. Bu yüzden çalışma kitabını açarken biraz beklemeniz gerekebilir.

sayi<-rpc %>% group_by(word) %>% count() %>% arrange(desc(n))
sayi<-sayi %>% add_column(id=1:NROW(sayi),.before = "word")
sayi

#Frekansı en yüksek ilk 100 kelime
sayi %>% head(100)  %>% pander(caption="Frekansı En Yüksek İlk 100 Kelime")

#xlsx uzantılı çalışma kitabına sıklıklarına göre kelimelerin yazdırılması

write_xlsx(sayi, "kelimelerrapor.xlsx")

Yukarıdaki kod bloğunda ikinci alt blok çalıştırıldığında elde edilen frekansı en yüksek ilk 100 kelime aşağıda verilmiştir. Raporda frekansı en yüksek ilk 4 kelime sırasıyla “growth”, “emde”, “bank”, “pandemic” kelimeleridir. emde kelimesi gelişmekte olan ve gelişmiş ekonomilerin kısaltmasıdır.

----------------------------
 id        word         n   
----- --------------- ------
  1       growth       1108 

  2        emde        922  

  3        bank        716  

  4      pandemic      704  

  5       global       628  

  6        world       626  

  7       percent      578  

  8        debt        570  

  9      economies     563  

 10       policy       523  

 11      economic      487  

 12      countries     426  

 13       covıd       407  

 14      financial     400  

 15        asset       381  

 16     investment     379  

 17       fiscal       372  

 18       market       326  

 19        term        324  

 20      monetary      281  

 21      advanced      276  

 22        long        276  

 23       output       275  

 24      expected      270  

 25      purchase      265  

 26       central      252  

 27     washington     231  

 28     government     225  

 29   ınternational   225  

 30       average      222  

 31       prices       222  

 32      programs      217  

 33       capital      216  

 34      forecasts     212  

 35      recovery      212  

 36       income       190  

 37    productivity    187  

 38       effects      185  

 39       economy      181  

 40      potential     177  

 41      emerging      173  

 42       reform       173  

 43      activity      172  

 44       support      169  

 45       january      167  

 46        some        167  

 47      prospects     166  

 48       country      158  

 49     developing     158  

 50        asia        156  

 51      measures      156  

 52        paper       154  

 53        risk        154  

 54       crisis       153  

 55     development    152  

 56      forecast      150  

 57       africa       148  

 58      purchases     147  

 59       working      147  

 60       reforms      146  

 61        bond        144  

 62        risks       143  

 63        labor       141  

 64        large       141  

 65       region       137  

 66      policies      136  

 67        last        134  

 68       capita       133  

 69      increase      133  

 70       outlook      133  

 71       public       133  

 72       markets      130  

 73        trade       125  

 74       decade       124  

 75        fund        120  

 76    announcements   118  

 77       crises       116  

 78     percentage     115  

 79      projected     113  

 80      exchange      112  

 81        here        112  

 82      inflation     112  

 83       yields       110  

 84        note        109  

 85      economics     108  

 86       health       108  

 87       impact       108  

 88       levels       107  

 89        south       107  

 90        lıcs       106  

 91        cases       105  

 92       losses       104  

 93       change       103  

 94      includes      103  

 95       sector       102  

 96       demand       100  

 97      education     100  

 98      episodes      100  

 99       private      100  

 100      remain       100  
----------------------------

Table: Frekansı En Yüksek İlk 100 Kelime

Yukarıdaki kod bloğunda üçüncü alt blok çalıştırıldığında elde edilen kelimeler ve frekansları xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmış olup aşağıda linkten indirebilirsiniz.

Kelime bulutlarının oluşturulması

Bu kısımda wordcloud2 kütüphanesini kullanarak aşağıdaki kod bloğunda verelim. Burada aynı zamanda oluşturulan kelime bulutu png ve html uzantılı olarak da kaydedilmektedir. Aşağıda yazılan kod bloğunda en yüksek frekansa sahip ilk 350 satırdaki kelimelerin frekansı ele alınmıştır. Dilerseniz wordcloud2 fonksiyonu içerisindeki parametreleri değiştirerek farklı alternatifler deneyebilirsiniz.

sayi<-rpc %>% group_by(word) %>% count() %>% arrange(desc(n))
sayi<-sayi %>% add_column(id=1:NROW(sayi),.before = "word")

#kelime bulutunun oluştuurlması
rp <- wordcloud2(head(sayi[,2:3], 350), size=1, minSize = 10, color = "random-light",backgroundColor = "dark", shape = "circle")

#html ve png olarak kaydedilmesi
saveWidget(rp,"28.html",selfcontained = F)
webshot::webshot("28.html","rp.png",vwidth = 1800, vheight = 1000, delay =10)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde ettiğimiz kelime bulutu aşağıda verilmiştir.

Duygu analizlerinin yapılması

Bu kısımda Loughran dil sözlüğü kullanılarak duygu analizi yapılmıştır. Loughran leksikonunda kelimeler altı duygu kategorisinde ele alınır: “olumsuz”, “pozitif”, “ihtilaflı”, “belirsizlik”, “kısıtlayıcı” veya “gereksiz” (“negative”, “positive”, “litigious”, “uncertainty”, “constraining”, or “superfluous”). Loughran leksikonu bulguları aşağıda yazılan kod bloğu ile elde edilmiştir.

#Loughran leksikon değerlerinin elde edilmesi
l2<-rpc %>% inner_join(get_sentiments("loughran"),by="word")
 
#Duygu grubuna göre frekanslar
l2 %>% group_by(sentiment) %>% summarise(toplam=n()) %>% mutate(oran=round(toplam/sum(toplam)*100,2)) %>% arrange(desc(oran)) %>% formattable()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Loughran leksikonu tanımlayıcı istatistikleri aşağıdaki tabloda verilmiştir. Aşağıda verilen bulgudan şu sonuç çıkarılmalıdır: %57,70 ile negatif duygunun 2021 Küresel Ekonomik Beklentiler (Global Economic Prospects) raporunun genelinde baskın olduğu görülmektedir. Metinde negatif duyguyu pozitif ve belirsizlik duyguları izlemiştir. Aslında duygu analizi bulguları, dünya ekonomisinde yaşanan durumu da ortaya koymaktadır.

Loughran leksikonu sonuçları aşağıda yazılan kod bloğu ile grafik üzerinde de verebiliriz.

l2 %>% 
group_by(sentiment) %>% summarise(n=n())%>%
ggplot(aes(reorder(sentiment, n), n, fill=sentiment)) +
geom_bar(stat="identity", show.legend = FALSE)+
geom_text(aes(label=n), vjust=-0.3, size=3.5)+
labs(y = "Frekans", x = "Duygu")+
theme_economist_white()+
labs(caption = "Veri: Global Economic Prospects adlı 2021 raporundan Tevfik Bulut tarafından analiz edilmiştir.")+
theme(plot.caption = element_text(hjust = 0, face = "italic"))

Yukarıdaki kod bloğu çalıştırıldığında Loughran leksikonuna göre 2021 Küresel Ekonomik Beklentiler raporundan elde edilen duygular aşağıdaki grafikte verilmiştir.

Duygu sözlükleri içerisinde duygu kategorisine filtreleme yapmak oldukça kolaydır. Örnek teşkil teşkil etmesi adına Raporda Loughran leksikonuna göre negatif olarak etiketlenen kelimelerden ilk 50’sini aşağıda yazılan kod bloğu ile verelim. Dilersek pozitif olarak etiketlenen kelimelerin tamamı elde edebilir ve xlsx uzantılı çalışma kitaplarına yazdırabiliriz. Benzer işlemleri diğer dil sözlüklerinde de gerçekleştirebiliriz.

l2 %>% filter(sentiment=='negative') %>% head(50) %>% pander(caption="Negatif olarak etiketlenen ilk 50 kelime")

Yukarıdaki kod bloğunun çalıştırılmasından sonra metinde negatif olarak etiketlenen ilk 50 kelime aşağıdaki tabloda verilmiştir.

-----------------------------
      word         sentiment 
----------------- -----------
     errors        negative  

    omissions      negative  

  discrepancies    negative  

     failure       negative  

   limitation      negative  

   disclaimer      negative  

      error        negative  

   disclaimer      negative  

    infringe       negative  

     claims        negative  

  infringement     negative  

    critical       negative  

    dangerous      negative  

 disappointments   negative  

      lost         negative  

   persistent      negative  

    deficits       negative  

   challenges      negative  

   challenges      negative  

   challenges      negative  

 disappointments   negative  

    weakness       negative  

   weaknesses      negative  

   downgraded      negative  

   downgraded      negative  

   downgrades      negative  

     crisis        negative  

   downgrades      negative  

     adverse       negative  

    dangerous      negative  

      lost         negative  

   persistent      negative  

    deficits       negative  

   challenges      negative  

    inaction       negative  

   challenges      negative  

     delayed       negative  

     crises        negative  

     damage        negative  

     adverse       negative  

     errors        negative  

     losses        negative  

    setbacks       negative  

    setbacks       negative  

   persistence     negative  

    setbacks       negative  

    setbacks       negative  

    setbacks       negative  

   devastating     negative  

   devastating     negative  
-----------------------------

Table: Negatif olarak etiketlenen ilk 50 kelime

Şimdide Loughran leksikonunda duygulara göre etiketlenmiş kelimelerin tamamını aşağıda yazılan kod bloğu ile verelim.

l2<-rpc %>% inner_join(get_sentiments("loughran"),by="word")
write_xlsx(l2, "rapor_loughranleksikonu.xlsx")

Yukarıdaki kod bloğunun çalıştırılmasından sonra Loughran leksikonundaki duygu kategorilerine göre etiketlenmiş metindeki bütün kelimeler xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmış olup aşağıdaki linkten indirebilirsiniz.

Loughran leksikonundaki duygu kategorilerine göre etiketlenmiş 50 kelimeyi olasılıklı örnekleme yöntemlerden biri olan ve önyargı (bias) içermeyen tekrarsız basit tesadüfi örnekleme yöntemi kullanarak seçmek için aşağıdaki gibi basit bir kod satırı yazalım.

set.seed(61) 
rpc %>% inner_join(get_sentiments("loughran"),by="word") %>% sample_n(50) %>% pander(caption="Basit Tekrarsız Tesadüfi Örnekleme Yöntemi İle Seçilen Kelimeler ve Duygu Etiketleri")

Loughran leksikonundaki duygu kategorilerine göre etiketlenmiş 50 kelime tekrarsız basit tesadüfi örnekleme yöntemi kullanarak belirlenmiş ve aşağıdaki tabloda verilmiştir.

-----------------------------
     word        sentiment   
-------------- --------------
   exposed        negative   

    crisis        negative   

   despite        positive   

   impaired     constraining 

 forbearance     litigious   

   friendly       positive   

 improvement      positive   

  deviation       negative   

  recessions      negative   

   greater        positive   

   whereas       litigious   

    crises        negative   

    gains         positive   

   success        positive   

    risks       uncertainty  

    crisis        negative   

  challenges      negative   

    risks       uncertainty  

    better        positive   

  effective       positive   

    risks       uncertainty  

    easing        negative   

   negative       negative   

  aggravate       negative   

    risks       uncertainty  

     poor         negative   

   require      constraining 

  discourage      negative   

  regulatory     litigious   

   advances       positive   

    damage        negative   

  aggravate       negative   

   stronger       positive   

    crises        negative   

  uncertain     uncertainty  

    crises        negative   

    sudden      uncertainty  

  excessive       negative   

 transparency     positive   

 forbearance     litigious   

    boost         positive   

  regulatory     litigious   

    severe        negative   

 probability    uncertainty  

    gains         positive   

     good         positive   

 difficulties     negative   

   despite        positive   

   advances       positive   

   adverse        negative   
-----------------------------

Table: Basit Tekrarsız Tesadüfi Örnekleme Yöntemi İle Seçilen Kelimeler ve Duygu Etiketleri

Dünya Bankasının raporu üzerinden sadece Loughran leksikonu kullanarak duygu analizi yapılmıştır. Burada 2. bölümde belirttiğim diğer duygu sözlükleri uygulama adımları kullanılarak diğer leksikonlara göre de duygu analizi yapılabilir.

4. Sentetik veriler üzerinden kelime bulutlarının oluşturulması

Örnek uygulama kapsamında son çalışma sentetik veriler üretilip kelime bulutlarının oluşturulmasıdır. Bu çalışma kapsamında sentetik olarak üretilen kelimelerin büyük bir çoğunluğu İstiklal Marşımızdan alınmıştır. Burada sentetik verilerin üretilmesinde tekrarlı örnekleme tekniği kullanılmış ve 10.000 gözlem üretilmiştir. Bu gözlemler üzerinde kelime bulutları oluşturulmuştur. Şimdi adım adım kelime havuzu oluşturup, ardından tekrarlı örnekleme tekniğini kullanarak 10000 gözlem üretelim. Ardından ise kelime bulutlarını oluşturalım. İlk olarak aşağıda yazılan kod bloğu ile vektör içerisinde kelime havuzumuzu oluşturalım.

#kelime havuzu oluşturma
havuz=c("anadolu", "türkiye", "vatan", "mehmetçik", "istanbul", "ankara", "başkent", "istiklal", "güvenlik","türk", "anıtkabir","fatih", "atatürk","ertuğrul", "diriliş", "lonca","kültür", "asker", "göktürk", "bağımsızlık", "zafer", "ulus","sancak","yurt","siper","hilal","hür", "toprak","millet","hürriyet","izmihlal", "ezan", "şüheda", "inklap","cumhuriyet", "bayrak", "şafak","iman", "medeniyet","ecdat","arş", "hür","hakk", "hüda","secde", "cüdâ", "şafak", "ay","yıldız", "bayrak")

Şimdi aşağıda yazılan kod bloğu ile tibble tablo düzeni içerisinde tekrarlı basit tesadüfi örnekleme yöntemiyle 10000 gözlemden oluşan bir tablo oluşturalım.

#tekrarlı örnekleme tekniği ile kelime tablosu oluşturma
set.seed(1299) # Aynı örneklem birimlerini almanız için sabitlenmiştir. 
orneklem= tibble(kelime=sample(havuz, size=10000, replace = TRUE))

Kelime tablomuzu oluşturduğumuza göre aşağıda yazılan kod bloğu ile kelimelerin sıklıklarını (frekanslarını) hesaplayabiliriz.

deneme<-orneklem %>% group_by(kelime) %>% count() %>% arrange(desc(n))
deneme<-deneme %>% add_column(id=1:NROW(sayi),.before = "kelime")
deneme

Kelime sıklık tablosunu oluşturduk. Şimdi sıra aşağıda yazılan kod bloğu ile kelime bulutlarını oluşturmaya gelmiştir. Aşağıda kod bloğunda kelime bulutunu hem png hem html olarak kaydedebilirsiniz. Size bu noktada bir tavsiye vereyim böyle bir durumda yani farklı formatta dosyaları aynı dosyaya kaydetmesi için R çalışma sayfasını çalışmaya başlamadan önce oluşturduğunuz bir klasör içerisinde açınız.

#kelime bulutunun oluşturulması
bulut1<- wordcloud2(head(deneme[,-1],150), size=0.5, color = "random-light", backgroundColor = "grey")

#html ve png olarak kaydedilmesi
saveWidget(bulut1,"bulut1.html",selfcontained = F)
webshot::webshot("bulut1.html","bulut1.png",vwidth = 1800, vheight = 1000, delay =10)

Yukarıdaki kod bloğunun çalıştırılmasından sonra sentetik verilerden ürettiğimiz kelime bulutu daire (circle) düzeninde aşağıda verilmiştir.

Son olarak aşağıda yazılan kod bloğu ile yıldız (star) düzeninde kelime bulutunu oluşturalım. Kelime bulutunda arka fonumuz kutsal bayrağımız rengi olan kırmızı, yıldızımız ise beyaz olsun.

#kelime bulutunun oluşturulması
bulut2<- wordcloud2(deneme[,-1], size=0.4, color = "white", backgroundColor = "red", shape="star", minRotation = -pi/6, maxRotation = -pi/6, rotateRatio = 1)

#html ve png olarak kaydedilmesi
saveWidget(bulut2,"bulut2.html",selfcontained = F)
webshot::webshot("bulut2.html","bulut2.png",vwidth = 1800, vheight = 1000, delay =10)

Yukarıdaki kod bloğunun çalıştırılmasından sonra sentetik verilerden ürettiğimiz kelime bulutu yıldız (star) düzeninde aşağıda verilmiştir.

“4. Sentetik veriler üzerinden kelime bulutlarının oluşturulması” başlığı altındaki bu çalışmayı yüce milletimize her koşulda hizmet eden şehit ve gazi kahraman Mehmetçiklerimize atfediyorum.

Yapılan bu özgün çalışmalar ile özellikle keşifsel veri analizi (exploratory data analysis), metin ve fikir madenciliği (text and opinion mining) alanlarına katkı sunulması amaçlanmıştır.

Veri bilimine gönül vermiş öğrenci, akademisyen ve saha çalışanlarına faydalı olması 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

Öne çıkan

Küresel Ekonomik Beklentiler 2021 Ocak Dönemi Raporu

Dünya Bankası tarafından 5 Ocak 2021 tarihinde 234 sayfalık Küresel Ekonomik Beklentiler (Global Economic Prospects) raporunun Ocak 2021 sayısı yayınlanmıştır. Raporda ağırlıklı olarak COVID-19 pandemisinin ekonomik etkileri değerlendirilmiş, projeksiyonlar çizilerek sonuçları analiz edilmiş, ardından küresel toplumun ihtiyaç duyduğu alınacak politika tedbirleri ortaya konularak önerilerde bulunulmuştur. Bu yazımızda raporda yer verilen küresel ekonomik görünüm, Orta Doğu ve Kuzey Afrika (MENA) bölge ülkeleri ile Avrupa ve Batı Asya (ECA) bölge ülkelerine ilişkin ekonomik görünümlerde öne çıkan bulgular ele alınmıştır. Küresel Ekonomik Beklentiler Raporu’nun 2020 Ocak dönemi sayısında öne çıkan bulgular başlıklara göre şöyledir:

Küresel Ekonomik Görünüm

COVID-19 pandemisi, 1929 Dünya Ekonomik Bunalımı ve ikinci Dünya Savaşı’nın neden olduğu küresel durgunluktan daha derin küresel bir durgunluğa neden olmuştur. Küresel ekonomik faaliyet yeniden büyüyor olsa da öngörülebilir gelecekte olağan faaliyetlere dönülmesi olası değildir. Ciddi sayıda can kaybına neden olan salgın, aynı zamanda milyonları aşırı yoksulluğa sürüklemiştir. Uzun bir süre boyunca faaliyet ve geliri pandemi öncesi eğilimlerinin çok altında kalan bireylerin üzerinde kalıcı yaralar bırakması beklenmektedir. Küresel ekonomik çıktı, COVID-19’un tetiklediği ekonomik durgunluğun ardından toparlansa da, uzun bir süre için pandemi öncesi eğilimlerin altında kalacaktır. Pandemi, on yıllık bir küresel borç birikimi dalgasıyla ilişkili riskleri daha da kötüleştirmiştir. Pandeminin önümüzdeki on yılda potansiyel büyümede uzun zamandır beklenen yavaşlamayı da hızlandırması muhtemel görülmektedir.

Gelişmiş ekonomilerin, 2021 ve 2022 yıllarında sırasıyla yüzde 3,3 ve yüzde 3,5’e ulaşması öngörülen büyümenin yaygın aşılama ve maliye politikalarındaki kısmi genişleme ile birlikte para politikası düzenlemeleri sayesinde toparlanması beklenmektedir. Gelişmekte olan ülkelerde büyümenin 2021’de yüzde 5’e, 2022’de yüzde 4,2’ye yükselmesi öngörülse de iyileşme büyük ölçüde Çin’in beklenen toparlanmasını yansıtmaktadır.

Orta Doğu ve Kuzey Afrika (MENA) Bölgesi Ekonomik Görünümü

Orta Doğu ve Kuzey Afrika (MENA) ülkelerindeki üretimin 2020’de yüzde 5,0 daraldığı tahmin edilmektedir. COVID-19 kaynaklı aksaklıklar petrol fiyatları ve petrol talebindeki keskin düşüşle birlikte kendini göstermiştir. MENA ülkelerindeki petrol ihracatçılarının üretiminin 2020’de yüzde 5,7 daraldığı tahmin edilmektedir. Bu daralma, bölgede zaten yavaşlayan büyümeyi daha da şiddetlendirmekte ve pandemi öncesi kişi başına gelir kayıplarını artırmaktadır. Pandemi kontrol altına alındığında ve kısıtlamalar hafifletildiğinde küresel petrol talebi artarken ve politika desteği devam ederken büyümenin 2021’de yüzde 2,1’e yükselmesi beklenmektedir.

Ancak pandeminin bölgede kalıcı ekonomik izler bırakması ve potansiyel büyümeyi azaltması beklenmektedir. COVID-19’un yeniden alevlenmesi, jeopolitik gerilimler ve siyasi istikrarsızlıkla ilgili daha fazla sorun alanlarının olması, petrol fiyatları ve ödemeler dengesi üzerinde aşağı yönlü bir görünümün ortaya çıkmasına neden olan risklerdir. Petrol ihracatçı ülkeler arasında, petrol talebinin normalleşmesi, OPEC ve petrol üretim kesintilerinin planlı bir şekilde gevşetilmesi, politika desteği ve yerel salgınla ilgili kısıtlamaların kademeli olarak kaldırılmasıyla büyümenin 2021’de yüzde 1,8’e çıkması beklenmektedir. Suudi Arabistan’da pandemi sırasında ertelenen kamu sermayesi yatırım projelerinin yeniden başlaması büyümeyi destekleyecektir. İran’daki büyümenin iç tüketim ve turizmin normale dönmeye başlaması ve COVID-19’un seyrinin stabil hale gelmesiyle toparlanması beklenmektedir. MENA bölge ülkelerinde piyasa fiyatlarına göre reel GSYH’da büyüme tahminleri ve 2021 öngörüleri Tablo 1’de verilmiştir.

Tablo 1: Orta Doğu ve Kuzey Afrika (MENA) Bölge Ülkelerinde Piyasa Fiyatlarına Göre Reel GSYH Tahminleri (%)

Kaynak: Dünya Bankası verilerinden tarafımca düzenlenmiştir.

Avrupa ve Batı Asya (ECA) Bölgesi Ekonomik Görünümü

ECA ülkelerinde COVID-19’un yeniden alevlenmesi faaliyetlerde kalıcı kesintilere neden olduğu için bölgesel ekonominin 2021’de yüzde 3,3 büyümesi beklenmektedir. Virüsün hızlı yayılması ve artan jeopolitik gerilimlerle birlikte ECA ekonomilerinin yaklaşık yüzde 75’indeki aşağı yönlü revizyonları yansıtan bölgesel tahminler 2021’de daha da düşürülmüştür. Pandeminin ekonomik etkilerinin giderek azalması ve ticaret ve yatırımdaki toparlanmanın ivme kazanmasıyla ECA ülkelerindeki büyümenin 2022’de yüzde 3,9’a yükselmesi beklenmektedir. 2022’deki iyileşmeye rağmen, GSYH’nin pandemi öncesi döneme göre tahminlerin yaklaşık yüzde 3 altında kalması beklenmektedir. 2020 yılında ekonomilerin yaklaşık beşte birinde salgın nedeniyle kişi başına düşen gelir, beş veya daha fazla yıl boyunca kaybedilmiştir. Ayrıca salgının, yatırım ve beşeri sermaye birikimi üzerindeki zararlı etkileri nedeniyle uzun vadede verimlilik artışındaki yavaşlamayı daha da şiddetlendirmesi beklenmektedir. Orta Avrupa’da büyümenin 2021’de yüzde 3,6’ya yükselmesi öngörülmektedir. Bu öngörü Euro bölgesinde faaliyet hacminin artmasıyla birlikte ticaretteki toparlanmayla da desteklenmektedir. Ancak COVID-19 vakalarındaki son artışla birlikte ekonomik görünüm tahminleri düşürülmüştür. Sıfıra yakın politika faiz oranları olan Macaristan, Polonya ülkeleri de dahil olmak üzere olağanüstü politika düzenlemelerinin 2021 boyunca devam etmesi beklenmektedir. ECA alt bölgeleri arasında en yüksek oranda mali destek paketi GSYH’nın yüzde 9’uyla Orta Avrupa ülkelerinde gerçekleşmiştir. COVID-19 ile mücadelenin bir parçası olarak Orta Avrupa ülkelerine yönelik hazırlanan Avrupa Birliği (AB) yapısal fon paketi orta vadeli büyümeyi desteklemektedir.

Türkiye ekonomisi 2020’de daralmadan kaçınmış ve kredilerdeki önemli artışla birlikte işlem tahmini yüzde 0,5 oranında artırmıştır. İç talepteki toparlanmanın sürmesi ile büyümenin 2021’de yüzde 4,5’e yükselmesi beklenmektedir. Politika faiz oranındaki artışlara rağmen Türk lirası ABD doları karşısında yeniden düşüşe geçmiştir. Bu durum bilançoları aşındırmış ve ek döngüsel karşı politika tedbirlerine başvurulmuştur. Yeni COVID-19 vakalarındaki keskin artış beklenenden daha zayıf uluslararası turizm talebi oluşturmuş, daha sıkı para politikası uygulanması ise ekonomik iyileşme üzerinde baskı yaratmıştır.

Denemelerde yüksek etkinlik oranlarına sahip birden fazla COVID-19 aşısının geliştirilmesine rağmen ekonomik görünümün riskleri hala yüksektir. ECA ülkelerinde kısa vadeli büyüme görünümü bazı ülkelerde sosyal refah düşüşleri, yeniden tırmanan jeopolitik gerilimler ve yeni vakalardaki artışla birlikte daha da belirsiz bir hal almıştır. Birkaç Euro bölgesi ülkesi, ECA’daki dış talebi zayıflatabilecek ülke çapında kapanmaları yeniden uygulamaya zorlanmıştır. Benzer şekilde, ECA içinde artan vakalar daha katı kısıtlamalar getirebilir.

Seyahatteki gerileme uzun sürerse, özellikle turizme bağımlı Orta Avrupa, Türkiye, Batı Balkan ekonomilerinde büyüme tahminleri çok daha zayıf bir seyir izleyebilir. COVID-19 aşılarının üretimi, tedariki veya dağıtımındaki gecikmeler, beklenenden düşük aşı etkinliği veya pandemiye bağlı kısıtlamaların devam etmesi de ekonomik iyileşmeyi geciktirebilir. Dağıtım ve aşılamanın zorlukları, sağlık hizmeti kapasitesinin ECA’nın diğer bölgelerinden daha zayıf kalan Orta Asya’da özellikle artmaktadır. ECA bölge ülkelerinde piyasa fiyatlarına göre reel GSYH’da büyüme tahminleri ve 2021 öngörüleri ise Tablo 2’de verilmiştir.

Tablo 2: Avrupa ve Batı Asya (ECA) Bölge Ülkelerinde Piyasa Fiyatlarına Göre Reel GSYH Tahminleri (%)

Kaynak: Dünya Bankası verilerinden tarafımca düzenlenmiştir.

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

Bilimle ve teknolojiyle kalınız.

Yararlanılan Kaynaklar

  • World Bank. 2021. Global Economic Prospects, January 2021. Washington, DC: World Bank. DOI: 10.1596/978-1-4648-1612-3. License: Creative Commons Attribution CC BY 3.0 IGO.
  • Microsoft Corporation. (2016). Microsoft Excel. Retrieved from https://office.microsoft.com/excel
Öne çıkan

R’da Normal Dağılım Dönüşümleri Üzerine Vaka Çalışmaları: Case Studies on Normal Distribution Transformations in R

Giriş

Analizle uğraşan gerek akademik gerekse saha çalışanları verinin normal dağılım göstermediği durumlarda sıklıkla verinin normal dağılım dönüşümlerine başvurdukları bilinmekte ve görülmektedir. Normal dağılım sürekli olasılık dağılımlarından biridir. Geleneksel istatistik literatüründe özellikle parametrik test varsayımlarından birinin verinin normal dağılım gösterdiği varsayımıdır. Ancak genellikle biz uygulamada verinin normal dağılım göstermediğini biliriz. Peki bu durumda ne yaparız? Bu durumda yapılması gereken veriyi normal dağılıma uygun hale getirmektir. Peki ama nasıl? Öncelikle verinin dağılım yapısı histogramlarla, q-q, p-p ve kutu grafiklerle veya en kesin sonuç normalite testleriyle ortaya konulabilir. Normalite testleri tek değişkenli olarak yapılacaksa hepimizin yakından bildiği Shapiro-Wilk test veya Kolmogorov-Smirnov testi yapılır. Genellikle gözlem sayısının 50’nin altında değişken veri setlerinde Shapiro-Wilk testin kullanılmasının uygun olacağı iddia edilse de daha yüksek gözlem sayılarında da bu normalite testinin kullanıldığı görülmektedir. Literatürde yaygın olarak kullanılan diğer tek değişkenli normalite testleri ise şöyledir:

  • Lilliefors düzeltmeli K-S testi,
  • Anderson-Darling testi
  • Cramer-von Mises testi
  • D’Agostino çarpıklık testi
  • Anscombe-Glynn basıklık testi
  • D’Agostino-Pearson omnibus testi
  • Jarque-Bera testi.

Tek değişkenli normalite testlerinde yokluk (Hnull) hipotezimiz yani “H0:Dağılım normal dağılım gösterir” şeklinde kurulur. Test sonucunda bulunan önemlilik düzeyi(p), a (alfa) yanılma düzeyinden diğer bir ifadeyle tip I hata (alfa hatası)’dan büyükse dağılımın normal dağılım gösterdiğini söyleriz. Örneğin Shapiro-Wilk veya Kolmogorov-Smirnov test istatistikleri söz gelimi 0,73 ve p değeri 0,06 ise p değeri a=0,05’ten büyük olduğu için dağılımın normal dağılım gösterdirdiği söylenir ve bu durumda H0 hipotezi kabul edilir. Diğer yandan ise alternatif hipotez red edilir. Alternatif hipotezin reddedilmesi, dağılımın normal dağılım göstermediği anlamına gelir. Bu arada değişken veri setinin çarpıklık (skewness) ve basıklık (kurtosis) değerlerine ve şekline de bakarak dağılımın yapısında bir yargıya ulaşılabilir. Çarpıklık, bir simetri ölçüsüdür, daha doğrusu, simetri eksikliğini gösterir. Bir dağılım veya veri kümesi, merkez noktanın solunda ve sağında aynı görünüyorsa simetriktir. Basıklık ise verilerin normal bir dağılıma göre kalın veya hafif kuyruklu olup olmadığının bir ölçüsüdür. Standart normal bir dağılımda çarpıklık ve basıklık değerleri 0’a eşittir. Diğer bir deyişle, yüksek basıklığa sahip veri setleri, büyük veya aykırı değerler (outliers)’e sahip olma eğilimindedir. Düşük basıklığa sahip veri kümeleri, düşük kuyruklara veya düşük aykırı değerlere sahip olma eğilimindedir. Ayrıca aralık yöntemi de değişken veri setinin normal dağılıma uygunluğunun test edilmesinde kullanılabilir. Diğer bir yaklaşım ise merkezi dağılım ölçülerinden olan ortalama, medyan ve mod değerlerine bakılarak dağılımın yapısı hakkında fikir edinilebilmesidir. Örneğin standart normal dağılımın ortalaması 0 ve standart sapması ise 1’e eşittir. Buradan bakıldığında eğer değişken veri setinin ortalaması ne kadar 0’a, standart sapması ise 1’e yakın olursa dağılımın normal dağılımına evrildiğini söyleyebiliriz.

Dönüşüm, ingilizce ifadeyle transformation veri setindeki değişkenlerin farklı bir birimle ifade edilmesidir. Dağılımını normal dağılıma dönüştürmek aslında hepimizin bildiği can eğrisine dönüştürmektir. Sözü gelmişken ifade etmek isterim verinin dönüştürülmesi ile standardizasyon iki farklı kavramdır. Dolayısıyla birbirine karıştırılmaması gerekir. Verinin dönüştürülmesinde dağılımın şekli değişirken, standardizasyonda dağılımın şeklinde bir değişiklik olmaz. Yani bu iki kavram farklı amaçlara hizmet etmektedir. Farklı yöntemlerle verinin standardize edilmesine yönelik daha önce yaptığım uygulamalı çalışmayı görmek isteyenler için çalışmanın linkini aşağıda paylaşıyorum.

Verinin Standartlaştırılması Üzerine Vaka Çalışmaları

Esasında normallik dönüşümü yapmakta amacımız, Şekil 1’de ortada yer alan normal dağılım olarak adlandırdığımız simetrik dağılıma veriyi dönüştürmektir. Simetrik dağılım ya da standart normal dağılımda şekilde görüleceği üzere ortalama (mean), medyan (median) ve mod (mode) değerleri birbirine eşittir. Normallik dönüşümlerinde de bizim amacımız Şekil 1’in solunda yer alan pozitif çarpık (sağa çarpık) ve Şekil 1’in sağında yer alan negatif çarpık (sola çarpık) dağılımları normal dağılıma yani simetrik dağılıma evrilmesini sağlamaktır. Pozitif çarpık bir dağılımda Mod <Medyan <Ortalama sırası bulunmakta iken, negatif çarpık bir dağılımda ise Mod> Medyan> Ortalama sırası bulunmaktadır.

Şekil 1: Normal ve Çarpık Dağılımlar

Kaynak: https://www.oreilly.com

Ancak dikkat edilmesi gereken bir konu olduğu için burası önemlidir: eğer kurulacak çok değişkenli analiz modellerinde normal dağılım varsayımı geçerliyse aynı anda bütün değişkenlerin içerisinde olduğu çok değişkenli normalite testi yapılmalıdır. Çünkü değişkenlerin bireysel bazda normal dağılım varsayımı karşılaması birlikte bu varsayımı karşılayacağı anlamına gelmemektedir. Yani her bir değişken durumuna uygun dönüşümle normal dağılıma uygun hale getirildikten sonra çok değişkenli normalite testi yapılmalıdır. Bir diğer durum değişken veri setlerinde bazı değişkenlerin normal dağılım gösterirken diğerlerinin normal dağılım göstermemesidir. Bu durumda da çok değişkenli normalite testi yapılmalıdır. Dolayısıyla normallik dönüşümlerinin iki farklı boyutu olduğu için iki başlık altında ele alınmaktadır:

a) Tek değişkenli veri seti setlerinde normallik dönüşümleri

b) Çok değişkenli veri seti setlerinde normal dağılım varsayımının incelenmesi

a) Tek değişkenli veri seti setlerinde normallik dönüşümleri

Tek değişkenli veri setlerinde dağılımın çarpıklık yapısına bağlı olarak yapılacak dönüşümler farklılık göstermektedir:

  1. Eğer dağılım ılımlı derecede pozitif çarpık, diğer bir ifadeyle ılımlı derecede sağa çarpık ise karekök dönüşümü ve bazı durumlarda ondan daha etkili olan küp kök dönüşümü yapılır. Eğer karekök dönüşümü yapılacak değişken veri setinde 1’den küçük değerler varsa en küçük değeri 1 yapacak şekilde bir sabit terimin gözlem değerlerine ilave edilmesi gerekir. Bazen de bu dağılım yapılarında Tukey dönüşümü (Tukey’s Ladder of Powers transformation) de kullanılmaktadır. Burada mutlak şekilde bu veya şu dönüşümü kullanmak gerektiğini söylemek çok doğru bir yaklaşım olmaz, verinin üzerinde test edilip değerlendirilmesi gerekir.
  2. Eğer dağılım şiddetli derecede pozitif çarpık, diğer bir ifadeyle şiddetli derecede sağa çarpık ise logaritmik (log) dönüşümü yapılır. Eğer log dönüşümü yapılacak değişken veri setinde 1’den küçük değerler varsa en küçük değeri 1 yapacak şekilde bir sabit terimin gözlem değerlerine ilave edilmesi gerekir.
  3. Eğer dağılım ılımlı veya şiddetli derecede negatif çarpık, diğer bir ifadeyle sola çarpık ise veri setindeki her bir gözlem, veri setindeki maksimum değer + 1 değerinden çıkarılarak dağılımı pozitif çarpık bir dağılıma dönüştürülür. Daha sonra pozitif çarpık dağılımlarda uygulanan dönüşüm yöntemleri uygulanarak dağılım normal dağılıma dönüştürülür. Negatif çarpık dağılımlarda değişken veri setinde kare veya küp dönüşümü de yapılabilmektedir. Ayrıca değişken veri setindeki değerler 0-1 aralığında ise bu durumda da log(x/(1-x)) dönüşümü uygulanabilmektedir. Doğrudan negatif çarpık dağılımların normallik dönüşümlerinde sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) de kullanılabilmektedir. Sıralı çeyreklik normalleştirme dönüşümü g(x) = Φ ^ {-1} ((sıra(x) – 0,5) / (uzunluk(x))) eşitliği ile hesaplanmaktadır. Eşitlikte Φ, standart normal kümülatif dağılım fonksiyonu (cdf)’nu ifade ederken, sıra (x) her bir gözlemin sırasını ve uzunluk (x) gözlem sayısını ifade etmektedir.

Değişkenin veri tipine göre de yapılacak dönüşüm farklılık gösterebilmektedir. Eğer kesikli nicel bir veri tipine sahipsek karekök dönüşümü uygulanabilmektedir. Diğer taraftan aşırı derecede çarpık dağılıma sahip bir değişken veri setinde değişken veri setinin tersi de alınabilmektedir. Ancak oran türünde bir değişken veri setine sahip isek bu durumda sıklıkla logit dönüşümü kullanabiliriz. Logit dönüşüm eşitliği şöyledir: Logit(p)=loge(p/1-p). Logit dönüşüm daha çok regresyon analizlerinde kullanılmaktadır. Pozitif çarpık dağılımlar uygulamada en sık karşılaşılan dağılımlardan biridir. Basedilenler ışığında kullanılan dönüşüm yöntemleri Şekil 2 üzerinde verilmiştir.

Şekil 2: Normallik Dönüşüm Yöntemleri

b) Çok değişkenli veri seti setlerinde normal dağılım varsayımının incelenmesi

Çok değişkenli veri setlerinde aynı anda normalite testlerinin yapılması ile değişken bazında normalite testlerinin yapılması aynı sonucu doğurmamaktadır. Diğer bir ifadeyle, bütün değişken veri setlerinin bireysel bazda normal dağılım göstermesi tamamı aynı anda değerlendirildiği zaman normal dağılım göstereceğini garanti etmez. Bunu şöyle düşünebiliriz; Bir futbol takımı düşünün her bir oyuncu oynadığı pozisyonda iyi işler çıkarıyor. Ancak iş takım oyununa geldiğinde uyum problemi yaşanabiliyor. Yani 1 futbolcunun 11 kişilik takımda bireysel anlamda iyi olması 11 kişilik takımın da iyi olacağı anlamına ve takım üyelerinin birbirine iyi uyum sağlayacağı anlamına gelmez. Bu örnekten hareketle çok değişkenli normalite testleri de aslında takım üyelerinin (bütün değişkenlerin) aynı anda normal dağılım gösterip göstermediğini bize verir. Literatürde daha fazla çok değişkenli normalite testleri bulunmakla birlikte öne çıkan çok değişkenli normalite testleri şöyledir:

  • Mardia’nın çok değişkenli normallik testi: Mardia’nın testi çok değişkenli çarpıklık ve basıklık katsayılarını ve bunlara karşılık gelen istatistiksel anlamlılıklarını hesaplar. Küçük örneklem büyükleri (n <20) için çarpıklık katsayısının düzeltilmiş versiyonunu da hesaplayabilir. Çok değişkenli normallik için hem çarpıklık hem de basıklık istatistiğinin p değerleri 0,05’ten büyük olmalıdır. Verilerde eksik gözlemler varsa, liste halinde silme uygulanır ve tam bir durum analizi gerçekleştirilir.
  • Henze-Zirkler çok değişkenli normallik testi: Henze-Zirkler testi, iki dağılım (gözlemlenen ve teorik) arasındaki mesafeyi ölçen negatif olmayan bir fonksiyona dayanmaktadır. Çok değişkenli veriler normalse, test istatistiği (HZ) yaklaşık olarak log-normal olarak dağılım gösterir. Verilerde eksik gözlemler varsa, liste halinde silme uygulanır ve tam bir durum analizi gerçekleştirilir.
  • Royston çok değişkenli normallik testi: Çok değişkenli normalite testlerinden en sık kullanılanlardan biri de Royston tarafından 1992 yılında önerilen Royston testidir. Bu testte çok değişkenli normal dağılıma uygunluğun test edilmesinde Shapiro-Wilk veya Shapiro-Francia test istatistiğinden yararlanılır. Öncelikle bu testte her bir değişken için basıklık değerleri hesaplanır, ardından değişkenlerin basıklık katsayıları 3’ten büyükse Shapiro-Francia test istatistik değeri, eğer basıklık değeri 3’ten küçükse Shapiro-Wilk test istatistik değeri kullanılır.
  • Enerji çok değişkenli normallik testi: Çok değişkenli dağılımlar arasındaki enerji mesafesi kavramına dayanmaktadır. Enerji adlandırması, Newton’un yerçekimi potansiyel enerjisi ile yakın bir benzetmeden kaynaklanmaktadır.

Bireysel baz kurulan hipotezlere benzer olarak çok değişkenli normalite testlerinde de aşağıda belirtildiği gibi hipotezler kurulur.

  • H0 (yokluk): Değişkenler çok değişkenli normal dağılım gösterir.
  • H1 (alternatif): Değişkenler çok değişkenli normal dağılım göstermez.

Çalışma kapsamında tesadüfi bir şekilde üretilen değişken gözlemleri üzerinden değişken veri setlerinin normallik dönüşümü öncesi ve sonrası normal dağılım varsayımı test edilmiştir. Ayrıca çok değişkenli normalite testleri de yapılarak normallik varsayımı bir bütün olarak ele alınmıştır.

Metodoloji ve Uygulama Sonuçları

İlk olarak analizde kullanılacak R kütüphanelerini vererek işe başlayalım. Aşağıda gerekenden fazla kütüphane verdiğimi biliyorum. Ancak daha çok esneklik ve estetik tasarım tanıdığı için genellikle olması gerekenden fazla kütüphane ile çalışıyorum. İki veya daha fazla değişkenli veri seti setlerinde normal dağılım varsayımının incelenmesinde kullanılan kütüphaneler “MVN” iken, normallik dönüşümlerinde ise “dlookr”, “bestNormalize” kütüphaneleridir. Analizlerde R programlama dili kullanılmıştır. Bulguların çalışma kitaplarına yazdırılmasında ise xlsx uzantılı Microsoft Excel çalışma kitapları kullanılmıştır.

Yüklenecek kütüphaneler

# Kütüphaneler
library<-c("dplyr","tibble","tidyr","ggplot2","ggthemes","readr","readxl","ggpubr","formattable", "ggstance", "pastecs","writexl", "psych", "GGally","pander", "MVN", "dlookr")
loading<-sapply(library, require, character.only = TRUE)
 
# Kütüphane yüklenme durumunu gösteren tablo
tablo=suppressWarnings(loading, classes = "warning")
 
isim=names(tablo)
 
deger=as_tibble(tablo)
 
data.frame(kutuphane=isim, yuklenme_durumu=deger$value) %>% mutate(yuklenme_durumu=if_else(yuklenme_durumu==TRUE, "Yuklendi", "Paket Kurulumu Gerekli")) %>% pander(caption="Kütüphane Yüklenme Bilgisi")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra yukarıdaki kütüphanelerin yüklenip yüklenmediğine dair aşağıdaki gibi mantıksal vektör sonuçları gelecektir. Eğer mantıksal vektör sonuçlarının hepsi TRUE ise kütüphanelerin hepsi yüklenmiştir demektir. Kolaylık sağlaması açısından yukarıda kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için yukarıdaki kod bloğu içerisinden kısa bir kod yazdım. Bu kod çalıştırıldığında aşağıdaki tabloda görüleceği üzere bütün kütüphaneler yüklenmiştir. Eğer ilgili kütüphane yüklenmemiş olursa “Paket Kurulumu Gerekli” ifadesi satırda yazacaktır. Satırda yazan bu uyarı metnine göre paketi ya kurar yada yüklersiniz. Bir paketin kurulması ile yüklenmesinin aynı şey olmadığını burada ifade etmek gerekir konuyu yabancı olanlar için. Paket kurulumu ilk defa yapılan bir işlem iken, paketin yüklenmesi zaten kurulan bir paketin yüklenmesi yani çalışır duruma getirilmesidir. İlk defa bir paket kurulumu gerçekleştiriliyorsa install.packages() fonksiyonunu, zaten bir paket kurulumu gerçekleştirilmiş ise ilgili paketin veya kütüphanenin yüklenmesi veya okunması için library() veya require() fonksiyonlarını kullanıyoruz. Fonksiyonlardaki parantez () içerisine yüklenecek paket veya kütüphane adını yazıyoruz.

-------------------------------
  kutuphane    yuklenme_durumu 
------------- -----------------
    dplyr         Yuklendi     

   tibble         Yuklendi     

    tidyr         Yuklendi     

   ggplot2        Yuklendi     

  ggthemes        Yuklendi     

    readr         Yuklendi     

   readxl         Yuklendi     

   ggpubr         Yuklendi     

 formattable      Yuklendi     

  ggstance        Yuklendi     

   pastecs        Yuklendi     

   writexl        Yuklendi     

    psych         Yuklendi     

   GGally         Yuklendi     

   pander         Yuklendi     

     MVN          Yuklendi     

   dlookr         Yuklendi     
-------------------------------

Table: Kütüphane Yüklenme Bilgisi

Veri setinin oluşturulması

Oluşturulan veri setinde 4 değişken bulunmakta olup, aşağıdaki kurallara göre oluşturulmuştur.

  • v1 değişkeni pozitif çarpık dağılım gösteren üstel (exponential) dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemden oluşmaktadır. Üstel beta dağılıma göre veri üretmek için rexp() fonksiyonu kullanılmıştır.
  • v2 değişkeni negatif çarpık dağılım gösteren beta dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemden oluşmaktadır. Beta dağılımdan veri üretmek için rbeta() fonksiyonu kullanılmıştır.
  • v3 değişkeni negatif çarpık dağılım gösteren beta dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemden oluşmaktadır. Tek biçimli (uniform) dağılıma göre veri üretmek için runif() fonksiyonu kullanılmıştır.
  • v4 değişkeni negatif çarpık dağılım gösteren beta dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemden oluşmaktadır. Normal dağılıma uygun veri üretmek için rnorm() fonksiyonu kullanılmıştır.
set.seed(61) #üretilen değişken gözlem değerlerini sabitlemek için

v1=rexp(1000,rate=2) #Üstel dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemli pozitif çarpık dağılım

v2=rbeta(1000,2,0.5,ncp=2) ##Beta dağılımdan tesadüfi bir şekilde üretilen 1000 gözlemli negatif çarpık dağılım

v3=runif(1000,min=0,max=2) # Tek biçimli (uniform) dağılımdan üretilen 1000 gözlemli iki modlu dağılım

v4=rnorm(n=1000, mean=0, sd=1) #standart normal dağılım (ortalama=0, standart sapma=1)'dan üretilen 1000 gözlemli  değişken

veri=cbind(v1,v2,v3,v4) %>% as_tibble()
veri

#ilk 10 gözlemin gösterilmesi
head(veri,10) %>% formattable()

Yukarıdaki R kod bloğu çalıştırıldıktan sonra elde edilen ilk 10 gözlem aşağıdaki tabloda verilmiştir.

a) Tek değişkenli değişken veri setlerinin normallik dönüşümleri

Veri setindeki değişkenlerin dağılım yapısının yoğunluk grafikleriyle ortaya konulması

Aşağıda yazılan kod bloğu ile ilk olarak oluşturulan veri setindeki değişkenlerin dağılım yapısı yoğunluk grafikleriyle karşılaştırmalı olarak ortaya konulmuştur.

# V1 değişkeninin dağılımı
v1=ggdensity(veri, x = "v1", fill = "red", title = "v1: Pozitif Çarpık", add = "mean")

# V2 değişkeninin dağılımı
v2=ggdensity(veri, x = "v2", fill = "red", title = "v2: Negatif Çarpık", add = "mean") 

# V3 değişkeninin dağılımı
v3=ggdensity(veri, x = "v3", fill = "red", title = "v3: İkili Mod Dağılımı", add = "mean") 

# V4 değişkeninin dağılımı
v4=ggdensity(veri, x = "v4", fill = "red", title = "v4: Standart Normal Dağılım", add = "mean")

ggarrange(v1,v2,v3,v4, ncol=2, nrow=2)

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen yoğunluk grafikleri değişkenlere göre aşağıda verilmiştir. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.

Aşağıda yazılan kod bloğu ile ayrıca veri setindeki değişkenlerin dağılım yapısı teorik normal dağılım ile birlikte yoğunluk grafikleriyle ortaya konulmuştur.

# V1 değişkeninin dağılımı
v1=ggdensity(veri, x = "v1", fill = "red", title = "v1: Pozitif Çarpık", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

# V2 değişkeninin dağılımı
v2=ggdensity(veri, x = "v2", fill = "red", title = "v2: Negatif Çarpık", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

# V3 değişkeninin dağılımı
v3=ggdensity(veri, x = "v3", fill = "red", title = "v3: İkili Mod Dağılımı", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

# V4 değişkeninin dağılımı
v4=ggdensity(veri, x = "v4", fill = "red", title = "v4: Standart Normal Dağılım", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

ggarrange(v1,v2,v3,v4, ncol=2, nrow=2)

Veri setindeki değişkenlerin dağılım yapısı teorik normal dağılım ile birlikte yoğunluk grafikleriyle aşağıda verilmiştir. Bu grafiklerde teorik normal dağılım eğrisinin verilmesi mevcut değişken veri setindeki dağılım ile olması gereken normal dağılım yapısı arasındaki farkı görmek açısından önem arz etmektedir. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.

Veri setindeki değişkenlerin dağılım yapısının q-q grafikleriyle ortaya konulması

Aşağıda yazılan kod bloğu ile veri setindeki değişkenlerin dağılım yapısı q-q grafikleriyle karşılaştırmalı olarak ortaya konulmuştur.

v1=ggplot(data=veri,                 
       aes(sample=v1)) +
  geom_qq() +                     
  geom_qq_line() +
  ggtitle("v1: Pozitif Çarpık")

v2=ggplot(data=veri,                 
       aes(sample=v2)) +
  geom_qq() +                     
  geom_qq_line() +
  ggtitle("v2: Negatif Çarpık")

v3=ggplot(data=veri,                 
       aes(sample=v3)) +
  geom_qq() +                     
  geom_qq_line() +
  ggtitle("v3: İkili Mod Dağılımı")

v4=ggplot(data=veri,                 
       aes(sample=v4)) +
  geom_qq() +                     
  geom_qq_line() +
  ggtitle("v4: Standart Normal Dağılım")

ggarrange(v1,v2,v3,v4, ncol=2, nrow=2)

Veri setindeki değişkenlerin dağılım yapısı q-q grafikler ile birlikte aşağıda verilmiştir. Veri setinin normal dağılıma uygun olup olmadığını ortaya koymada sıklıkla yararlanılan q-q grafiklerde teorik doğru üzerinde veri setinin dağılımın olması o veri setinin normal dağılıma sahip olduğunu veya normal dağılıma evrildiğini göstermektedir. Aşağıdaki grafiklere bakıldığında v4 değişkenindeki gözlemlerin doğru boyunca ilerlediği görülmektedir. Dolayısıyla burada v4 değişkeninin normal dağılım gösterdiğini söyleyebiliriz.

Veri setindeki değişkenlerin çarpıklık ve basıklık değerlerinin hesaplanması

Veri setindeki özellikle çarpık değerleri dağılım simetrik yapısını ortaya koymada oldukça yararlıdır. Aşağıda yazılan kod bloğu ile veri setindeki değişkenlerin hem çarpıklık hem de basıklık değerleri ortaya konulmuştur.

#çarpıklık değerlerinin hesaplanması
cv1=Skew(veri$v1)
cv2=Skew(veri$v2)
cv3=Skew(veri$v3)
cv4=Skew(veri$v4)

carpiklik= rbind(cv1, cv2, cv3,cv4)

#basıklık değerlerinin hesaplanması
bv1=Kurt(veri$v1)
bv2=Kurt(veri$v2)
bv3=Kurt(veri$v3)
bv4=Kurt(veri$v4)

basiklik= rbind(bv1, bv2, bv3,bv4)

#test etiketleri
test_tur=c(rep("Çarpıklık", 4), rep("Basıklık", 4))

#değişken etiketleri
degisken=rep(paste("V",1:4, sep = ""), 2)

#tablo oluşturma
tablo=cbind(degisken, test_tur,rbind(carpiklik,basiklik)) %>% as_tibble() %>% rename(deger=V3) %>% mutate(deger=round(as.numeric(deger),3))

formattable(tablo, align =rep("l",3), list(
  `test_tur` = formatter("span", style = ~ style(color = "black",font.weight = "bold")), 
  `deger`= color_bar("#00FF7F")
))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen veri setindeki değişkenlerin çarpıklık ve basıklık değerleri aşağıdaki tabloda verilmiştir. Daha önce bahsettiğimiz üzere standart normal bir dağılımda çarpıklık ve basıklık değerleri 0’a eşittir. Buradan baktığımızda çarpıklık ve basıklık değerleri 0’a ne kadar yakınsa o ölçüde normal dağılıma evrildiğini söyleyebiliriz. Tabloya bakıldığında 0’a en yakın çarpıklık ve basıklık değerleri olan değişken v4 değişkeni olduğu için normal dağılıma sahip olduğunu söyleyebiliriz.

Veri setindeki değişkenlerin normalite testleri

Önceki kısımda yaptığımız testler her ne kadar dağılımın normal dağılım gösterip göstermediğini ortaya koymada yardımcı olsa da kesin bir karara varmak için normalite testleri yapılması gerekir. Aşağıda yazılan kod bloğu ile veri setindeki her bir değişkenin iki kuyruklu (two-sided) Kolmogorov-Smirnov (K-S) ve Shapiro-Wilks (S-W) testleri yapılarak dağılımın normal dağılıma uyup uymadığı kesin olarak ortaya konulmuştur.

options(scipen = 999)#sayısal bulguları bilimsel notasyondan kurtarmak için

#Kolmogorov-Smirnov (K-S) testleri (iki kuyruklu)
v1=ks.test(veri$v1, "pnorm", mean=mean(veri$v1), sd=sd(veri$v1))
v2=ks.test(veri$v2, "pnorm", mean=mean(veri$v2), sd=sd(veri$v2))
v3=ks.test(veri$v3, "pnorm", mean=mean(veri$v3), sd=sd(veri$v3))
v4=ks.test(veri$v4, "pnorm", mean=mean(veri$v4), sd=sd(veri$v4))

ks_testistastistigi=rbind(v1$statistic, v2$statistic, v3$statistic, v4$statistic)
ks_pdegeri=rbind(v1$p.value, v2$p.value, v3$p.value, v4$p.value)

#Shapiro-Wilks (S-W) testleri
v1=shapiro.test(veri$v1)
v2=shapiro.test(veri$v2)
v3=shapiro.test(veri$v3)
v4=shapiro.test(veri$v4)

sw_testistastistigi=rbind(v1$statistic, v2$statistic, v3$statistic, v4$statistic)
sw_pdegeri=rbind(v1$p.value, v2$p.value, v3$p.value, v4$p.value)

#test etiketleri
test_tur=c(rep("Kolmogorov-Smirnov", 4), rep("Shapiro-Wilks", 4))

#değişken etiketleri
degisken=rep(paste("V",1:4, sep = ""), 2)

#tablo oluşturma
t=cbind(degisken, test_tur, rbind(ks_testistastistigi,sw_testistastistigi),rbind(ks_pdegeri,sw_pdegeri)) %>% as_tibble() 
t= t %>% rename(testin_turu=test_tur, test_istatistigi=D, p_degeri=V4)%>% mutate(p_degeri=as.numeric(p_degeri), test_istatistigi=as.numeric(test_istatistigi)) %>% mutate(sonuc=if_else(p_degeri>0.0499, "normal dağılım göstermektedir", "normal dağılmamaktadır")) %>% mutate_if(is.numeric, round, 3) %>% formattable()
t

Yukarıda yazılan kod bloğunun çalıştırılması ile elde edilen veri setindeki her bir değişkenin iki kuyruklu (two-sided) Kolmogorov-Smirnov (K-S) ve Shapiro-Wilks (S-W) test sonuçları aşağıdaki tabloda verilmiş ve yukarıda yazılan basit bir algoritmayla yorumlanmıştır. Aşağıdaki tablodan görüleceği üzere v4 değişkeninde p değeri 0,05’ten büyük olduğu için hem Kolmogorov-Smirnov (K-S) hem de Shapiro-Wilks (S-W) test sonuçları istatistiksel olarak anlamlı olup, bu sonuç v4 değişkeninin normal dağılım gösterdiğini ortaya koymaktadır. Bu durumda “Dağılım normal dağılım gösterir” şeklinde kurulan H0 hipotezi kabul edilirken H1 yani alternatif hipotez reddedilir.

Veri setindeki değişkenlerin normal dağılıma dönüştürülmesi

  1. v1 değişkeninin dönüştürülmesi

v1 değişkeni aşağıda yazılan kod bloğu ile Tukey (Tukey’s Ladder of Powers) dönüşüm uygulanarak normal dağılıma dönüştürülmüştür. Aynı zamanda dönüştürülen değişken gözlemlerinin grafiklerle ve Shapiro-Wilk testi ile normal dağılıma uygunluğu test edilmiştir.

#v1 değişkenine Tukey dönüşümünün uygulanması
tt=transformTukey(veri$v1,plotit=T)
tt

#Orjinal gözlemlerin ve dönüştürülmüş gözlemlerin tabloya taşınması
dv1=tibble(v1=veri$v1, dv1=tt[1:1000])

# v1 değişkeninin karşılaştırmalı dağılımı
v1=ggdensity(dv1, x = "v1", fill = "red", title = "v1: Pozitif Çarpık", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

# dönüşüm uygulanmış değişken (dv1) gözlemlerinin dağılımı
dv1=ggdensity(dv1, x = "dv1", fill = "red", title = "dv1: Tukey Dönüşüm", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

ggarrange(v1, dv1, ncol=2, nrow=1)

Yukarıdaki R kod bloğunda çalıştırıldığında elde edilen dönüşüm sonrası gözlemlerin karşılaştırmalı yoğunluk dağılım grafikleri aşağıda verilmiştir. Görüleceği üzere v1 değişkeni gözlemleri Tukey dönüşüm uygulanarak dönüştürüldüğünde normal dağılıma evrildiği görülmektedir. Ancak bu dönüşüme rağmen yine de bir normalite testinin yapılması yerinde bir karar olacağı düşünülmektedir. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.

Aşağıda yazılan R kod bloğu dönüştürülmüş v1 (dv1) değişken gözlemlerinin normallik varsayımı Shapiro-Wilk testi ile test edilmiştir. Aynı zamanda dönüştürülmüş v1 değişken gözlemleri xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmıştır.

#dv1 değişkeni Shapiro-Wilk normalite testi
shapiro.test(dv1$dv1)

#dv1 değişkeninin excel çalışma kitabına yazdırılması
write_xlsx(dv1,"donusturulmus_v1_degiskeni.xlsx")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen Shapiro-Wilk normalite testi sonucu aşağıda verilmiştir. Bulgular dönüştürülmüş v1 değişken gözlemlerinin normal dağılım gösterdiğini ortaya koymaktadır. Çünkü p (0,09496) değeri 0,05’ten büyüktür.

#dv1 değişkeni Shapiro-Wilk normalite testi sonucu
W = 0.99731, p-value = 0.09496

Yukarıda yazılan kod bloğunun son satırı çalıştırıldığında dönüştürülmüş v1 (dv1) değişkeni ile dönüştürülmemiş v1 değişkeni xlx uzantılı çalışma kitabına yazdırılmış olup, aşağıdaki linkten indirebilirsiniz.

2. v2 değişkeninin dönüştürülmesi

v2 değişkeni aşağıda yazılan kod bloğu ile sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) uygulanarak normal dağılıma dönüştürülmüştür. Aynı zamanda dönüştürülen değişken gözlemlerinin grafiklerle ve Shapiro-Wilk testi ile normal dağılıma uygunluğu test edilmiştir.

#v2 değişkenine sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) uygulanması
sira=orderNorm(veri$v2)

#Orjinal gözlemlerin ve dönüştürülmüş gözlemlerin tabloya taşınması
d2=tibble(v2=veri$v2, dv2=sira$x.t)

#v2 değişkeninin karşılaştırmalı dağılımı
v2=ggdensity(d2, x = "v2", fill = "red", title = "v2: Negatif Çarpık", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

#Dönüşüm uygulanmış değişken (dv2) gözlemlerinin dağılımı
dv2=ggdensity(d2, x = "dv2", fill = "red", title = "dv2: ORQ Dönüşümü", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

ggarrange(v2, dv2, ncol=2, nrow=1)

Yukarıdaki R kod bloğunda çalıştırıldığında elde edilen dönüşüm sonrası gözlemlerin karşılaştırmalı yoğunluk dağılım grafikleri aşağıda verilmiştir. Görüleceği üzere v2 değişkeni gözlemleri sıralı çeyreklik (ORQ) normalleştirme dönüşümü uygulanarak dönüştürüldüğünde normal dağılıma evrildiği görülmektedir. Ancak bu dönüşüme rağmen yine de bir normalite testinin yapılması yerinde bir karar olur. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.

Aşağıda yazılan R kod bloğu dönüştürülmüş v2 (dv2) değişken gözlemlerinin normallik varsayımı Shapiro-Wilk testi ile test edilmiştir. Aynı zamanda dönüştürülmüş v2 değişken gözlemleri xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmıştır.

#dv2 değişkeni Shapiro-Wilk normalite testi
shapiro.test(d2$dv2)

#dv2 değişkeninin excel çalışma kitabına yazdırılması
write_xlsx(d2,"donusturulmus_v2_degiskeni.xlsx")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen Shapiro-Wilk normalite testi sonucu aşağıda verilmiştir. Bulgular dönüştürülmüş v2 değişken gözlemlerinin normal dağılım gösterdiğini ortaya koymaktadır. Çünkü p (1) değeri 0,05’ten büyüktür.

#dv2 değişkeni Shapiro-Wilk normalite testi sonucu
W = 0.99995, p-value = 1

Yukarıda yazılan kod bloğunun son satırı çalıştırıldığında dönüştürülmüş v2 (dv2) değişkeni ile dönüştürülmemiş v2 değişkeni xlx uzantılı çalışma kitabına yazdırılmış olup, aşağıdaki linkten indirebilirsiniz.

3. v3 değişkeninin dönüştürülmesi

v3 değişkeni aşağıda yazılan kod bloğu ile v2 değişkeninde olduğu gibi sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) uygulanarak normal dağılıma dönüştürülmüştür. Aynı zamanda dönüştürülen değişken gözlemlerinin grafiklerle ve Shapiro-Wilk testi ile normal dağılıma uygunluğu test edilmiştir.

#v2 değişkenine sıralı çeyreklik normalleştirme dönüşümü (Ordered Quantile (ORQ) normalizing transformation) uygulanması
sira=orderNorm(veri$v3)

#Orjinal gözlemlerin ve dönüştürülmüş gözlemlerin tabloya taşınması
d3=tibble(v3=veri$v3, dv3=sira$x.t)

# v2 değişkeninin karşılaştırmalı dağılımı
v3=ggdensity(d3, x = "v3", fill = "red", title = "v3: İkili Mod Dağılımı", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

#Dönüşüm uygulanmış değişken (dv3) gözlemlerinin dağılımı
dv3=ggdensity(d3, x = "dv3", fill = "red", title = "dv3: ORQ Dönüşümü", add = "mean") +
  stat_overlay_normal_density(color = "blue", linetype = "dashed")

ggarrange(v3, dv3, ncol=2, nrow=1)

Yukarıdaki R kod bloğunda çalıştırıldığında elde edilen dönüşüm sonrası gözlemlerin karşılaştırmalı yoğunluk dağılım grafikleri aşağıda verilmiştir. Görüleceği üzere v3 değişkeni gözlemleri sıralı çeyreklik (ORQ) normalleştirme dönüşümü uygulanarak dönüştürüldüğünde normal dağılıma evrildiği görülmektedir. Ancak bu dönüşüme rağmen yine de bir normalite testinin yapılması, kesin bir karara varmak açısından önem taşımaktadır. Grafiklerde gösterilen y eksenine paralel kesikli siyah doğru ortalamayı göstermektedir.

Aşağıda yazılan R kod bloğu dönüştürülmüş v3 (dv3) değişken gözlemlerinin normallik varsayımı Shapiro-Wilk testi ile test edilmiştir.

#dv3 değişkeni Shapiro-Wilk normalite testi
shapiro.test(d3$dv3)

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen Shapiro-Wilk normalite testi sonucu aşağıda verilmiştir. Bulgular dönüştürülmüş v3 değişken gözlemlerinin normal dağılım gösterdiğini ortaya koymaktadır. Çünkü p (1) değeri 0,05’ten büyüktür.

dv3 değişkeni Shapiro-Wilk normalite testi sonucu
W = 0.99995, p-value = 1

Aşağıda yazılan kod bloğu ile dönüştürülmüş ilk üç değişkeni içeren veri setini birleştirelim ve xlsx uzantılı çalışma kitabına yazdıralım sonuçları görmek isteyenler için.

#veri setinin birleştirilmesi
don_veri=tibble(dv1=dv1$dv1, dv2=d2$dv2, dv3=d3$dv3)

#veri setinin xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılması
write_xlsx(don_veri, "donusturul_veri_seti.xlsx")

Yukarıdaki kod bloğunun çalıştırılmasından sonra dönüştürülmüş veri xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmış olup, aşağıdaki linkten bu veri setini indirebilirsiniz.

b) Çok değişkenli veri seti setlerinde normal dağılım varsayımının incelenmesi

Bu bölüme kadar oluşturduğumuz veri setlerinde değişkenlerin bireysel olarak normallik dönüşümlerini yaparak yine bireysel normal dağılım gösterip göstermediğini test ettik. Ancak merak edilen konu değişkenlerin takım halinde normal dağılım varsayımının karşılayıp karşılanmadığıdır. Bu amaçla oluşturulmuş değişken veri setlerinin (v1’den v4’e kadar (dahil)) bu bölümde aynı anda normal dağılım gösterip göstermediği test edilmiştir. v4 değişkeninin bireysel olarak normal dağılım gösterdiği bilinmektedir. Çok değişkenli normalite testleri olarak

  • Mardia’nın çok değişkenli normallik testi
  • Henze-Zirkler çok değişkenli normallik testi
  • Royston çok değişkenli normallik testi
  • Enerji çok değişkenli normallik testi

testlerinden yararlanacağız. Bireysel bazda kurulan hipotezlere benzer olarak çok değişkenli normalite testlerinde de aşağıda belirtildiği gibi hipotezler kurulur.

  • H0 (yokluk): Değişkenler çok değişkenli normal dağılım gösterir.
  • H1 (alternatif): Değişkenler çok değişkenli normal dağılım göstermez.

Mardia’nın çok değişkenli normallik testi

Bu kısımda öncelikle aşağıda yazılan kod bloğu ile çok değişkenli Mardia’nın normalite testi yapılmıştır.

mardia=mvn(veri, mvnTest = "mardia", alpha = 0.5)
mardia=mardia$multivariateNormality 
mardia

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Mardia normalite test sonuçları aşağıda verilmiştir. Mardia normalite testine göre değişkenler normal dağılım göstermemektedir.

TestStatisticp valueResult
Mardia Skewness1014,340,00NO
Mardia Kurtosis9,860,00NO
MVNNO

Henze-Zirkler çok değişkenli normallik testi

Aşağıda yazılan kod bloğu ile çok değişkenli Henze-Zirkler’in normalite testi yapılmıştır.

Henze_Zirkler=mvn(veri, mvnTest = "hz", alpha = 0.5)
Henze_Zirkler=Henze_Zirkler$multivariateNormality
Henze_Zirkler

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Henze-Zirkler normalite test sonuçları aşağıda verilmiştir. Henze-Zirkler normalite testine göre değişkenler normal dağılım göstermemektedir.

TestHZp valueMVN
Henze-Zirkler8,4436130NO

Royston çok değişkenli normallik testi

Aşağıda yazılan kod bloğu ile çok değişkenli Royston’un normalite testi yapılmıştır.

royston=mvn(veri, mvnTest = "royston", alpha = 0.5)
royston=royston$multivariateNormality
royston

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Royston normalite test sonuçları aşağıda verilmiştir. Royston normalite testine göre değişkenler normal dağılım göstermemektedir.

TestHp valueMVN
Royston355,87450,000NO

Enerji çok değişkenli normallik testi

Aşağıda yazılan kod bloğu ile çok değişkenli Enerji normalite testi yapılmıştır. Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Royston normalite test sonuçları aşağıda verilmiştir.

enerji=mvn(veri, mvnTest = "energy", alpha = 0.5)
enerji=enerji$multivariateNormality
enerji

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Enerji normalite test sonuçları aşağıda verilmiştir. Enerji normalite testine göre değişkenler normal dağılım göstermemektedir.

TestStatisticp valueMVN
E-statistic17,103330,000NO

Yapılan açık kaynak R kodlu normallik dönüşüm çalışmaları ile veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunulması amaçlanmıştır. Literatürde yukarıdaki bahsedilen hususlara dikkat etmeyen pek çok bilimsellikten uzak çalışma bulunmaktadır. Dolayısıyla yapacağınız çalışmalarda nitelikli araştırma yaparak ve içinize sinerek bir çalışma yapmanız her şeyden önce gerekmektedir. Amacımız sayısal çoğunluk değil nitelikli çoğunluk olmalıdır diye düşünüyorum.

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

Öne çıkan

Apriori Algoritması Üzerine Bir Vaka Çalışması: A Case Study on Apriori Algorithm

Birliktelik kuralı, veriler tarafından desteklenen bir sonuç veya algoritmik anlamda ifade edecek olursak eğer-o zaman (if-then-rule) kuralıdır. Birliktelik kurallarının geliştirilmesinin arkasında yatan motivasyon, büyük perakendecilerin satış noktası işlemlerinin içeriği ile ilgilenen pazar sepeti (market basket) analizidir. Böyle bir çalışmadan ortaya çıkan tipik bir birliktelik kuralında “ekmek ve tereyağı satın alan tüm müşterilerin yüzde 90’ı aynı zamanda süt de alıyor” olabilir. Müşteri davranışına ilişkin iç görüler, müşteri anketleri yoluyla da elde edilebilir, ancak işlem verilerinin analizi, çok daha ucuz olma ve mevcut tüm müşterileri kapsama avantajına sahiptir. Müşteri anketleriyle karşılaştırıldığında, işlem verilerinin analizinin bazı ciddi sınırlamaları vardır. Örneğin, satış noktası verileri tipik olarak müşterilerin kişisel ilgi alanları, yaşı ve mesleği hakkında herhangi bir bilgi içermez. Diğer taraftan, pazar sepeti analizi müşteri davranışına ilişkin yeni iç görüleri ortaya çıkarabilir ve daha iyi müşteri ilişkileri, müşteriyi elde tutma, daha iyi ürün yerleştirmeleri, ürün geliştirme ve sahtekarlık tespiti yoluyla daha yüksek karlar elde edilmesine imkan sağlayabilir. Çok sayıda müşteri tarafından birlikte satın alınan ürünler pazar sepeti analizi ile ortaya konabilir.

Birliktelik kurallarından ve kural madenciliği (rule mining) uygulamalarından biri olan Apriori algoritması, Agrawal ve Srikant tarafından 1993 yılında geliştirilmiştir. Apriori algoritması birliktelik analizlerinin yapılıp birliktelik kurallarının tespit edilmesinde yaygın bir şekilde kullanılan bir algoritmadır. Geniş ürün veya hizmet kümelerindeki ilişki kurallarının ortaya konulmasında kullanılan apriori algoritmasının ilk uygulama alanı olan pazar sepeti analizi (Market basket analysis), perakende alışverişle sınırlı değildir. Apriori algoritması pazar sepeti analizin yanında aşağıdaki şekilde belirtilen iş alanlarında da uygulanmaktadır:

Çalışma kapsamında apriori algoritmasının teorik çerçevesi verilmiş, ardından örnek bir olay kurgusu içerisinde sentetik veri üretilerek bu veri seti üzerinden örnek uygulama yapılmıştır.

Metodoloji

Bu kısımda ilk olarak apriori algoritmasının teorik çerçevesi verilmiştir. Ardından örnek olay senaryosu kapsamında basit tesadüfi örnekleme yöntemi kullanılarak üretilen sentetik veriler üzerinden örnek uygulama yapılmıştır. Analiz aşamasında R programlama dili, sonuçların çalışma kitaplarına yazdırılmasında ise Microsoft Excel çalışma kitapları kullanılmıştır.

Teorik Çerçeve

Birliktelik kuralı, {X -> Y} şeklindedir, burada {X} ve {Y} öğeler kümesidir. Bu birliktelik kuralının anlamı şudur: {X} içindeki tüm öğeler bir sepet içinde oluyorsa, {Y} de bu sepette “büyük olasılıkla” olacaktır.

  • {X} öncül veya birliktelik kuralının sol tarafı (LHS: left-hand-side) olarak da adlandırılır ve
  • {Y}, peşi sıra gelen veya birliktelik kuralının sağ tarafı (RHS: right-hand-side) olarak adlandırılır.

Bahsedilenleri aşağıdaki şekil üzerinde bir örnekler gösterirsek daha iyi anlaşılacağını düşünüyorum.

X market ürünleri için örnek bir ilişkilendirme kuralı {Patates, Soğan} -> {Ekmek} olabilir, yani X’den Patates ve Soğan {X} satın alınırsa, müşteriler büyük olasılıkla Ekmek de satın alır {Y} . “ -> ” sembolünün {X} ve {Y} arasında nedensel bir ilişkiyi göstermediğine dikkat etmek gerekir. Bu sembol yalnızca, {X} verildiğinde {Y} ‘nin koşullu olasılığının bir tahminini ortaya koymaktadır.

Şimdi on binlerce farklı ürünün bulunduğu bir gross market düşünün. Olası her ürün kombinasyonu arasındaki tüm ilişkileri hesaplamak istemeyiz . Bundan ziyade, tüm olası kurallar kümesinden yalnızca potansiyel olarak “ilgili” kuralları seçmek isteriz. Bu nedenle, analiz etmemiz gereken ilişki sayısını azaltmak için destek, güven ve lift ölçütlerini kullanırız:

  • Destek (support) ölçütü, bir dizi öğenin sepetlerde ne sıklıkta göründüğünün bir göstergesidir. Destek(X–>Y)=sayı(X,Y)/N formülü ile destek metriği hesaplanmaktadır. Burada N bize toplam işlem sayısını göstermektedir. İfadeyi açacak olursak destek ölçütü, X ve Y ürünlerini satın alanların sayısının toplam işlem sayısına oranlanması ile hesaplanır. Karşılaştırmalı modellerde destek ölçütü değeri ne kadar yüksek ise o kadar iyidir. Destek ölçüt değerinin destek eşik (threshold) değerlerinden büyük olması gerekir. Altında olanlar elenerek bir sonraki adıma geçilir.
  • Güven (confidence) ölçütü, destek kuralının ne kadar sıklıkla doğru bulunduğunun bir göstergesidir. Güven(X–>Y)=sayı(XY)/sayı(X). Güven ölçütü, X ve Y ürünlerini satın alanların sayısının X ürünleri satın alanların sayısına oranlanması ile hesaplanan bir olasılık değeridir. Karşılaştırmalı modellerde güven ölçütü değeri ne kadar yüksek ise o kadar iyidir. Güven ölçüt değerinin güven eşik (threshold) değerlerinden büyük olması gerekir. Altında olanlar elenerek bir sonraki adıma geçilir.
  • Lift , hem desteği hem de güveni kullanan bir birliktelik ölçütüdür. Bu ölçüt, Y ve X öğelerinin ne kadar sıklıkta olduğunu kontrol ederken, X öğesi satın alındığında Y öğesinin satın alınma olasılığının ne kadar yüksek olduğunu bize gösterir. İstatistiksel olarak bağımsız olsalardı, X ve Y’nin beklenenden kaç kez daha sık birlikte meydana geldiğini ölçer. Lift(X–>Y)=Destek(X∪Y) / (Destek(X) x Destek(Y)) eşitliği ile hesaplanır. Lift değeri eşik değerleri ve yorumu şöyledir:
    • lift = 1 ise öğeler (ürünler veya hizmetler) arasında ilişki olmadığı anlamına gelir.
    • lift> 1 ise X ürünü satın alınırsa Y ürünü satın alınma olasılığının yüksek olduğu anlamına gelir.
    • lift <1 ise X ürünü satın alınırsa Y öğesinin satın alınmasının olası olmadığı anlamına gelir.

Örnek Uygulama

İlk olarak analizde kullanılacak R kütüphanelerini vererek işe başlayalım. Aşağıda gerekenden fazla kütüphane verdiğimi biliyorum. Ancak daha çok esneklik ve estetik tasarım tanıdığı için genellikle olması gerekenden fazla kütüphane ile çalışıyorum. Apriori algoritması için temel paketler “arules” ve “arulesViz” paketleridir.

Yüklenecek kütüphaneler

# Kütüphaneler
library<-c("dplyr","tibble","tidyr","ggplot2","ggthemes","readr","readxl","ggpubr","formattable", "ggstance", "pastecs", "rmarkdown", "knitr", "gtsummary", "writexl", "psych", "reshape2", "GGally", "Hmisc", "corrplot","dendextend", "kableExtra", "pander","arules","arulesViz", "RColorBrewer")
loading<-sapply(library, require, character.only = TRUE)

# Kütüphane yüklenme durumunu gösteren tablo
tablo=suppressWarnings(loading, classes = "warning")

isim=names(tablo)

deger=as_tibble(tablo)

cbind(kutuphane=isim, deger) %>% rename(yuklenme_durumu=value) %>% mutate(yuklenme_durumu=if_else(yuklenme_durumu==TRUE, "Yuklendi", "Paket Kurulumu Gerekli")) %>% pander(caption="Kütüphane Yüklenme Bilgisi")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra yukarıdaki kütüphanelerin yüklenip yüklenmediğine dair aşağıdaki gibi mantıksal vektör sonuçları gelecektir. Eğer mantıksal vektör sonuçlarının hepsi TRUE ise kütüphanelerin hepsini yüklenmiştir demektir. Kolaylık sağlaması açısından yukarıda kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için kod da yazdım. Bu kod çalıştırıldığında aşağıdaki tabloda görüleceği üzere bütün kütüphaneler yüklenmiştir. Eğer ilgili kütüphane yüklenmemiş olursa “Paket Kurulumu Gerekli” ifadesi satırda yazacaktır.

     --------------------------------
  kutuphane     yuklenme_durumu 
-------------- -----------------
    dplyr          Yuklendi     

    tibble         Yuklendi     

    tidyr          Yuklendi     

   ggplot2         Yuklendi     

   ggthemes        Yuklendi     

    readr          Yuklendi     

    readxl         Yuklendi     

    ggpubr         Yuklendi     

 formattable       Yuklendi     

   ggstance        Yuklendi     

   pastecs         Yuklendi     

  rmarkdown        Yuklendi     

    knitr          Yuklendi     

  gtsummary        Yuklendi     

   writexl         Yuklendi     

    psych          Yuklendi     

   reshape2        Yuklendi     

    GGally         Yuklendi     

    Hmisc          Yuklendi     

   corrplot        Yuklendi     

  dendextend       Yuklendi     

  kableExtra       Yuklendi     

    pander         Yuklendi     

    arules         Yuklendi     

  arulesViz        Yuklendi     

 RColorBrewer      Yuklendi     
--------------------------------

Table: Kütüphane Yüklenme Bilgisi

Örnek olay

Ankara ilinde ikamet olmakta olan Fehmi 🙂 , Covid-19’un devam ettiği dönemde mağaza zincirlerinin birinden 1 ayda farklı günlerde 9 kez alış-veriş yapmıştır. Bütün alış verişler içerisinde alınan toplam farklı ürün sayısı 12’dir. Bu 12 ürün şöyledir: “seker”, “cay”, “ekmek”, “süt”, “patates”, “soğan”, “zeytin”, “peynir”, “makarna”, “luppo”, “tomates”, “deterjan”. Tatlı apur cuburlara düşkün olan Fehmi alış-veriş listesine hepimizin bildiği Halley benzeri ürün olan Luppo’yu da eklemeyi ihmal etmemiştir 🙂 . Fehmi’nin yapılan alış-verişlerde aldığı ürünlerin listesi Tablo 1’de verilmiştir. Örneğin, Fehmi ilk alışverişte Tablo 1’de görüleceği üzere {deterjan, zeytin ve tomates} ürünlerini almıştır. Covid-19 yasaklarının başlayacağı hafta sonuna denk gelen Fehmi’nin son alışverişinde ise {tomates, seker, deterjan, patates, luppo, ekmek, peynir, cay, zeytin, makarna, süt} ürünleri alınmıştır. Bu son alış-veriş işlemi Tablo 1’de İ9 (işlem 9: transaction 9) olarak kodlanmıştır. Örnek olay kapsamındaki veriler tekrarsız basit tesadüfi örnekleme (simple random sampling without replacement) yöntemi kullanarak üretilmiştir. Not: Bu örnek olay kurgudan ibarettir, gerçek hayatta karşılığı bulunmamaktadır.

İstenenler

  1. Apriori algoritmasına uygun model veri setini oluşturunuz.
  2. Apriori modelini kurunuz.
  3. Güven, destek ve lift ölçüt değerlerinin grafiklerini çiziniz.
  4. Modelde ilk ve son en az 10 kuralın ağ ve gruplandırılmış matris grafiklerini çiziniz.
  5. Kurulan modelde en yüksek lift değerlerine sahip ilk 10 kuralı tablo halinde veriniz.
  6. Diğer ürünlerin yanında Luppo ürünü alınan durumların (rhs) kurallarını gösteriniz.
  7. Kurulan Luppo ürün modelinde en yüksek lift değerlerine sahip ilk 10 kuralı tablo halinde veriniz.
  8. Analizlerde elde edilen veri setlerini xlsx formatında oluşturunuz.
  9. Kurulacak 2. modeldeki destek (support) eşik değeri 0,5, güven (confidence) eşik değeri ise 0,6’dır. Maksimum ürün uzunluğu ise 10’dur. Bu parametrelere göre 2. modeli kurarak, oluşan kurallarının tamamını xlsx uzantılı çalışma kitabına yazdırınız. Aynı zamanda kurulan 2. modelden üretilen kuralları lift değerlerinin büyüklüğüne göre sıralayıp tabloda gösteriniz.

Verilenler

  1. Destek (support) eşik değeri 0,3, güven (confidence) eşik değeri ise 0,5’tir. Maksimum ürün uzunluğu ise 10’dur.

Tablo 1: Fehmi’nin Alış-veriş Listesi

İşlemÜrün
İ1deterjan
İ1zeytin
İ1tomates
İ2luppo
İ2deterjan
İ2makarna
İ2süt
İ3cay
İ3tomates
İ3luppo
İ3seker
İ3süt
İ4makarna
İ4ekmek
İ4peynir
İ4luppo
İ4süt
İ4tomates
İ5deterjan
İ5peynir
İ5patates
İ5ekmek
İ5luppo
İ5soğan
İ5makarna
İ6tomates
İ6süt
İ6soğan
İ6ekmek
İ6patates
İ6luppo
İ6makarna
İ6seker
İ7cay
İ7deterjan
İ7makarna
İ7peynir
İ7tomates
İ7luppo
İ7zeytin
İ7soğan
İ7ekmek
İ8cay
İ8makarna
İ8seker
İ8deterjan
İ8soğan
İ8luppo
İ8zeytin
İ8peynir
İ8patates
İ8tomates
İ9tomates
İ9seker
İ9deterjan
İ9patates
İ9luppo
İ9ekmek
İ9peynir
İ9cay
İ9zeytin
İ9makarna
İ9süt

Yukarıdaki tabloyu aynı zamanda xlsx formatında aşağıdaki linkten indirebilirsiniz.

Alışveriş listesinin oluşturulması

Yukarıdaki tablo ilk olarak R’da yazılan aşağıdaki kod ile oluşturulmuş ve üretilmiştir.

#ürün listesi
urun=c("seker", "cay", "ekmek","süt", "patates", "soğan","zeytin", "peynir", "makarna", "luppo", "tomates","deterjan")

set.seed(61)#basit tekrarsız örnekleme tekniği ile ürün listesinden tesadüfi alış-veriş listeleri oluşturulmuştur.

orneklem1=sample(urun, size=3, replace = F)

orneklem2=sample(urun, size=4, replace = F)

orneklem3=sample(urun, size=5, replace = F)

orneklem4=sample(urun, size=6, replace = F)

orneklem5=sample(urun, size=7, replace = F)

orneklem6=sample(urun, size=8, replace = F)

orneklem7=sample(urun, size=9, replace = F)

orneklem8=sample(urun, size=10, replace = F)

orneklem9=sample(urun, size=11, replace = F)

#Alış-verişe konu ürünlerin liste formatına dönüştürülmesi
sepet <-  
  list(orneklem1, orneklem2, orneklem3, orneklem4, orneklem5, orneklem6, orneklem7, orneklem8, orneklem9
  )
names(sepet) <- paste("İ", 1:length(sepet), sep = "")

sepet

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen 1 ay içerisinde yapılan 9 alış-veriş listesi aşağıda verilmiştir. Tablo 1’de de görüleceği üzere aynı liste aşağıda da mevcuttur.

$İ1
[1] "deterjan" "zeytin"   "tomates" 

$İ2
[1] "luppo"    "deterjan" "makarna"  "süt"     

$İ3
[1] "cay"     "tomates" "luppo"   "seker"   "süt"    

$İ4
[1] "makarna" "ekmek"   "peynir"  "luppo"   "süt"     "tomates"

$İ5
[1] "deterjan" "peynir"   "patates"  "ekmek"    "luppo"    "soğan"    "makarna" 

$İ6
[1] "tomates" "süt"     "soğan"   "ekmek"   "patates" "luppo"   "makarna" "seker"  

$İ7
[1] "cay"      "deterjan" "makarna"  "peynir"   "tomates"  "luppo"    "zeytin"   "soğan"    "ekmek"   

$İ8
 [1] "cay"      "makarna"  "seker"    "deterjan" "soğan"    "luppo"    "zeytin"   "peynir"   "patates" 
[10] "tomates" 

$İ9
 [1] "tomates"  "seker"    "deterjan" "patates"  "luppo"    "ekmek"    "peynir"   "cay"      "zeytin"  
[10] "makarna"  "süt" 

Listenin excel (xlsx) çalışma kitabına yazdırılması

Aşağıda yazılan kod bloğu ile yukarıdaki liste excel çalışma kitabına yazdırılmıştır. Yukarıda excel çalışma kitabı verildiğinden burada tekrar paylaşılmayacaktır.

library(plyr)
tablo=ldply(sepet,data.frame)
write_xlsx(tablo, "ürün.xlsx")

Listenin analize uygun hale getirilmesi

Burada oluşturulmuş olan liste aşağıda yazılan kod bloğu ile analizden önce “transactions” yani işlem formatına dönüştürülmüştür. Burada esasında yapılan şey, alış verişlerin sırası satırlara (alışverişin id’si), alınan ürünlerin adları ise sütunlara yazdırılır.

#Veri setinin satırlara ve sütunlara dönüştürülmesi: Bu işlemde yapılan alışverişlerin sırası satırlara ve satın alınan ürünler ise sütunlara dönüştürülür.
islem <- as(sepet, "transactions")
islem
dim(islem)#veri setinin boyutu (sonuç=[1]  9 12) yani veri seti 9 satır (alış veriş işlemi), 12 sütun (ürünler:değişkenler)'dan oluşmaktadır.

Yukarıdaki ilk satırdaki kod bloğunun çalıştırılmasından sonra veri setimiz işlem formatına dönüştürülmüştür. Aşağıdaki bulgular veri setimizin 9 satır, yani 9 kez alış veriş yaptığımızı, sütunlarda da 12 ürünümüzün olduğunu göstermektedir. 2. sıradaki kod ise 1. sıradaki yazılan koda dayalı olarak çalışan ve 1. sıradaki kod ile aynı işlevi göstermektedir. dim() fonksiyonu veri setlerinde veri setinin boyutlarını, yani veri setinin kaç satır, kaç sütundan oluştuğunu göstermektedir. Bu işlemleri yaptıktan sonra modelimizi kurabilir.

transactions in sparse format with
 9 transactions (rows) and
 12 items (columns)

Veri setindeki ürünlerin adları alınmak istenirse aşağıdaki kod bloğu yazılabilir.

itemLabels(islem)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen ürün adları vektör olarak aşağıda verilmiştir.

 [1] "cay"      "deterjan" "ekmek"    "luppo"    "makarna"  "patates"  "peynir"   "seker"    "soğan"   
[10] "süt"      "tomates"  "zeytin"  

Ürünlerin alışverişlerdeki sıklıklarına bakacak olursak aşağıdaki kod bloğunu yazabiliriz.

itemFrequencyPlot(islem, topN = 10,  
                          col = brewer.pal(10, "Greens"), 
                          main = 'Göreceli Ürün Frekansı', 
                          type = "relative", 
                          ylab = "Göreceli Sıklık")

Yukarıdaki R kod bloğunun çalıştırılmasından sonra alışverişler içerisinde en sık satın alınan ürünler aşağıdaki grafikte verilmiştir.

Modelin kurulmasından önce işlemlerimizin özetini de aşağı yazılan R kod bloğu ile verelim.

summary(islem)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen alış-veriş işlemleri özeti aşağıda verilmiştir. Yukarıdaki frekansları gösteren grafikteki sonuçlara benzer olarak aşağıda tabloda da en sık alış veriş yapılan ürünler aşağıda da verilmiştir. Bunun dışında veri setimizin 9 satır ve 12 sütun (değişken=ürün)’dan oluştuğu görülmektedir. En son satırda ise box plot dediğimiz kutu diyagram parametreleri görülmektedir. Yani minimum ve maksimum değerler ile ortalama, 1. çeyreklik ve 3. çeyreklik verileri ortaya konulmuştur.

transactions as itemMatrix in sparse format with
 9 rows (elements/itemsets/transactions) and
 12 columns (items) and a density of 0.5833333 

most frequent items:
   luppo  makarna  tomates deterjan    ekmek  (Other) 
       8        7        7        6        5       30 

element (itemset/transaction) length distribution:
sizes
 3  4  5  6  7  8  9 10 11 
 1  1  1  1  1  1  1  1  1 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      3       5       7       7       9      11 

Aşağıda yazılan kod bloğu ile 12 ürünün çapraz tablosunu da verelim.

crossTable(islem, sort=TRUE)

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen çapraz tablo aşağıda verilmiştir.

  1. Modelin kurulması

Aşağıda yazılan R kod bloğu ile model kurulmuştur. Pazar sepet analizlerinde alınan ürünler arasındaki ilişki düzeyleri tanımlamada iki ölçütten yararlanılmaktadır. Bunlardan ilki destek (support), diğeri ise güven (confidence) ölçütleridir. Modelde minimum destek oranı değerimiz 0,3, güven olasılık değerimiz ise 0,5 olarak alınmıştır.

#Min destek 0.3, güven ise 0.5.
model <- apriori(islem, 
                 parameter = list(supp=0.3, conf=0.5, 
                                  maxlen=10, 
                                  target= "rules"))

summary(model)

Yukarı kod bloğundaki model çalıştırıldıktan elde edilen model sonuçları aşağıda verilmiştir. Elde edilen bulgulara göre;

  • Modelimiz 786 kuraldan oluşmaktadır. Diğer ifadeyle lhs (X) ve rhs (Y) kural uzunlukların toplamı (R)= 7+92+243+260+135+42+7=786’ya eşittir.
  • Ortalama lift değerleri 1’in üzerindedir. Bu bulgu X ürünü satın alınırsa Y ürünü satın alınma olasılığının da yüksek olduğunu göstermektedir.
  • Güven ve destek ölçüt değerleri de belirlenmiş eşik değerlerin üzerindedir.
set of 786 rules

rule length distribution (lhs + rhs):sizes
  1   2   3   4   5   6   7 
  7  92 243 260 135  42   7 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   3.000   4.000   3.735   4.000   7.000 

summary of quality measures:
    support         confidence        coverage           lift           count      
 Min.   :0.3333   Min.   :0.5000   Min.   :0.3333   Min.   :0.750   Min.   :3.000  
 1st Qu.:0.3333   1st Qu.:0.7500   1st Qu.:0.3333   1st Qu.:1.125   1st Qu.:3.000  
 Median :0.3333   Median :1.0000   Median :0.3333   Median :1.286   Median :3.000  
 Mean   :0.3598   Mean   :0.8773   Mean   :0.4283   Mean   :1.406   Mean   :3.238  
 3rd Qu.:0.3333   3rd Qu.:1.0000   3rd Qu.:0.4444   3rd Qu.:1.500   3rd Qu.:3.000  
 Max.   :0.8889   Max.   :1.0000   Max.   :1.0000   Max.   :2.250   Max.   :8.000  

Kuralların excel (xlsx) çalışma kitabına yazdırılması

i=inspect(model)
write_xlsx(i, "kurallar.xlsx")

Yukarıdaki kod bloğunun çalıştırılmasından sonra excel çalışma kitabına yazdırılan kurallar (R=786) setini ölçütlerle birlikte aşağıdaki linkten indirebilirsiniz.

Kurulan modelden üretilen ilk 15 kural aşağıdaki tabloda verilmiştir.

lhsrhssupportconfidencecoverageliftcount
{}=>{süt}0,5560,5561,0001,0005,000
{}=>{ekmek}0,5560,5561,0001,0005,000
{}=>{peynir}0,5560,5561,0001,0005,000
{}=>{deterjan}0,6670,6671,0001,0006,000
{}=>{tomates}0,7780,7781,0001,0007,000
{}=>{makarna}0,7780,7781,0001,0007,000
{}=>{luppo}0,8890,8891,0001,0008,000
{zeytin}=>{cay}0,3330,7500,4441,6883,000
{cay}=>{zeytin}0,3330,7500,4441,6883,000
{zeytin}=>{peynir}0,3330,7500,4441,3503,000
{peynir}=>{zeytin}0,3330,6000,5561,3503,000
{zeytin}=>{deterjan}0,4441,0000,4441,5004,000
{deterjan}=>{zeytin}0,4440,6670,6671,5004,000
{zeytin}=>{tomates}0,4441,0000,4441,2864,000
{tomates}=>{zeytin}0,4440,5710,7781,2864,000

İlişki kurallarının grafiğe taşınması

Aşağıda yazılan kod bloğu ile ilk olarak güven ve destek ölçüt değerleri ile lift değerlerini gösteren grafik verilmiştir.

plot(model, main="786 Kuralın Lift Değerlerinin Saçılım Grafiği")

Yukarıdaki kod bloğunun çalıştırılmasından sonra ilk olarak güven ve destek ölçüt değerleri ile lift değerlerini gösteren grafik verilmiştir. Grafik, x eksenindeki desteği ve y eksenindeki güveni göstermektedir. Lift değerleri griden kırmızıya değişen farklı seviyelerde bir renk olarak gösterilmektedir.

Aşağıda yazılan kod bloğu ile alternatif olarak aynı grafiği html formatında da elde ederek daha yakın plandan ve dinamik olarak ölçütleri inceleyebiliriz. Aynı zamanda hangi kuralların 1’in üzerinde olduğunu görebiliriz.

plot(model, engine = "htmlwidget")

Yukarıdaki kod bloğunun çalıştırılmasından sonra güven ve destek ölçüt değerleri ile lift değerlerini gösteren dinamik grafik aşağıda verilmiştir. Aşağıda göreceğiniz grafik dinamik değildir. Bunun nedeni sitemin temel düzeyde olmasıdır. R’da yukarıda verilen kod bloğu çalıştırıldığında dinamik olduğunu rahatlıkla görebilirsiniz.

Grafikte sadece güven (confidence) değerlerini görmek istersek aşağıdaki kod bloğunu yazmamız yeterlidir.

plot(model, measure = "confidence", main="786 Kuralın Güven Değerlerinin Saçılım Grafiği")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen güven ölçütü değerleri aşağıda grafikte verilmiştir.

Eğer kurduğumuz modeldeki kuralları güven, destek ve lift değerleri ile birlikte dinamik formatta (html) olarak görmek ve kaydetmek istersek aşağıdaki kod bloğunu yazabiliriz.

html <- inspectDT(model)
htmlwidgets::saveWidget(html, "kurallar.html", selfcontained = FALSE)
browseURL("kurallar.html")

Yukarıdaki kod bloğu çalıştırıldıktan sonra karşınıza aşağıdaki ekran görüntüsü gelecektir. Buradan ölçütleri eşik değerlere göre filtreleme yapabilir ve daha yakın plandan inceleyebilirsiniz.

Şimdide süpriz yapayım diyeceğim ama süpriz olmayacak 🙂 . Kurulan model ile ilgili simülasyon oluşturmak istersek ise aşağıdaki kod bloğunu yazmamız yeterli olacaktır. Bu simülasyon, model ile ilgili parametre yani ölçüt değerlerini değiştirmekten tutun da grafikler elde etmeye ve csv uzantılı olarak verileri kaydetmeye kadar pek değişikliğe olanak sağlamaktır. Kısaca bu simülasyon ara yüzü ile kurduğunuz modeli dilediğiniz gibi tasarlayabilir ve dizayn edebilirsiniz.

ruleExplorer(model, parameter = NULL)

Yukarıdaki kod bloğu çalıştırıldıktan sonra karşınıza aşağıdaki gibi simülasyon (Association Rule Explorer) ara yüz ekran görüntüsü gelecektir. Buradan ölçütleri dilediğiniz gibi değiştirebilir ve model iyileştirmeleri yapabilirsiniz.

Model kural ağının ve gruplandırılmış ürün grafiklerinin oluşturulması

Kurulan modelde ilişki kurallarının ağını çizmek ve onları yorumlamak mümkündür. Ancak ağın tamamını çizmek anlaşılırlığı azaltacağından aşağıda yazılan kod bloğu ile modeldeki ilk 30 ve son 15 kuralların ağ grafiği bu kısımda verilmiştir. Bunun nedeni oluşturulan kural gruplarının giderek artan ürün sayısına sahip olmasıdır.

#İlk 30 kural
set.seed(61) #ağ yapısını sabitlemek için
plot(head(model,30), method="graph", main="Modeldeki Ürünlerin İlk 30 Kural Ağı")

#Son 15 kural
set.seed(61) #ağ yapısını sabitlemek için
plot(tail(model,15), method="graph", main="Modeldeki Ürünlerin Son 15 Kural Ağı")

Yukarıdaki kod bloğunun ilk iki satırı çalıştırıldığında elde edilen ilk 30 kural ağı aşağıdaki ağ grafiğinde verilmiştir. Aşağıdaki grafikte destek ölçütü değerinin büyüklüğü dairenin büyüklüğü, lift değerinin büyüklüğü ise renk tonu ile doğru orantılı olarak değişiklik göstermektedir. Yani daire ne kadar büyükse destek (support) değeri, dairenin renki ne kadar koyu tonlarda ise lift değeri o kadar yüksek demektir.

Yukarıdaki kod bloğunun son iki satırı çalıştırıldığında elde edilen son 15 kural ağı aşağıdaki ağ grafiğinde verilmiştir. Aşağıdaki grafikte destek ölçütü değerinin büyüklüğü dairenin büyüklüğü, lift değerinin büyüklüğü ise renk tonu ile doğru orantılı olarak değişiklik göstermektedir. Yani daire ne kadar büyükse destek (support) değeri, dairenin renki ne kadar koyu tonlarda ise lift değeri o kadar yüksek demektir.

Şimdi de ilk 20 kuralın gruplandırılmış matrisini aşağıda yazılan kod bloğu ile verelim. Son 20 kural burada verilmemiştir. Bunun nedeni gruplar içerisindeki ürün sayısının artışına bağlı olarak matrisin aşırı karmaşık hal almasıdır.

set.seed(61)
plot(head(model,20), method = "grouped",  main="Modeldeki Ürünlerin İlk 20 Gruplandırılmış Matrisi")

Yukarıdaki kod bloğu çalıştırıldığında elde edilen ilk 20 kuralın gruplandırılmış ürün matrisi aşağıdaki grafikte verilmiştir.

Model Lift değerlerinin incelenmesi

Kurulan modelde en yüksek lift ölçütü değerlerine göre sahip ilk 10 kurala aşağıda yazılan kod bloğu ile bakalım.

inspectDT(head(model, by = "lift", 10))

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan modelde en yüksek lift değerine sahip ilk 10 kural aşağıdaki tabloda verilmiştir. İdeal lift değerlerinin 1’den büyük olması istenir. Seçilen kurallara bakıldığında lift değerleri ile birlikte güven ve destek ölçüt eşik değerlerinin karşılandığını göstermektedir. Tabi biz burada en yüksek lift değerine sahip ilk 10 kuralı verdik. Dilerseniz araştırmanızın amacına ve tasarımına bağlı olarak ilk 20 veya son 30 gibi kurallar belirleyebilirsiniz. Bu tamamen sizin ne yapmak istediğiniz ile ilgili olan bir şeydir.

Belirli kuralları inceleme

Kurulan modelde sadece belirli kuralları, örneğin rhs (Y) kuralına göre luppo ürününe bakacak olursak aşağıdaki gibi bir kod bloğu yazabiliriz. Kurulan modele göre gruplarda oluşacak ürün sayısı en az iki en fazla ise 10’dur.

luppo_rhs <- apriori(islem, 
                          parameter = list(supp=0.3, conf=0.5, 
                                         maxlen=10, 
                                         minlen=2),
                          appearance = list(default="lhs", rhs="luppo"))
inspect(luppo_rhs[1:10])

Yukarıdaki R kod bloğunun çalıştırılmasından sonra diğer ürünlerin sağ tarafında (rhs:right-hand-side) yer alan Luppo ürününe giden ilk 10 kural aşağıdaki tabloda verilmiştir. Örneğin ilk sıradaki kuraldan şunu anlamamız gerekir; {Zeytin} -> {luppo} yani zeytinin bulunduğu bir ürün kümesinde lupponun da bulunma olasılığı güven (confidence) değerine bakacak olursak % 75’dir. Ancak lift değeri 1’in altında olduğu için yorumlamaktan kaçınmak yerinde olacaktır. Diğer taraftan ikinci satıda yer alan süt ürününün bulunduğu bir ürün kümesinde lupponun da bulunma olasılığı güven (confidence) değerine bakacak olursak % 100’dür. Aynı zamanda burada lift değeri 1’den de büyüktür.

Yukarıda Luppo ürünü ile ilgili olarak kurulan modelde diğer ürünlere göre sağ tarafta (rhs:right-hand-side) yer alan luppo ürününe giden son 10 kural ise aşağıda yazılan kod bloğunda verilmiştir.

inspectDT(tail(luppo_rhs,10))

Yukarıdaki R kod bloğunun çalıştırılmasından sonra diğer ürünlerden sağ tarafta (rhs:right-hand-side) yer alan Luppo ürününe giden son 10 kural verilmiştir. İlk satırdaki yorumlamak ile işe başlayabiliriz. {deterjan,ekmek,makarna,peynir} ürünlerin bulunduğu bir ürün kümesinde lupponun da bulunma olasılığı ({deterjan,ekmek,makarna,peynir} -> {luppo}) güven (confidence) değerine bakacak olursak % 100’dür. Lift değeri ise 1’in üstünde olduğu için makuldur. Aşağıdaki bütün ürün grupları esasında güven, destek ve lift ölçütlerine ilişkin değerleri eşik değerlerin üzerindedir. Dolayısıyla tamamı kabul edilebilir ve yorumlanabilirdir. Dilerseniz sizler de diğer ürünlerin rhs (X) ve lhs (Y) parametrelerini modele girerek bu ürünlere de ulaşabilirsiniz.

Yukarıda Luppo ürünü ile ilgili olarak modelde diğer ürünlere göre sağ tarafta (rhs:right-hand-side) yer alan Luppo ürününe giden son 10 ve ilk 15 kuralın ağ yapısı yukardaki tablonun yanı sıra aşağıda yazılan kod bloğu ile de verilmiştir.

#son 10 kural
plot(tail(luppo_rhs,10), method="graph", main="Luppo Ürünü Son 10 Kural (RHS) Ağı")
#ilk 15 kural
plot(head(luppo_rhs,15), method="graph", main="Luppo Ürünü İlk 15 Kural (RHS) Ağı")

Yukarıda yer alan kod bloğunun çalıştırılmasından sonra Luppo ürününe giden son 10 kuralın ağ yapısı aşağıda verilmiştir. Aşağıdaki grafikte destek ölçütü değerinin büyüklüğü dairenin büyüklüğü, lift değerinin büyüklüğü ise renk tonu ile doğru orantılı olarak değişiklik göstermektedir. Yani daire ne kadar büyükse destek (support) değeri, dairenin renki ne kadar koyu tonlarda ise lift değeri o kadar yüksek demektir.

Yukarıda yer alan kod bloğunun çalıştırılmasından sonra Luppo ürününe giden ilk 15 kuralın ağ yapısı aşağıda verilmiştir. Aşağıdaki grafikte destek ölçütü değerinin büyüklüğü dairenin büyüklüğü, lift değerinin büyüklüğü ise renk tonu ile doğru orantılı olarak değişiklik göstermektedir. Yani daire ne kadar büyükse destek (support) değeri, dairenin renki ne kadar koyu tonlarda ise lift değeri o kadar yüksek demektir.

Şimdi de kurulan Luppo ürünü modelinin gruplandırılmış matrisini aşağıda yazılan kod bloğu ile verelim.

set.seed(61)
plot(luppo_rhs, method = "grouped",  main="Luppo Ürünü Gruplandırılmış Matrisi")

Yukarıdaki kod bloğu çalıştırıldığında elde edilen Luppo ürünü gruplandırılmış matrisi aşağıdaki grafikte verilmiştir.

Luppo ürünü Lift değerlerinin incelenmesi

Kurulan luppo ürünü modelinde en yüksek lift ölçütü değerlerine göre sahip ilk 10 kurala aşağıda yazılan kod bloğu ile bakalım.

inspectDT(head(luppo_rhs, by = "lift", 10))

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan Luppo ürünü modelinde en yüksek lift değerine sahip ilk 10 kural aşağıdaki tabloda verilmiştir. İdeal lift değerlerinin 1’den büyük olması istenir. Seçilen kurallara bakıldığında lift değerleri ile birlikte güven ve destek ölçüt eşik değerlerinin karşılandığını göstermektedir. Tabi biz burada en yüksek lift değerine sahip ilk 10 kuralı verdik. Dilerseniz araştırmanızın amacına ve tasarımına bağlı olarak ilk 20 veya son 30 gibi kurallar belirleyebilirsiniz. Bu tamamen sizin ne yapmak istediğiniz ile ilgili olan bir şeydir.

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan modelde en yüksek lift değerine sahip ilk 10 kural aşağıdaki tabloda verilmiştir. İdeal lift değerlerinin 1’den büyük olması istenir. Seçilen kurallara bakıldığında lift değerleri ile birlikte güven ve destek ölçüt eşik değerlerinin karşılandığını göstermektedir. Tabi biz burada en yüksek lift değerine sahip ilk 10 kuralı verdik. Dilerseniz araştırmanızın amacına ve tasarımına bağlı olarak ilk 20 veya son 30 gibi kurallar belirleyebilirsiniz. Bu tamamen sizin ne yapmak istediğiniz ile ilgili olan bir şeydir.

Yukarıdaki Luppo ürününe ilişkin kurulan modelde elde edilen kuralların tamamını ölçütlerle birlikte eğer excel çalışma kitabına yazdırmak istersek aşağıdaki kod bloğunu yazmamız yeterlidir.

luppo_kural=inspect(luppo_rhs)
write_xlsx(luppo_kural, "luppo.xlsx")

Yukarıdaki kod bloğunun çalıştırılmasından sonra luppo ürününe ilişkin elde elde edilen rhs (sağ taraf) kuralları (R=121)’nın tamamını xlsx formatında aşağıdaki linkten indirebilirsiniz.

2. Modelin kurulması

Aşağıda yazılan R kod bloğu ile 2. model kurulmuş, ardından kurallar Microsoft excel çalışma kitabına yazdırılmıştır. Pazar sepet analizlerinde alınan ürünler arasındaki ilişki düzeyleri tanımlamada temel iki ölçütten yararlanılmaktadır. Bunlardan ilki destek (support), diğeri ise güven (confidence) ölçütleridir. 2. modelde minimum destek oranı değerimiz 0,5, güven olasılık değerimiz ise 0,6 olarak alınmıştır.

model2 <- apriori(islem, 
                 parameter = list(supp=0.5, conf=0.6, 
                                  maxlen=10, 
                                  target= "rules"))
summary(model2)

Yukarı kod bloğundaki model çalıştırıldıktan elde edilen model sonuçları aşağıda verilmiştir. Elde edilen bulgulara göre;

  • Modelimiz 36 kuraldan oluşmaktadır. Diğer ifadeyle lhs (X) ve rhs (Y) kural uzunlukların toplamı (R)= 4+20+12=36’ya eşittir.
  • Ortalama lift değerleri 1’in üzerindedir. Bu bulgu X ürünü satın alınırsa Y ürünü satın alınma olasılığının da yüksek olduğunu göstermektedir.
  • Güven ve destek ölçüt değerleri de belirlenmiş eşik değerlerin yani destek ölçütü için 0,5, güven için 0,6’nın üzerindedir.
Absolute minimum support count: 4 

set item appearances ...[0 item(s)] done [0.00s].
set transactions ...[12 item(s), 9 transaction(s)] done [0.00s].
sorting and recoding items ... [7 item(s)] done [0.00s].
creating transaction tree ... done [0.00s].
checking subsets of size 1 2 3 done [0.00s].
writing ... [36 rule(s)] done [0.00s].
creating S4 object  ... done [0.00s].
set of 36 rules

rule length distribution (lhs + rhs):sizes
 1  2  3 
 4 20 12 

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1.000   2.000   2.000   2.222   3.000   3.000 

summary of quality measures:
    support         confidence        coverage           lift            count      
 Min.   :0.5556   Min.   :0.6250   Min.   :0.5556   Min.   :0.9184   Min.   :5.000  
 1st Qu.:0.5556   1st Qu.:0.7143   1st Qu.:0.5556   1st Qu.:1.0000   1st Qu.:5.000  
 Median :0.5556   Median :0.8333   Median :0.7778   Median :1.1250   Median :5.000  
 Mean   :0.5988   Mean   :0.8339   Mean   :0.7377   Mean   :1.1088   Mean   :5.389  
 3rd Qu.:0.5556   3rd Qu.:1.0000   3rd Qu.:0.8889   3rd Qu.:1.1652   3rd Qu.:5.000  
 Max.   :0.8889   Max.   :1.0000   Max.   :1.0000   Max.   :1.2857   Max.   :8.000 

2. Model kurallarının excel (xlsx) çalışma kitabına yazdırılması

i2=inspect(model2)
write_xlsx(i2, "2.modelkurallar.xlsx")

Yukarıdaki kod bloğunun çalıştırılmasından sonra excel çalışma kitabına yazdırılan kurallar (R=36) setini ölçüt değerleriyle birlikte aşağıdaki linkten indirebilirsiniz.

Kurulan 2. modelden üretilen kurallar (R=36) lift değerlerinin büyüklüğüne göre büyükten küçüğe doğru sıralanmış ve aşağıdaki tabloda verilmiştir.

lhsrhssupportconfidencecoverageliftcount
{ekmek}=>{makarna}0,5561,0000,5561,2865
{makarna}=>{ekmek}0,5560,7140,7781,2865
{peynir}=>{makarna}0,5561,0000,5561,2865
{makarna}=>{peynir}0,5560,7140,7781,2865
{ekmek,luppo}=>{makarna}0,5561,0000,5561,2865
{luppo,makarna}=>{ekmek}0,5560,7140,7781,2865
{luppo,peynir}=>{makarna}0,5561,0000,5561,2865
{luppo,makarna}=>{peynir}0,5560,7140,7781,2865
{deterjan,luppo}=>{makarna}0,5561,0000,5561,2865
{süt}=>{luppo}0,5561,0000,5561,1255
{luppo}=>{süt}0,5560,6250,8891,1255
{ekmek}=>{luppo}0,5561,0000,5561,1255
{luppo}=>{ekmek}0,5560,6250,8891,1255
{peynir}=>{luppo}0,5561,0000,5561,1255
{luppo}=>{peynir}0,5560,6250,8891,1255
{makarna}=>{luppo}0,7781,0000,7781,1257
{luppo}=>{makarna}0,7780,8750,8891,1257
{ekmek,makarna}=>{luppo}0,5561,0000,5561,1255
{makarna,peynir}=>{luppo}0,5561,0000,5561,1255
{deterjan,makarna}=>{luppo}0,5561,0000,5561,1255
{makarna,tomates}=>{luppo}0,5561,0000,5561,1255
{deterjan}=>{makarna}0,5560,8330,6671,0715
{makarna}=>{deterjan}0,5560,7140,7781,0715
{luppo,makarna}=>{deterjan}0,5560,7140,7781,0715
{luppo,tomates}=>{makarna}0,5560,8330,6671,0715
{}=>{deterjan}0,6670,6671,0001,0006
{}=>{tomates}0,7780,7781,0001,0007
{}=>{makarna}0,7780,7781,0001,0007
{}=>{luppo}0,8890,8891,0001,0008
{luppo}=>{tomates}0,6670,7500,8890,9646
{tomates}=>{luppo}0,6670,8570,7780,9646
{deterjan}=>{luppo}0,5560,8330,6670,9385
{luppo}=>{deterjan}0,5560,6250,8890,9385
{tomates}=>{makarna}0,5560,7140,7780,9185
{makarna}=>{tomates}0,5560,7140,7780,9185
{luppo,makarna}=>{tomates}0,5560,7140,7780,9185

Yapılan apriori algoritması çalışması ile veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunulması amaçlanmıştır.

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

Öne çıkan

Virüs, Kriz ve Yapay Zeka Arama Terimlerine Bağlı Olarak Google Trend Verilerinin Ülkeler Açısından Karşılaştırmalı Analizi: Comparative Analysis of Google Trend Data Based on Virus, Crisis and AI Search Terms by Countries

Bilindiği üzere Google Trends ile bir ülke veya bölgede öne çıkan içerikler ortaya konulabilmektedir. Google Trends, Google Arama’da en çok yapılan arama sorgularının çeşitli bölge ve dillerdeki popülerliğini analiz eden bir Google web sitesidir. Web sitesi, zaman içindeki farklı sorguların arama hacmini karşılaştırmalı olarak ortaya koyan grafikler sunmaktadır. Google Trendler ayrıca, kullanıcılara iki veya daha fazla arama terimi ile göreli arama hacmini karşılaştırmasına olanak da tanımaktadır.

Araştırma kapsamında ilk üç çalışma yapılarak ülkelere göre karşılaştırmalı olarak ortaya konulacaktır. İlk çalışmada “virüs” aramalarının seyri, ardından ise “kriz” ve “yapay zeka” arama terimlerinin ülkelere göre ve dünyadaki seyri incelenecektir. Son kısımda ise “Suriye” arama terimleri Türkiye özelinde ele alınacaktır.

Metodoloji ve Bulgular

a) İlk Çalışma

Çalışma kapsamında 01-01-2020 ile 31-01-2021 tarihleri arasında “virüs” arama terimine bağlı olarak başta COVID-19 olmak üzere bütün virüs kaynaklı aramaların Amerika, Türkiye, Kanada, Fransa özelinde ve Dünya ölçeğinde izlediği seyrin ortaya konulması amaçlanmıştır. Aynı zamanda bu arama verisinden yola çıkarak gelecek 1 yıl için tahmin yapılmıştır.

b) İkinci Çalışma

Çalışma kapsamında 01-01-2004 ile 27-10-2020 tarihleri arasında “kriz” arama terimine bağlı olarak başta ekonomik ve sağlık olmak üzere kriz aramalarının Amerika, Türkiye, Kanada, Fransa özelinde ve Dünya ölçeğinde izlediği seyrin ortaya konulması amaçlanmıştır.

c) Üçüncü Çalışma

Bu kısımda 01-01-2004 ile 31-01-2021 tarihleri arasında “yapay zeka” arama terimine bağlı olarak Amerika, Türkiye, Kanada, Fransa özelinde ve Dünya ölçeğinde yapay zeka arama teriminin hit sayıları üzerinden izlediği seyrin ortaya konulması amaçlanmıştır.

d) Dördüncü Çalışma

Bu bölümde 29-04-2011 ile 01-02-2021 tarihleri arasında “Suriye” arama terimine bağlı olarak Türkiye‘de Suriye arama teriminin hit sayıları üzerinden izlediği seyrin ortaya konulması amaçlanmıştır. Ayrıca Suriye arama terimiyle ilişkili diğer aramalar da bu çalışma kapsamında ortaya konulmuştur.

Uygulama ve Bulgular

Çalışma kapsamında R programlama dili kullanılmıştır. Veri gtrendsR paketi ile Google Trends veri tabanından eş zamanlı olarak alınacaktır. O zaman işe koyulma zamanı 🙂 . İlk olarak yüklenecek R paketlerini verelim. Arama terimleri karşılaştırılacak ülkenin kullandığı dile göre yapılmalıdır.

Yüklenecek kütüphaneler

Yüklenecek kütüphane konusunda her zamanki gibi bonkorüm galiba 🙂 ; daha az kütüphaneyle de aynı analizleri yapabilirsiniz. Ancak daha çok esneklik ve estetik tasarım tanıdığı için olması gerekenden fazla kütüphane ile çalışıyorum.

kutuphane<-c("dplyr","tibble","tidyr","ggplot2","formattable","ggthemes","readr","readxl","ggpubr","formattable", "ggstance","pander", "gtrendsR","explore", "lubridate", "writexl", "tidytext","prophet")
yukle<-sapply(kutuphane, require, character.only = TRUE)
yukle

a) İlk Çalışma

Bu kısımda 01-01-2020 ile 31-01-2021 tarihleri arasında “virüs” arama terimine bağlı olarak Amerika, Türkiye, Kanada ve Fransa özelinde izlediği seyir ortaya konulmuştur. Aynı zamanda bu arama verisinden yola çıkarak gelecek 1 yıl için tahmin yapılmıştır.

arama = gtrends(c("virus","virus","virüs", "virus"), geo = c("US","CA","TR", "FR"), gprop = "web", time = "2020-01-01 2021-01-31")[[1]]
arama=arama %>% mutate(geo = recode(geo, 
  "US" = "ABD",
  "CA" = "Kanada",
  "TR" = "Türkiye",
  "FR" = "Fransa"))

ggplot(data = arama, aes(x = date, y = hits, group = geo)) +
  geom_line(size = 1, alpha = 0.7, aes(color = geo), show.legend = FALSE) +
  geom_point(size = 0) +
  theme(legend.title=element_blank(), axis.title.x = element_blank()) +
  ylab("Hit Sayısı") + 
  xlab("Tarih")+
  ggtitle("Virüs Arama Terimine Göre Google Trendleri")+
  facet_wrap(~geo)+
  theme_hc()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra virüs arama terimine göre Google Trendleri karşılaştırmalı olarak aşağıdaki grafikte verilmiştir. Grafiğe göre virüs arama terimi hit sayısının bütün ülkelerde Mart 2020’de zirveye ulaştığı görülmektedir. Ancak bu ülkeler içerisinde en yüksek hit sayısı ABD’de görülürken en düşük hit sayısı Türkiye’de görülmüştür. 2021 yılının ocak ayında ise bütün ülkeler en düşük hit sayısına sahip olduğu görülmektedir.

Yukarıdaki arama trend verilerine bağlı olarak bir de Facebook tarafından geliştirilen prophet paketi kullanarak gelecek 1 yıla ilişkin ülkelere göre tahmin yapalım. Önceliği Türkiye’ye verelim 🙂 .

# 1 Yıllık Tahmin
TR<-filter(arama, geo=="Türkiye")

tahmin <- TR[,c("date","hits")]
colnames(tahmin) <-c("ds","y")

t1 <- prophet(tahmin)

gelecek <- make_future_dataframe(t1, periods = 365)
ongoru <- predict(t1, gelecek)
plot(t1, ongoru)

Yukarıdaki R kod bloğunun çalıştırılmasından Türkiye için gelecek 1 yıllık (2022 yılının 31 Ocağına kadar) virüs arama trendi aşağıdaki grafikte verilmiştir. Görüleceği üzere virüs arama trendinin %95 güven aralığı içerisinde azalan bir trend ortaya koyduğu görülmektedir.

Türkiye tahmin verilerini aşağıda yazdığım R kod bloğu ile xlsx uzantılı Microsoft Excel çalışma kitabına yazdırdım.

turkiye=forecast[c('ds', 'yhat',  'yhat_lower', 'yhat_upper')] 
write_xlsx(turkiye, "turkiyetahminleri.xlsx")

Yukarıdaki R kod bloğu çalıştırıldıktan sonra elde edilen Türkiye virüs arama 1 yıllık tahmin verilerini güven aralıklarıyla birlikte aşağıdan indirebilirsiniz.

Yukarıdaki arama trend verilerine bağlı olarak gelecek 1 yıla ilişkin ABD virüs arama tahminlerini ortaya koyalım.

ABD<-filter(arama, geo=="ABD")
tahmin <- ABD[,c("date","hits")]
colnames(tahmin) <-c("ds","y")

t1 <- prophet(tahmin)
gelecek <- make_future_dataframe(t1, periods = 365)
ongoru <- predict(t1, gelecek)
plot(t1, ongoru)

Yukarıdaki R kod bloğunun çalıştırılmasından ABD için gelecek 1 yıllık (2022 yılının 31 Ocağına kadar) virüs arama trendi aşağıdaki grafikte verilmiştir. Görüleceği üzere virüs arama trendinin %95 güven aralığı içerisinde azalan bir trend ortaya koyduğu görülmektedir. Ancak bu azalma trendi Türkiye’den daha hızlı ve keskindir. Bunu sol tarafta yer alan y (tahmin) değerlerinden rahatlıkla görüyoruz.

Yukarıdaki arama trend verilerine bağlı olarak şimdi de gelecek 1 yıla ilişkin Fransa virüs arama tahminlerini ortaya koyalım.

fr<-filter(arama, geo=="Fransa")
tahmin <- fr[,c("date","hits")]
colnames(tahmin) <-c("ds","y")

t1 <- prophet(tahmin)
gelecek <- make_future_dataframe(t1, periods = 365)
ongoru <- predict(t1, gelecek)
plot(t1, ongoru)

Yukarıdaki R kod bloğunun çalıştırılmasından Fransa için gelecek 1 yıllık (2022 yılının 31 Ocağına kadar) virüs arama trendi aşağıdaki grafikte verilmiştir. Görüleceği üzere virüs arama trendinin %95 güven aralığı içerisinde diğer ülkelerdekine benzer olarak azalan bir trend ortaya koyduğu görülmektedir. Ancak bu azalma trendi Türkiye’den ve ABD’den daha düşüktür. Bunu sol tarafta yer alan y (tahmin) değerlerinden rahatlıkla görüyoruz.

Yukarıdaki arama trend verilerine bağlı olarak son olarak gelecek 1 yıla ilişkin Kanada virüs arama tahminlerini ortaya koyalım.

kn<-filter(arama, geo=="Kanada")
tahmin <- kn[,c("date","hits")]
colnames(tahmin) <-c("ds","y")

t1 <- prophet(tahmin)
gelecek <- make_future_dataframe(t1, periods = 365)
ongoru <- predict(t1, gelecek)
plot(t1, ongoru)

Yukarıdaki R kod bloğunun çalıştırılmasından Kanada için gelecek 1 yıllık (2022 yılının 31 Ocağına kadar) virüs arama trendi aşağıdaki grafikte verilmiştir. Görüleceği üzere virüs arama trendinin %95 güven aralığı içerisinde diğer ülkelerdekine benzer olarak azalan bir trend ortaya koyduğu görülmektedir. Ancak bu azalma trendi Türkiye ve Fransa’dan daha yüksek iken ABD ile benzerdir. Bunu sol tarafta yer alan y (tahmin) değerlerinden rahatlıkla görüyoruz.

Virüs” arama terimine bağlı olarak Dünyadaki google trendlerine de elimiz değmişken aşağıda yazdığım R kod bloğu ile bakalım 🙂 .

virus = gtrends(c("virus","virus","virüs", "virus"), gprop = "web", time = "2020-01-01 2021-01-31")[[1]]

virus= virus  %>% mutate(hits=as.numeric(hits))

ggplot(data = virus, aes(x = date, y = hits)) +
  geom_line(size = 1, alpha = 0.7, aes(color = geo), show.legend = FALSE) +
  geom_point() +
  theme(legend.title=element_blank(), axis.title.x = element_blank()) +
  ylab("Hit Sayısı") + 
  xlab("Tarih")+
  ggtitle("Virüs Terimine Göre Dünyada Google Trendleri")+
  theme_economist_white()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra Dünyadaki “virüs” arama google trendleri aşağıdaki grafikte verilmiştir.

b) İkinci Çalışma

Bu bölümde 01-01-2004 ile 27-10-2020 tarihleri arasında “kriz” arama terimine bağlı olarak başta ekonomik ve sağlık olmak üzere kriz aramalarının Amerika, Türkiye, Kanada ve Fransa özelinde izlediği seyir aşağıda yazılan kod bloğu ile ortaya konulmuştur. Elde edilen bulgular ülkelere ve yıllara göre karşılaştırmalı olarak verilmiştir.

kriz = gtrends(c("crisis","crisis","kriz", "crise"), geo = c("US","CA","TR", "FR"), gprop = "web", time = "2004-01-01 2020-10-27")[[1]]

kriz=kriz %>% mutate(geo = recode(geo, 
  "US" = "ABD",
  "CA" = "Kanada",
  "TR" = "Türkiye",
  "FR" = "Fransa"))

ggplot(data = kriz, aes(x = date, y = hits, group = geo)) +
  geom_line(size = 1, alpha = 0.7, aes(color = geo), , show.legend = FALSE) +
  geom_point(size = 0) +
  theme(legend.title=element_blank(), axis.title.x = element_blank()) +
  ylab("Hit Sayısı") + 
  xlab("Tarih")+
  ggtitle("Kriz Arama Terimine Göre Google Trendleri")+
  facet_grid(~geo)+
  theme_hc()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde “kriz” arama terimine bağlı olarak elde edilen bulgular ülkelere ve yıllara göre karşılaştırmalı olarak aşağıdaki grafikte verilmiştir. Elde edilen bulgulara göre kriz terimi arama sayısının en yüksek olduğu ülke Fransa olup, en yüksek olduğu tarih ise 01.10.2008 tarihidir. Bu tarihte Fransa’da kriz arama terimindeki hit sayısı 100’dür. Genel olarak bakıldığında karşılaştırılan ülkeler içerisinde Fransa’da kriz arama terimine bağlı olarak ortaya çıkan hit sayıları ve bu hit sayılarının seyri diğer ülkelere göre daha yüksek olduğu söylenebilir. Türkiye özelinde bakıldığında ise kriz arama terimine bağlı olarak ortaya çıkan hit sayıları açısından en düşük ülkedir. Ancak Türkiye kendi içerisinde değerlendirildiğinde kriz arama teriminin sayısının en yüksek olduğu ilk 3 tarih hit sayısına göre şöyledir: 03.01.2004 (Hit sayısı: 24), 11.01.2008 (Hit sayısı: 23) ve 05.01.2004 (Hit sayısı: 22).

Türkiye için en yüksek ilk 10 kriz hit sayısının olduğu tarihler ise aşağıda yazılan kod bloğu ile verilmiştir.

kriz %>% filter(geo=="Türkiye") %>% select(date, hits) %>% arrange(desc(hits)) %>% head(10) %>% formattable()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra Türkiye için elde edilen en yüksek ilk 10 kriz hit sayısı tarihlere göre aşağıda verilmiştir.

Fransa için en yüksek ilk 10 kriz hit sayısının olduğu tarihler ise aşağıda yazılan kod bloğu ile verilmiştir.

kriz %>% filter(geo=="Fransa") %>% select(date, hits) %>% arrange(desc(hits)) %>% head(10) %>% formattable()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra Fransa için elde edilen en yüksek ilk 10 kriz hit sayısı tarihlere göre aşağıda verilmiştir.

Son olarak ABD için en yüksek ilk 10 kriz hit sayısının olduğu tarihler ise aşağıda yazılan kod bloğu ile verilmiştir.

kriz %>% filter(geo=="ABD") %>% select(date, hits) %>% arrange(desc(hits)) %>% head(10) %>% formattable()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra ABD için elde edilen en yüksek ilk 10 kriz hit sayısı tarihlere göre aşağıda verilmiştir.

“Kriz” arama terimine bağlı olarak elde edilen bulguların veri seti aşağıda yazılan R kod bloğu ile ülkelere ve tarihlere göre karşılaştırmalı olarak xlsx uzantılı Microsoft Excel çalışma kitabına yazdırdım.

write_xlsx(kriz, "ulkeverileri.xlsx")

Buradan bu veri setini indirebilirsiniz.

Kriz” arama terimine bağlı olarak Dünyadaki google trendlerine de elimiz değmişken aşağıda yazdığım R kod bloğu ile bakalım :).

crisis = gtrends(c("crisis","crisis","kriz", "crise"), gprop = "web", time = "2004-01-01 2020-10-27")[[1]]

crisis= crisis  %>% mutate(hits=as.numeric(hits))

ggplot(data = crisis, aes(x = date, y = hits)) +
  geom_line(size = 1, alpha = 0.7, aes(color = geo), show.legend = FALSE) +
  geom_point() +
  theme(legend.title=element_blank(), axis.title.x = element_blank()) +
  ylab("Hit Sayısı") + 
  xlab("Tarih")+
  ggtitle("Kriz Terimine Göre Dünyada Google Trendleri")+
  theme_economist_white()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra Dünyadaki “kriz” arama google trendleri aşağıdaki grafikte verilmiştir.

Dünyada en yüksek ilk 10 “kriz” arama terimi hit sayısının olduğu tarihler aşağıda yazılan kod bloğu ile verilmiştir.

crisis %>% mutate(hits=as.numeric(hits)) %>% select(date, hits) %>% arrange(desc(hits)) %>% head(10) %>% formattable()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra Dünyada en yüksek ilk “kriz” arama terimi hit sayısı tarihlere göre aşağıdaki tabloda verilmiştir. Zaten ortaya konulan bu bulgular hepimizin bildiği üzere 2008 yılının son aylarında ortaya çıkan ve dünyayı etkisi altına alan 2008 Dünya ekonomik krizini doğrular niteliktedir.

“Kriz” arama terimine bağlı olarak elde edilen bulguların veri seti aşağıda yazılan R kod bloğu ile tarihlere göre karşılaştırmalı olarak xlsx uzantılı Microsoft Excel çalışma kitabına yazdırdım.

veri=crisis %>% mutate(hits=as.numeric(hits))
write_xlsx(veri, "krizdunya.xlsx")

Buradan bu Dünya kriz veri setini indirebilirsiniz.

c) Üçüncü Çalışma

Bu bölümde 01-01-2004 ile 31-01-2021 tarihleri arasında “yapay zeka” arama terimine bağlı olarak Amerika, Türkiye, Kanada ve Fransa özelinde izlediği seyir aşağıda yazılan kod bloğu ile ortaya konulmuştur. Elde edilen bulgular ülkelere ve yıllara göre karşılaştırmalı olarak verilmiştir. Elde edilen bulgular ülkelere ve yıllara göre karşılaştırmalı olarak verilmiştir.

ai = gtrends(c("artificial intelligence","artificial intelligence","yapay zeka", "intelligence artificielle"), geo = c("US","CA","TR", "FR"), gprop = "web", time = "2004-01-01 2020-01-31")[[1]]

ai=ai %>% mutate(geo = recode(geo, 
  "US" = "ABD",
  "CA" = "Kanada",
  "TR" = "Türkiye",
  "FR" = "Fransa"))

ggplot(data = ai, aes(x = date, y = hits, group = geo)) +
  geom_line(size = 1, alpha = 0.7, aes(color = geo), , show.legend = FALSE) +
  geom_point(size = 0) +
  theme(legend.title=element_blank(), axis.title.x = element_blank()) +
  ylab("Hit Sayısı") + 
  xlab("Tarih")+
  ggtitle("Yapay Zeka Arama Terimine Göre Google Trendleri")+
  facet_grid(~geo)+
  theme_hc()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde “yapay zeka” arama terimine bağlı olarak elde edilen bulgular ülkelere ve yıllara göre karşılaştırmalı olarak aşağıdaki grafikte verilmiştir. Elde edilen bulgular yapay zeka arama trendlerinin dalgalı bir seyir izlediğini göstermektedir. Yapay zeka terimi arama sayısının en yüksek olduğu ülke Türkiye olup, en yüksek olduğu tarih ise 01.11. 2004 tarihidir. Bu tarihte Türkiye’de yapay zeka arama terimindeki hit sayısı 100’dür. Genel olarak bakıldığında karşılaştırılan ülkeler içerisinde Türkiye’de yapay zeka arama terimine bağlı olarak ortaya çıkan hit sayıları ve bu hit sayılarının seyri diğer ülkelere göre daha yüksek ve bu konunun daha popüler olduğu söylenebilir. Türkiye kendi içerisinde değerlendirildiğinde yapay zeka arama teriminin sayısının en yüksek olduğu ilk 3 tarih hit sayısına göre şöyledir: 01.11. 2004 (Hit sayısı: 100), 01.10.2004 (Hit sayısı: 98) ve 01.02.2004 (Hit sayısı: 95).

Türkiye için en yüksek ilk 10 yapay zeka hit sayısının olduğu tarihler aşağıda yazılan kod bloğu ile verilmiştir.

ai %>% filter(geo=="Türkiye") %>% select(date, hits) %>% arrange(desc(hits)) %>% head(10) %>% formattable()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra Türkiye için elde edilen en yüksek ilk 10 yapay zeka hit sayısı tarihlere göre aşağıda verilmiştir.

“Yapay zeka” arama terimine bağlı olarak elde edilen bulguların veri seti aşağıda yazılan R kod bloğu ile ülkelere ve tarihlere göre karşılaştırmalı olarak xlsx uzantılı Microsoft Excel çalışma kitabına yazdırdım.

write_xlsx(ai, "ulkeverileriai.xlsx")

Buradan bu veri setini indirebilirsiniz.

Yapay Zeka” arama terimine bağlı olarak Dünyadaki google trendlerine de elimiz değmişken aşağıda yazdığım R kod bloğu ile bakalım 🙂 .

ai = gtrends(c("artificial intelligence","artificial intelligence","yapay zeka", "intelligence artificielle"), gprop = "web", time = "2004-01-01 2020-01-31")[[1]]
ai= ai  %>% mutate(hits=as.numeric(hits))

ggplot(data = ai, aes(x = date, y = hits)) +
  geom_line(size = 1, alpha = 0.7, aes(color = geo), show.legend = FALSE) +
  geom_point() +
  theme(legend.title=element_blank(), axis.title.x = element_blank()) +
  ylab("Hit Sayısı") + 
  xlab("Tarih")+
  ggtitle("Yapay Zeka Terimine Göre Dünyada Google Trendleri")+
  theme_economist_white()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra Dünyadaki “yapay zeka” arama google trendleri aşağıdaki grafikte verilmiştir.

d) Dördüncü Çalışma

Bu bölümde 29-04-2011 ile 01-02-2021 tarihleri arasında “Suriye” arama terimine bağlı olarak Türkiye‘de Suriye arama teriminin hit sayıları üzerinden izlediği seyrin ortaya konulması amaçlanmıştır. Ayrıca Suriye arama terimiyle ilişkili diğer aramalar da bu çalışma kapsamında ortaya konulmuştur. Elde edilen bulgular yıllara göre karşılaştırmalı olarak verilmiştir.

TUR = gtrends("suriye", geo = "TR", gprop = "web", time = "2004-01-01 2020-02-01")
top<-filter(TUR$related_topics, related_topics=="top")
top<-top[,c(3,1)] %>%  as.tibble() %>% rename(word=value, freq=subject) %>% mutate(freq=as.numeric(freq))

top  %>% mutate(word = fct_reorder(word, freq)) %>% slice(1:10) %>% 
  ggplot( aes(x=word, y=freq)) +
    geom_bar(stat="identity", fill="#f68060", alpha=.6, width=.4) +
    coord_flip() +
    xlab("") +
    ylab("Frekans")+
   theme_economist()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde “Suriye” arama terimine bağlı olarak elde edilen bulgular ilişkili konularla birlikte aşağıdaki grafikte verilmiştir. Elde edilen bulgulara bakıldığında ilişkili top konularda da Suriye 1. sırada olduğu, bunu sırasıyla harita (map) ve savaş (war) izlediği görülmektedir. Diğer top konular ise sırasıyla şöyledir: Suriye savaşı, Irak, Rusya, Iran ve Özgür Suriye Ordusu’dur.

Suriye arama terimine bağlı olarak Türkiye’de yıllara göre arama trendlerinin sayısı aşağıda yazılan kod bloğu ile verilmiştir.

TUR = gtrends("suriye", geo = "TR", gprop = "web", time = "2011-04-29 2020-02-01")[[1]]
tur= TUR  %>% mutate(hits=as.numeric(hits))
ggplot(data = tur, aes(x = date, y = hits, group = geo)) +
  geom_line(size = 1, alpha = 0.7, aes(color = geo), , show.legend = FALSE) +
  geom_point(size = 0) +
  theme(legend.title=element_blank(), axis.title.x = element_blank()) +
  ylab("Hit Sayısı") + 
  xlab("Tarih")+
  ggtitle("Türkiye'de Suriye Arama Terimine Göre Google Trendleri")+
  facet_grid(~geo)+
  theme_hc()

Yukarıdaki R kod bloğunun çalıştırılmasından sonra Suriye arama terimine göre Türkiye’de yıllara göre arama hit sayısı aşağıdaki grafikte verilmiştir.

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

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

Öne çıkan

Metin Madenciliği Üzerine Vaka Çalışmaları: Case Studies on Text Mining

Veri madenciliğinin (data mining) bir kolunu oluşturan metin madenciliği (text mining) metotları, metinlerde en sık kullanılan anahtar kelimeleri vurgulamamıza ve görselleştirmemize olanak tanır. Bu metotlarla metin verisinden metin bulutu, etiket bulutu diyebileceğimiz kelime bulutu oluşturulabilir. Kelime bulutları metni hızlı analiz etmemize ve kelime bulutu olarak ortaya çıkan anahtar kelimeleri görselleştirmemize olanak tanır.

Bahsedilenler ışığında metin verisini sunmada kelime bulutunu kullanmanız gerektiği durumlar şunlardır:

  1. Kelime bulutları sadelik ve yalınlık sağlar. En sık kullanılan anahtar kelimeler, kelime bulutu içinde daha iyi kendini gösterir.
  2. Kelime bulutları potansiyel iletişim araçlarıdır. Kelime bulutlarının anlaşılması, paylaşılması kolaydır ve kelime bulutları etkilidirler.
  3. Kelime bulutları bir tablo verisinden görsel olarak daha ilgi çekicidir.

Kelime bulutları, sektör ayrımı gözetilmeksizin bütün alanlarda kullanılabilmekle birlikte en sık kullanılan alanlarla en sık kullanılan meslek grupları şöyle özetlenebilir;

  1. Kalitatif (nitel) araştırma yapan araştırmacılar,
  2. Müşterilerin ihtiyaçlarının belirlenmesi noktasında pazarlamacılar,
  3. Temel konuları desteklemek için eğitimciler,
  4. Politikacı ve gazeteciler
  5. Kullanıcı görüşlerini toplayan, analiz eden ve paylaşan sosyal medya siteleri

Bugün daha önce R programlama dili kullanarak R Shiny üzerinde geliştirdiğim metin madenciliği (text mining) web uygulamasından bahsedeceğim. İlk olarak sade bir tasarıma sahip geliştirdiğim metin madenciliği uygulamasının 3. versiyonunun linkini vererek işe başlayayım. Aşağıdaki linkten bu uygulamayı açabilirsiniz.

Metin Madenciliği Uygulaması

Uygulama ile boyut, büyüklük ve dil sınırı olmaksızın bütün metinlerin kelime bulutunu oluşturabilirsiniz hem de farklı tasarım varyasyonları ile birlikte. Versiyon 3’te ilave olarak uygulamanın arka planında Türkçe ve ingilizce dillerinde metinden çıkarılacak edat ve bağlaçlarının sayısı artırılarak kullanıcının veri temizleme (data cleaning) işlemi kısaltılmak istenmiştir. Burada adım adım uygulamadan bahsedildikten sonra örnek bir metin üzerinden gidilerek kelime bulutu oluşturulacaktır.

Aşağıda uygulaması ve anlaşılması kolay olabilmesi adına oldukça sade ve fonksiyonel tasarımla geliştirilen uygulamanın ekran görüntüsü verilmiştir. Aşağıdaki uygulama ekran görüntüsünde sol panelde sırasıyla Metni giriniz, Kelime sıklığı, Maksimum kelime sayısı, Renk seçiniz, Kelime bulutu oluştur sekmelerini görüyorsunuz. Sağ panelde ise Kelime Bulutu alanına ve altında uyarı metinlerine yer verilmiştir. Dilerseniz sırasıyla kısaca sol panel alanlarından bahsedelim.

Sol panel sekmeleri

  1. Metni giriniz: Bu alana kopyalanan metin girilmektedir. Yani bu alana kopyala-yapıştır (copy-paste) yapmanız yeterlidir. Metni giriniz sekmesindeki metin kutucuğu sağ alt köşeden genişleyebilmekte ve girdiğiniz metnin tamamını bu sayede daha rahat görebilirsiniz. Bu kutucu metin verisi girildiğinde sağ panelde yer alan “Uyarı 1: Metin alanı boş geçilemez” uyarı metni ortadan kalkacaktır.
  2. Kelime sıklığı: Metni giriniz sekmesinde yer alan kutucuğa metin verisi girildikten sonra sıra kelime sıklıklarını belirlemek gelmektedir. Bu sekmede mouse ile 0’dan büyük olacak şekilde kelime sıklığı belirmememiz gerekir. Aksi takdirde bildiğiniz üzere 🙂 kelime bulutu oluşmaz. Kelime sıklığı 0’dan büyük olduğunda sağ panelde yer alan “Uyarı 2: Kelime sıklığı 0’dan büyük olmalıdır” uyarı metni ortadan kalkacaktır.
  3. Maksimum kelime sayısı: İlk iki sekmelere yani Metni giriniz ve Kelime sıklığı sekmelerine istenen şekilde metin verisi girildikten sonra sıra “Maksimum kelime sayısı” nın belirlenmesine gelmektedir. Maksimum kelime sayısı 0’dan büyük olduğunda sağ panelde yer alan Uyarı 3: Maksimum kelime sayısı 0’dan büyük olmalıdır uyarı metni ortadan kalkacaktır. Böylece Uyarı 3 ile birlikte diğer uyarılar da hep birlikte ortadan kalkacaktır. Buraya anlatılanlar kelime bulutu oluşturulması için yeterlidir. Bu aşamadan sonra Kelime bulutu oluştur butonuna tıklayarak kelime bulutu oluşturabilirsiniz. Oluşturduğunun kelime bulutu sağ panelde Kelime Bulutu başlığı altında yer alacaktır.
  4. Renk seçiniz: Bu sekme daha çok kelime bulutunun tasarımı yani rengi ile ilgili olup, zorunlu değildir. Default (otomatik) olarak belirlenen renk üzerinden doğrudan kelime bulutu elde edilebilir. Ancak çok daha seçenek sunulması ve daha estetik bir görünüm elde edilebilmesi adına bu sekmeyi uygulamaya entegre ettim. Renk ölçeğinin üzerine tıkladıktan sonra ileri-geri ilerleyerek dileğiniz renge göre kelime bulutu elde edebilirsiniz.

Örnek Uygulamalar

a) İngilizce Metinlerde Uygulama

Örnek uygulama kapsamında metin verisi 30.01.2021 tarihinde ücretsiz e-kitapların çeşitli formatlarda yayınlandığı https://www.gutenberg.org/ebooks/50540 adresinden alınmıştır. Metin verisi olarak alınan eserin adı Zeyneb Hanoum tarafından kaleme alınan Bir Türk Kadınının Avrupa İzlenimleri (A Turkish Woman’s European Impressions)‘dır. Eser 23 Kasım 2015 tarihinde https://www.gutenberg.org sitesinde yayınlanmıştır. Bu metin verisi ile yukarıda linki verilen web uygulaması üzerinden kelime bulutları oluşturulacaktır. Aynı zamanda metni word formatında aşağıdaki linkten indirebilirsiniz.

  1. İlk uygulama parametrelerimiz şöyle olsun: Default renk seçeneği ile kelime sıklığı 524, maksimum kelime sayısı ise 83 olsun. Bu durumda kelime bulutumuz aşağıdaki gibi olacaktır. Kelime bulutu uygulaması içerisindeki algoritma kelimeleri random atadığı için aynı kelime düzenini elde edemeyebilirsiniz. Bunu burada belirtmek gerekir. Uygulamada kelime üzerine tıkladığınızda ilgili kelimenin metinde ne kadar sıklıkla kullanıldığını görebilirsiniz.

2. İkinci uygulama parametrelerimiz şöyle olsun: #00FFC4 renk seçeneği ile kelime sıklığı 403, maksimum kelime sayısı ise 50 olsun. Bu durumda kelime bulutumuz aşağıdaki gibi olacaktır.

b) Türkçe Metinlerde Uygulama

Bu kısımda Atatürk’ün Dehâsı, Davranışları ve Çalışma Biçimleri adlı makale analiz edilerek kelime bulutu oluşturulmuştur. Metin 30.01.2021 tarihinde Milli Eğitim Bakanlığı’nın http://meb.gov.tr/ataturk/Makaleler adresinden alınmıştır. Uygulamada kullanılan metin aşağıda verilmiştir.

Dehâ ve dâhi kavramı türlü biçimlerde ele alınmış ve tarif edilmiştr. Bunların başlıcalarını anıyoruz.
a) Doğuştan olağanüstü işler görmek ve eserler yaratmak kabiliyetinde olmak, yani olağanüstü yaratıcı bir dimağ taşımak.
b) Herkesten çok önce anlamak görmek, sezmek, kavramak, duymak ve duygulanmak.
c) Anlaşılması ve anlatılması imkânsız olan doğuştan büyüklük ve ululuk.
d) İnsanlığın gelişmesi sırasında ulaşabileceği en yüksek zirveleri görüp göstermek ve topluluğu oraya götürecek olağanüstü yaradılışta olmak.
e) Bazıları dehâyı uzun bir sabır diye tarif etmişlerdir.
f) Bir akşam sofrada (1926 yazı) dâhinin tarifi yapılır ve herkes bir görüş ortaya atarken, Atatürk şunu demiştir: 'Dâhi odur ki, ileride herkesin takdir ve kabul edeceği şeyleri ilk ortaya koyduğunda herkes onlara delilik der.'
Atatürk'ün taşıdığı vasıflar, bu tariflerin hepsine ayrı ayrı uyar. Onun dehâsının belirtilerini incelersek şunları görürüz. O, olağanüstü seziş, kavrayış ve duyuş hassalarına şu yönleri de eklerdi:
Ortaya çıkması muhtemel konu, sorun ve olayları çok önceden tahmin edip, onlar üzerinde derinden derine dimağını işletir, en kötü ihtimallere kadar her şeyi gözönünde bulundurarak gereken tedbirleri kararlaştırır ve durumun ilerdeki gelişme derecelerine göre bunları kafasında sıralardı. Amaçlarını iyice tesbit ederdi; kafasında hiç dağınıklığa yer vermezdi ve hiç bir olay onu boş bulmazdı.

Yukarıda Çanakkale vuruşmaları sırasında onun bu gibi davranıp ve görüşlerine rastladık. 6 Ağustos 1915 de başlayan İngiliz saldırıları dolayısiyle iki ay önce uyarılmaya çalışmış olduğu Liman von Sanders ve Esat Paşalar için: '... fikren hazırlanmamış oldukları harekât-ı hasmane karşısında pek nakıs tedbirlerle vaziyet-i umumiyeyi ve vatana pek büyük tehlikeye maruz bıraktıklarına vakayı şahit oldu' diye yazmıştır. İmlediğimiz üç kelime Mustafa Kemal'in büyük önem verdiği bir yönü aydınlatmaktadır.
Conkbayırı'nın geri alınması sorunu dolayısiyle O, şunu yazmıştır: 'Muharebede kuvvetten ziyade, kuvveti maksada muvafık sevk ve idare etmek mühim olduğu düşünülmüyordu.'

Yine bu Conkbayırı işinde kendisi üst ve alt makamlardakilerin inançlarına aykırı davranmaya karar vermesini izahı için şunları yazmıştır: 'Bazı kanaatler vardır ki onların hesap ve mantıkla izahı pek güçtür. Bahusus muharebenin kanlı ve ateşli safhasında duyguların tevlit ettiği kanaatler... Bittabi her kanaat ve karar, içinde bulunulan ahval ve şerait tetkik ve bu tetkikat netayicini teferrüs (sezmek) ve takdir sayesinde tevellüt ener.'

Başarı onun dehâsının verdği 'sezme' gücünün sonucudur. Ancak O, bunun da, durumu tetkike ve ona göre karar vermeye bağlı olduğunu açıklamaktadır. Yani doğuştan olan 'seziş' kabiliyetine ek olarak dimağı çalıştırmanın esas olduğunu belirtmektedir.

Atatürk'ün pek çok karar ve davranışları uzun inceleme ve düşüncelerin sonucu olmakla birilikte ani olaylar karşısında çarçabuk en uygun yolu seçmekte büyük kabiliyeti vardı. Arıburnu'nda ve Conkbayır'ındaki davranışları buna örnektir. Atatürk önem verdiği güç ve sıkıcı bir durumu çözdükten sonra rahatlardı ve bu yüzünden belli olurdu. Bu gibi durumlarda 'beynime saplanmış bir çiviyi söküp attım' dediği olmuştur.

Atatürk'ün çalışma tarzının bir önemli yönü de kendine öz bir danışma yolu seçmiş olmasıdır. O, böyle davranmakla hiç geriye doğru adım atmak zorunda kalmadan en şaşılacak devrimleri ve ileriye atılışları gerçekleştirmiştir. Pek çokları sanarlar ki Atatürk gerçekleştireceği devrimlere ve daha genel olarak göreceği önemli işlere birden bire ve kendi başına karar verip onları yürütürdü. Gerçektense onun demin dediğimiz gibi kendine öz bir danışma yolu vardır. Yapmak istediğini önce, bazen işin esasını pek belli etmeden ve nazari bir şey üzerinde konuşuyormuş gibi, sofrada söz konusu ederdi, içki ağızları daha kolay açtığı için leh veya aleyhte söyleyenler olurdu, konuşanların özel düşünce ve inançlarını bildiğinden söylediklerini ona göre değerlendirirdi. Bazı arkadaşlariyle ve halkla temaslarında, köylü ve kentli her türlü iş güç sahipleriyle konuşurken yine pek belli etmeden tasarısının uyandıracağı tepkiler üzerinde bilgi ve duygu edinirdi. Yalnız aldığı karşılıklardan değil, konuştuğu adamın yüzünden ve kımıltılarından da sonuçlar çıkarırdı. Böylelikle tasarladığı devrimin veya herhangi önemli işin nasıl bir tepki göreceğini ne ölçüde kolaylık veya güçlükle karşılaşacağını anlamış olur ve ona göre davranırdı.

Özet olarak; dehâsı onu olağanüstü ve başka kimsenin yüreklenmeyeceği işleri görmeğe iterken O, çok esaslı psikolojik ve sosyal yoklama ve incelemelere girişmeden önemli hiç bir adım atmazdı. Bazen onun en yakınları arasında bile kendi gözleri önünde yapılmış olan bu yoklama ve çalışmaların anlamını sezmediklerinden atılan adımların delice ve tek başına alınmış kararların sonucu olduğunu sananlar bulunurdu. Bunun aksine olarak da onun bu yoklama usullerini bilmeyenler veya anlayacak kabiliyette olmayalar yapılan tartışmalar sırasında kendi savundukları görüşe uygun bir karar uygulanırsa kerameti kendilerinde sanmış ve Atatürk öldükten sonra söz veya yazı ile övüntülerde bulunmuşlardır. Bazen de bu gibi övünmeler büsbütün uydurma olaylar üzerine yapılmıştır.

Atatürk göreceği işin eski deyişle 'eşref saatte' yapılmasına da çok önem verirdi. Ancak onun eşref saatini falcı veya müneccim değil, durumun derinden derine incelenmesinden doğan inanç tesbit ederdi. Yukarda anılan yoklama ve danışmalar da bu anın tesbitinde rolü büyüktü. Elde edilen bir başarıdan azami verimi elde etmesini bildiği gibi nerede durulması gerektiğini de iyice tesbit etmesini bilirdi.

Bu yazdıklarımız bazılarınca Atatürk üzerinde beslenen bir sanıyı da düzeltmeye yarar. Sanılır ki; O, hiç itiraz kabul etmez ve kimse onula tartışmaya yüreklenemez. Bu sanı baştan başa yanlıştır. O, tartışmaların kızışmasını, hele o işten anlayanların ne olursa olsun konuşmalarını, isterdi ve bunu yapmayanlara kızardı, 'bilir, ancak bildiğini ortaya koymaz, ne yapayım böyle adamı' dediği olurdu. Şu kadar var ki tartışmalarda içtenlik şarttı; içten olmayarak ayrıca gizli düşünceler besleyerek, fesat ve tezvir için konuşanlara ise kızardı. Atatürk türlü yoklama ve tartışmalardan sonra bir karara vardı mıydı onu her ne olursa olsun yürütürdü. Uzun tartışmaların bir faydası da görülecek işin uygulanmasiyle görevlendirilecek olanların onun bütün yönlerine nüfuz etmelerini sağlamaktı. Atatürk buna çok önem verirdi. Tartışmalar ayna zamanda kararlaştırılan işe bir çok yanıt sağlamaya da yarardı. Ondaki azim ve irade de olağanüstü idi. Yenemeyeceği hiç bir güçlük, deviremiyeceği hiç bir engel yoktu. Her engeli sabır, tedbir veya zor ile yenerdi. Sakarya vuruşmasiyle Ağustos 1922 deki son büyük saldırı arasındaki süre içinde Mecliste pek çok ve acı tenkitlere uğramış, parasızlık ve türlü imkânsızlıklar yüzünden ordunun artık ayakta tutulamayacağı söyleniledurmuştu. O sıralarda Meclisin bir kapalı oturumunda, şunları söylemiş olduğu dışarda duyulmuştu: 'Para var ordu var, para yok ordu yok. Ben böyle şey bilmen para olsa da olmasa da. ordu olacaktır.'
1919'daki yıkımlı durumdan 1922 parlak zaferini çıkaran etkenlerin başında Türk azim ve iradesini temsil eden Atatürk'ün bu azmi ve iradesi bulunmaktadır.

Atatürk'ün çalışma ve yorgunluğa dayanıma kabiliyeti de olağanüstü idi. Sakarya vuruşmasında üç kaburga kemiği kırık olarak bir koltuğa mıhlanmış ve hemen hiç uyumadan yirmi iki gün yirmi iki gece vuruşmayı yöneltmiştir. 1927 de okuduğu büyük Nutuk'u hazırlarken de dosyalar içinde aylarca sabahladığı olmuştur.

Yukarda yazdıklarımız O'nun çok hesaplı oluğunu gösterir. Boş gösterişden ve övünmelerden , cafcadatan hiç hoşlanmazdı, ancak kesin lüzum görürse lüzumsuz sanılabilecek kahramanlıklarda bulunurdu.
Bu gibi duyguları dolayısiyledir ki yukarda anılan 'Vatan ve Hürriyet' Cemiyeti kurulurken ölmekten bahsedenlere, amacın ölmek değil yaşamak ve yaşatmak olduğunu söylemişti.

Ankara'da daha çok, ilk devirlerde, henüz nüfuzu pek kökleşmemiş iken tasarladığı bazı işleri bir takım tartışmalar sonucunda başka birine, o kimseyi tasarının kendi öz düşüncesi olduğuna içten inandırarak ileri sürdürürdü ve kendisi gerekirse onu desteklemekle yetinirdi. Bazen de tasarladıklarını onlara karşın olan birine önertmeği şaşılacak biçimde becerirdi. Bir takım devlet adamları vardır ki karar verirken yurttan önce o işte kendi çıkarlarını düşünür ve ona göre bir yol tutarlar. Bu yüzden çok kere isabetsiz bir yola girilir ve bunun sonucunda, kendini zeki sanan açık göz devlet adamı da, yurt işlerinin kötü gidişinden manen ve maddeten zarar görür. Atatürk kesin olarak bu gibi küçüklüklerin üstünde kalmış ve daima yurt için ve güdülen dâva için en gerekli yolu tutmuştur. Bunun sonucunda da kendi mevkii yurdunki gibi daima ve adeta otomatik biçimde yüksele durmuştur. Bu yön başka bir biçimde ifade edilmek istenilirse denilebilir ki: Atatürk daima kendi çıkarını yurt ve ulusun çıkariyle birleştirmeyi ve birlikte yürütmeyi bilmiştir.

Gerçek dâhi eğer dâvasını içtenlikle benimsemişse diktatör olmaya muhtaç değildir, çünkü bir dâhi doğru yolu göstermek ve onun doğruluğuna inandırmak gücünü kendinde görmeli ve bulmalıdır. Atatürk'ün yanında bulunmuş ve çalışmış olanlar aylar ve yıllar boyunca onunla tartıştıktan sonra sonuçta onun düşüncelerinin daima yerinde ve yararlı olduğunu göre göre onun en isabetli yolu seçeceğine o derece inanmışlardır ki her şeyde ona uymayı gerekli bilmişlerdir. Dolaysiyle eğer Atatürk'e diktatör denilecekse bu, onun üstün görüş ve anlayışına olan inançtan doğan uysallığın doğurduğu diktatörlük sayılmalıdır. Olayların daima kendisini haklı çıkarmasından ona karşı doğmuş olan güvene, onun pek büyük olan inandırma kuvvet ve kabiliyetinin de yanındakiler üzerindeki etkisini eklemek gerekir. Ancak şu yönü de belirtmeliyiz: Atatürk yalnız bir konuda genel serbest tartışmaya izin vermemiştir. O da dinin riyakarane sömürülmesi konusudur. Bir tedbirin yurt ve ulusun yarar veya zararına olduğu konusu üzerinde tartışılırken herhangi bir kimse veya parti bunu bilim, siyasal, hukuk ve saire bakımından inceleyeceğime o yönleri bırakıp halka açıkça veya el altından 'bu yapılırsa cehennemde cayır cayır yanarsın' cinsinden telkinlerde bulunursa bu gibileriyle akıl ve mantık yolundan giderek tartışarak hak kazanmak doğal olarak ka'bil olamazdı. Buna göz yumulunca da Türkiye devletini Osmanlı'nın uğradığı yıkımdan kurtarmanın imkânı kalmazdı. Bir zamanlar basımevleri, modern bilimler, yeniçerilere yeni silâhların gerektirdiği talimler şeriate aykırı gösterilmiş ve baştakilerle halk cehennem azabiyle korkutularak bu yenilikler yüzyıllar boyunca Osmanlı ülkesine sokulmamıştı. Bu yüzden de XVI ncı yüzyılın en güçlü devleti her bakımdan geri bırakılıp git gide sönmüş ve bir hiç olmuştu.
Atatürk'ün diktatörlüğü ancak ve ancak bu yönde kendini göstermiş ve tek parti usûlü, filî bakımdan, ancak ve ancak bu yüzden kurulup yaşamıştır.
İlerde göreceğimiz gibi Kâzım Karabekir'in ve daha sonra Fethi Okyar'ın başkanlık ettikleri partiler, baştakiler istemeseler bile, hep bu gibi dini dünya işlerinde gericilik uğrunda kullananların desteğine mazhar oldukları için kapanmışlardır.

Birinci Büyülk Millet Meclisi'nde O'nun ne kadar çetin saldırılarla karşılaştığı ve en 'parlamanter' bir başbakan gibi uğraşmak zorunda kaldığı düşünülürse dünya ve devlet işleri 'ahiret' tehdidi altında görülmeye kalkışılmadıkça O'nun hiç bir muhalefetten çekinmeyeceğini anlarlar.

Atatürk hem doğuştan, hem de çok akıllı ve hesaplı olduğundan doğru ve vefalı olmaya, kimseyi aldatmamaya, özet olarak güven sağlamaya büyük önen verirdi. Aksini ileri sürenler ve ondan vefasızlık gördüklerini söyleyenler, bunu ya düşmanlıklarından yaparlar veya Atatürk'ün görerek edindiği uyarılarını anlayamamış, yahut da onlara önem verip aldırmamış olduklarından böyle bir sonuçla karşılaşmışlardır. Buna karşılık Atatürk kendisini bile bile aldatmış olanları mimler ve bir daha onlara güvenmezdi. Ancak taşıdığı yüksek duyguları, meselâ ölümünden az önce, yüzellilikleri affettirmekle göstermiştir. Biliyordu ki kendisinden sonra kimse bu işe yüreklenemezdi ve onbeş yıllık sürgünü yeter bulmuştu.

Atatürk mahiyetindekilerin sorumlu oldukları işlere karışmaktan ve ayrıntılarla uğraşmaktan sakınır, bazen bunu yapsa da dostçasına yapardı, 'işi mesulüne bırakalım' sözünü kendisinden çok işittim. Keza bir bakan onunla danışırsa düşüncesini söylemekle birlikte 'ben böyle düşünüyorum amma işin sorumlusu sensin, ona göre düşün, taşın ve karar ver' derdi.
Ancak çok önemli işlerde ve anlarda bütün ayrıntılara bile el koyduğu ve hemen her şeyi kendisi yaptığı görülmüştür. Conkbayır'ı geri alırken veya 1922 Ağustos'unda başlayan büyük saldırıyı yöneltirken böyle yapmıştır. Bunu yaparken de başarının şerefini yine mahiyetine bırakacak biçimde davranmak büyüklüğünü göstermiştir. Bu gibi durumlar dışında genel bakımdan işlere karışmayı sevmez ve herhangi bir (kolda işler iyi gitmezse bazen dediği gibi 'baştakini değiştirmekle' yetinirdi. Hemen bütün yeni çığırlara onun 'inisiyatif'i ile girilmiş olmakla birlikte o yeni bir işi yoluna koyduktan sonra onun devam ettirilmesini bir ehline bırakmayı görenek edinmişti ve bunu yapınca içi rahat ederdi.

Genel olarak O, başka birinin görebileceği bir işi kendi üzerine almaz veya üzerinde tutmazdı. Pek çok iktidar sahibinde görülen ve onları yanlış yollara iten bir zaaf Atatürk'de yoktu. Birisi aleyhinde bir söz söylenildi miydi
onu söyleyen ne kadar yakını ve güvendiği biri olursa olsun ona inanmadan önce işi yansız bildiği bir veya bir kaç kişiye inceletir, ondan sonra bir karara varırdı. Eğer söyleyen ve aleyhinde söylenilen kimselerin ikisi de yakını ise onları yüzleştirir ve edindiği duygulara göre bir inanca varırdı. Bu yüzden Atatürk'ün yanında iftira ve tevzir makinesi işleyemezdi.

Atatürk sevmek, sevilmek, gönül almak konularında çok duygulu idi; neşeli olmak ve yanındakilerde neşeli kılmak ve görmek onun için adeta bir ihtiyaçtı. Şahsi cazibesi de bu işte kendisine çok yardım ederdi. Eğlence âlemlerini çok sevdiği bilinen bir yöndür, ancak yukarda yazdıklarımızdan anlaşılacağı gibi sofrası yalnız eğlenceye ayrılmış olmayıp orada çağırılmış olanların seviyesine göre siyasal, yönetimsel ve bilimsel pek çok konular ele alınır. Onun en önem verdiği yönlerden biri de her bir başarıyı, her bir büyük işi kendine değil Türk ulusuna mal etmekti. Her ne yapmışsa 'Türk ulusundan, aldığı ilhamla' yaptığını söylemekten zevk alırdı ve yukarda anlattığımız yoklama ve danışımı usulleri bu sözünü doğrulayacak özdeydi. 'Atatürk İnkılâpları' denilmesini de istemezdi ve bu gibi sözleri hep 'Türk İnkılâpları' biçiminde düzeltirdi.

Atatürk'ün önemli bir özelliği de yaşayışının hiç bir kısmının gizli kalmasını istememesidir. Açıkça içer ve açıkça her türlü eğlencelere dalardı. Doğuştan açıklığı sevmekte olmasından (başka bu yolu tutmasının iki etkeni vardı:
1) gizlilik onun eğlencelerine katılanlardan veya onları bilenlerden bu konular üzerinde kimseye bir şey söylememelerini istemeye varırdı ki bu Atatürk'ün bir nevi minnet altına girmesi demekti. O ise hiç bir minneti kabul edecek huyda değildi.
2) O, şu inançta idi ki, açıklık aleyhteki propagandaları etkisiz bırakmak için en iyi çaredir. Eğer halk kendisini içerken görürse ondan sonra düşman propagandacılar ona ayyaş deseler halk 'onu biliyoruz gördük başka yeni bir şey söyle' karşılığında bulunur ve propaganda suya düşer. Devlet sırlarını saklama bakımından da kendine öz bir yolu vardı. Sofrasında her şey kondurduğundan yabancı casuslar sofra da bulunmuş konuklarının, meselâ dönüşte şoförler duyacak biçim de aralarında konuşmaları veya sofracı ve türlü hizmetçilerin gevezeliği sayesinde her şeyden hiç olmazsa dolayısiyle, yarım yamalak da olsa az çok haber aldıklarını sanar ve edindikleri türlü ip uçlarına derinleştirmekle yetinirlerdi. Halbuki gerçek sırrın pek az olduğuna inanan Atatürk onlar üzerinde en yakın ilgililer dışında hiç kimse ile konuşmaz, bazen aksini sandıracak konuşmalar yapar ve haberler yayarak casusları gafil avlardı. 1922 Ağustos'undaki büyük saldırı, 1926'daki Bozkurt vapurunun batması dolayısiyle La Hay'de görülen dâva için Adliye Vekili Mahmut Esat (Bozkurt)'a verilen yönergelerden kimsenin bir şey sezememesi bunun örneklerindendir.

Özet olarak diyeceğiz ki; Atatürk Samsun'a çıktığı andan itibaren Türk ulusunun gerçek önderi olmuştur. Artık dilediği gibi çalışmak ve Türklüğün kurtuluş işini bir baş olarak ele almak imkânına sahiptir. Artık uzun tartışmalar sonucunda kile olsa her önemli işte son söz onun olacaktır. Gerçi bir çok birbirine zıt unsurlarla anlaşmak, onları gidilmesi gereken doğru yolun hangisi olduğuna inandırmak için epey uğraşmak gerekecektir. Ancak O'nun bu yoldaki uğraşları önderliği esas bakımdan kabul edilmiş bir kimsenin çabalarıdır; dolayısiyle de, daha önce olduğu gibi anlayışsız, kavrayışsız veya ürkek üstlere gerçek kurtuluş yollunu tutturmak için yapılması gereken uğraşlardan daha kolay ve daha az üzücüdür.
O'nun hem askerlik hem de siyasal bakımından isabetli bir görüşe sahip olduğu genel savaş sırasındaki başarı ve zaferlerinden, yine o sırada ve daha önce İttihat ve Terakki ile Hükümete gerçek durumu ve doğru yolu göstermek için yaptığı uğraşlardan anlaşılmıştır; aydınların pek çoğu ve hatta kısmen de halk kütleleri bunu bilmektedirler.
O, elinde bu kozlar olarak işe koyulacaktır.

1. İlk uygulama parametrelerimiz şöyle olsun: #00FF99 renk seçeneği ile maksimum kelime sıklığı 1000, maksimum kelime sayısı ise 100 olsun. Bu durumda kelime bulutumuz aşağıdaki gibi olacaktır.

2. İlk uygulama parametrelerimiz şöyle olsun: #00FFCC renk seçeneği ile maksimum kelime sıklığı 500, maksimum kelime sayısı ise 500 olsun. Bu durumda kelime bulutumuz aşağıdaki gibi olacaktır.

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

Bilimle ve teknolojiyle kalınız.

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

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

Yararlanılan Kaynaklar

Ö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

Öne çıkan

Küçük ve Orta Ölçekli İşletme (KOBİ) İstatistikleri

Küçük ve Orta Ölçekli İşletmelerin (KOBİ) ülke ekonomisindeki payına dikkat çekmek ve KOBİ’lere ilişkin verilerin tek bir bülten altında derleyerek erişilmesini kolaylaştırmak amacıyla hazırlanan “Türkiye’nin KOBİ’leri Bülteni” Türkiye Odalar ve Borsalar Birliği (TOBB) tarafından 26 Aralık 2020 tarihinde yayımlanmıştır. Bu çalışma kapsamında Türkiye’nin KOBİ’leri Bülteni’ne geçmeden önce KOBİ ve KOBİ kategori tanımlarının verilmesi konu hakkında temel bir farkındalık oluşturulması açısından faydalı olacağı düşünülmektedir. KOBİ ve KOBİ kategori tanımlarına yer verildikten sonra adı geçen bülten içerisinde yer verilen istatistiklerden öne çıkanlar ele alınmıştır.

KOBİ, 250 kişiden az çalışan istihdam eden ve yıllık net satış hasılatı ya da mali bilançosu 125 milyon lirayı aşmayan ve yönetmelikte mikro işletme, küçük işletme ve orta büyüklükteki işletme olarak sınıflandırılan ekonomik birimlerdir. KOBİ’ler üç kategoride sınıflandırılmaktadır.

  • Mikro işletme: 10 kişiden az çalışan istihdam eden ve yıllık net satış hasılatı veya mali bilançosundan biri 3 milyon lirayı aşmayan işletmelerdir.
  • Küçük işletme: 50 kişiden az çalışan istihdam eden ve yıllık net satış hasılatı veya mali bilançosundan biri 25 milyon lirayı aşmayan işletmelerdir.
  • Orta büyüklükteki işletme: 250 kişiden az çalışan istihdam eden ve yıllık net satış hasılatı veya mali bilançosundan biri 125 milyon lirayı aşmayan işletmelerdir.

Türkiye’nin KOBİ’leri Bülteni’nde yer alan istatistikler kapsamında 1-9 çalışanı olan şirketler mikro, 10-49 çalışanı olan şirketler küçük, 50-249 çalışanı olan şirketler orta ve 250 ve üzeri çalışanı olan şirketler büyük ölçekli şirket olarak değerlendirilmiştir. Adı geçen bültene göre öne çıkan bulgular şöyledir:

  • Türkiye genelinde 2019 yılında toplam girişim sayısı 3 milyon 228 bin olurken, KOBİ’lerde girişim sayısı 3 milyon 223 bin olmuştur. KOBİ’ler toplam girişimlerin %99,8’ini oluşturmaktadır. Türkiye genelinde ve KOBİ ölçeğinde girişim sayısı 2018 yılına göre %2,2 artış göstermiştir.
  • KOBİ’lerde girişimler sektörlere göre incelendiğinde, faal olan girişimlerin en çok “toptan ve perakende ticaret; motorlu kara taşıtlarının ve motosikletlerin onarımı” sektöründe faaliyet gösterdiği görülmektedir. 2019 yılında sektör Türkiye’deki KOBİ girişimlerinin %36,3’ünü oluştururken, geçen yıla göre sektörün payı %2,5 artmıştır.
  • KOBİ’lerde istihdam 2019 yılında bir önceki yıla göre %13,3 azalarak 11 milyon 548 bine gerilemiştir. Türkiye genelinde istihdam ise aynı dönemde %3,1 azalarak 15 milyon 657 bin kişi olarak gerçekleşmiştir. 2019 yılında KOBİ’ler toplam istihdamın %73,8’ini oluşturmuştur. KOBİ’lerde istihdamın en yüksek olduğu sektör “toptan ve perakende ticaret; motorlu kara taşıtlarının ve motosikletlerin onarımı” sektörüdür. 2019 yılında KOBİ’lerin sektördeki istihdam payının %27,5 olduğu görülmektedir. Sektörde çalışan sayısı ise geçen yıla göre %7 azalmıştır. Toptan ve perakende ticaret; motorlu kara taşıtlarının ve motosikletlerin onarımı sektörünü; %23,1 ile imalat, %10,5 ile inşaat sektörleri takip etmiştir.
  • Türkiye genelinde 2019 yılında personel maliyeti 697 milyar TL olurken, KOBİ’lerin personel maliyeti 385 milyar TL olmuştur. KOBİ’lerde personel maliyeti 2018 yılına göre %16,5 oranında artış göstermiştir. KOBİ’lerde personel maliyeti sektörlere göre incelendiğinde, “imalat” ve “toptan ve perakende ticaret; motorlu kara taşıtlarının ve motosikletlerin onarımı” sektörleri personel maliyetlerinin en yüksek olduğu sektörler olarak öne çıkmaktadır.
  • 2019 yılında Türkiye’deki işletmelerin yıllık cirosu 8.941 milyar TL olurken, toplam cironun yüzde 64,5’ini oluşturan KOBİ’lerin toplam yıllık cirosu 5.766 milyar TL olmuştur. KOBİ’lerde 2019 yılı cirosu bir önceki yıla göre %14,5 oranında artarken Türkiye geneli işletmelerin yıllık cirosu %14,3 artmıştır. KOBİ’lerin toplam cirosu içerisindeki en yüksek payı %53,6 ile “toptan ve perakende ticaret; motorlu kara taşıtlarının ve motosikletlerin onarımı” sektörü oluşturmaktadır. Sektörün yıllık toplam cirosu 2018 yılına göre %17,9 artmıştır. Sektörü, 1.088 milyar TL ciroyla imalat sektörü takip etmiştir. İmalat sektöründe faaliyet gösteren KOBİ’lerin toplam cirosu geçen yıla göre %12,5 artmıştır.
  • 2019 yılında Türkiye’de faaliyet gösteren firmaların toplam üretim değeri 5.306 milyar TL olurken, KOBİ ölçeğindeki firmaların toplam üretim değeri 2.921 milyar TL olmuştur. KOBİ’ler, Türkiye geneli toplam üretim değerinin %55,1’ini oluşturmaktadır. Türkiye genelinde üretim değeri 2018 yılına göre %12,2 artarken, KOBİ’lerin üretim değeri aynı dönemde %9,9 artış göstermiştir. KOBİ’lerde girişim sayısı başına düşen üretim değeri, 2009 yılında 235 bin TL iken pozitif eğilim göstererek 2019 yılında 906 bin TL seviyesine kadar yükselmiştir. Ancak Türkiye geneli girişim sayısı başına düşen üretim değeri ile kıyaslandığında KOBİ ve toplam girişim sayısına başına düşen üretim değeri arasındaki fark son yıllarda belirgin şekilde artmıştır.
  • KOBİ’lerde üretim değeri en fazla olan sektörün 993 milyar TL üretim değeriyle “imalat” sektörü olduğu görülmektedir. İmalat sektöründe faaliyet gösteren KOBİ’lerin üretim değeri 2018 yılına göre %11,4 artmıştır. İmalat sektörünü 440 milyar TL üretim değeriyle “toptan ve perakende ticaret; motorlu kara taşıtlarının ve motosikletlerin onarımı” sektörü takip etmiştir. Sektörde yer alan KOBİ’lerin üretim değeri geçen yıla göre %14,5 artış göstermiştir.
  • 2019 yılında ihracat yapan 84 bin girişimin yüzde 60,8’i mikro ölçekli, yüzde 27,1’i küçük ölçekli ve yüzde 9,5’i orta ölçekli şirketlerden oluşmaktadır. 2019 yılında Türkiye genelinde toplam ihracatın yüzde 43,7’sini (79 milyar $) büyük ölçekli şirketler gerçekleştirmiştir. Mikro ölçekli şirketlerin ihracat değeri 34,8 milyar $, küçük ölçekli şirketlerin değeri 34 milyar $ olmuştur. Orta ölçekli şirketler ise en düşük pay ile ihracatın yüzde 18,2’sini (32,9 milyar $) gerçekleştirmiştir.
  • KOBİ’lerde girişim sayısı başına düşen ihracat değeri, 2018 yılında 1 milyon 298 bin $ olurken, 2019 yılında 1 milyon 241 bin $ seviyesine gerilemiştir. Benzer düşüş eğilimi Türkiye genelinde de görülmektedir.
  • 2019 yılında KOBİ’ler ihracatın yüzde 56,3’ünü gerçekleştirmişlerdir. KOBİ’lerde toplam ihracat değeri 101,8 milyar $ olmuştur. 2018 yılından 2019 yılına KOBİ’lerin ihracattan aldığı pay 0,6 puan artış göstermiştir. Aynı dönemde ihracat 5 milyar $ artmıştır. 2019 yılında KOBİ’lerde ihracatın yüzde 64,5’i ticaret sektöründe, yüzde 31,3’ü sanayi sektöründe ve yüzde 4,2’si diğer sektörlerde faaliyet gösteren firmalar tarafından yapılmıştır. Son 6 yılda ticaret sektöründeki KOBİ’lerin ihracattaki payında artış eğilimi görülmektedir.
  • 2019 yılında Türkiye genelinde toplam ithalatın 62,3’ünü (130,9 milyar $) büyük ölçekli şirketler gerçekleştirmiştir. Orta ölçekli şirketlerin ithalat değeri 32,9 milyar $, küçük ölçekli şirketlerin ithalat değeri 25,4 milyar $ olmuştur. Mikro ölçekli şirketler ise en düşük pay ile ithalatın %10,2’sini (21,4 milyar $) gerçekleştirmiştir.
  • 2019 yılında KOBİ’ler ithalatın yüzde 37,7’sini gerçekleştirmişlerdir. KOBİ’lerde toplam ithalat değeri 79,3 milyar $ olmuştur. 2018 yılından 2019 yılına KOBİ’lerin ithalattan aldığı pay 0,6 puan artış göstermiştir. Aynı dönemde ithalat 4,3 milyar $ azalmıştır.
  • 2019 yılında KOBİ’lerde ithalatın yüzde 61,2’si ticaret sektöründe, yüzde 27,6’sı sanayi sektöründe ve yüzde 11,1’i diğer sektörlerde faaliyet gösteren firmalar tarafından yapılmıştır. Son 6 yılda sanayi sektöründeki KOBİ’lerin ithalattaki payında azalış, diğer sektörlerdeyse artış görülmektedir.
  • 2019 yılında sanayi sektöründe KOBİ’lerin toplam ithalattan aldığı pay yüzde 19,5 ve KOBİ’lerin toplam ithalatı 21,9 milyar $ olmuştur. Son bir yılda sanayi sektöründe KOBİ’lerin ithalatı 1,7 milyar $ azalmıştır.
  • 2019 yılında orta ölçekli şirketlerin toplam nakdi kredi tutarı 242,2 milyar TL, küçük ölçekli şirketlerin nakdi kredi tutarı 193 milyar TL ve mikro ölçekli şirketlerin toplam nakdi kredi tutarı 180,2 milyar TL’dir. Böylelikle KOBİ’lerin toplam nakdi kredi tutarı 615,4 milyar TL olmuştur. Orta ölçekli şirketlerin nakdi kredi tutarı, KOBİ niteliğindeki şirketlerin toplam nakdi kredi tutarı içinde yüzde 39,4 ile en yüksek paya sahiptir. 2019 yılında mikro ölçek niteliğindeki 2,6 milyon, küçük ölçek niteliğindeki 417 bin ve orta ölçek niteliğindeki 127 bin şirket nakdi kredi kullanmıştır.
  • 2019 yılında internet erişimine sahip olan girişimlerin oranı küçük ölçekli işletmelerde yüzde 94,2, orta ölçekli işletmelerde ise yüzde 97,8’dir. Girişimlerin internet bağlantı tipleri olan geniş bant bağlantı, sabit geniş bant bağlantı ve mobil geniş bant bağlantı kullanım oranları küçük ölçekli işletmeler için sırasıyla yüzde 94,1, 92,2 ve 68,7; orta ölçekli işletmelerde ise sırasıyla yüzde 98,7, 98,5 ve 77,6’dır. 2019 yılında kendi web sitesi ya da uygulaması üzerinden sipariş alan girişimlerin oranı küçük ölçekli işletmeler için yüzde 74,4; orta ölçekli işletmeler için yüzde 85,6’dır. Farklı girişimlerin satış yapabildiği online mağazalar ve pazar yerleri ile mobil uygulamalar üzerinden sipariş alan girişimlerin oranı küçük ölçekli işletmeler için yüzde 56,6; orta ölçekli işletmeler için yüzde 52,2’dir.

Öne çıkan bulgulardan KOBİ’lerin oranının toplam girişimler içerisinde oranının neredeyse %100’e yakın olması son yıllarda bilinen ve süregelen bir gerçektir. KOBİ’lerin ekonomiler içerisindeki üretken gücü ve istihdam katma değeri sadece ülkemizde değil aynı zamanda dünyada da önemli bir yere sahiptir. Ancak KOBİ’leri değerlendirirken sınıflandırma kategorilerinin toplam girişimler içerisindeki oranı daha da kritik bir rol oynamaktadır özellikle bizim gibi gelişmekte olan ülke ekonomileri için. Türkiye’de KOBİ’lerin oranının %99,8 düzeyinde olması, diğer taraftan 250 ve üzeri çalışanı olan büyük ölçekli işletmelerin oranının aslında %100 -%99,2=%0,08 düzeyinde olduğunu göstermektedir. Yani ortaya çıkan sonuç basit matematikle ifade edilecek olursa Türkiye’de büyük ölçekli işletmelerin oranı sadece 10 binde 8’dir. Daha da bu sonucu açıklayıcı hale getirirsek her 10 bin firmadan 8’inin ancak büyük ölçekli işletme olduğunu söyleriz. Bu durum rekabetçi olmayı ve ölçek ekonomilerinden yararlanmayı amaç edinen veya edinecek ülke ekonomileri için arzu edilen ve istenen bir durum değildir. Elbette bu durumun nedenleri arasında iç ve dış kaynaklı yatırım ortamını olumsuz etkileyen pek çok faktör bulunmaktadır. Diğer taraftan 2019 yılında KOBİ sayısının 2018 yılına göre artış %2,2’lik bir artış göstermesi elbette sevindiricidir. Ancak bu artışın hangi KOBİ sınıfından ve hangi sektörden geldiği daha da önemlidir. Bununla birlikte belirlenen sınıftaki KOBİ’lerin teknoloji düzeyi de ayrı bir önem arz etmektedir. Diğer bir ifadeyle KOBİ’lerde sayısal çoğunluktan ziyade nitelikli çoğunluğa önem vermek zorundayız eğer ülke ekonomisini daha stabil ve daha üretken ve daha rekabetçi hale getirmek istiyorsak. Bunu da ancak yenilikçi ve kritik teknolojilerin firmalar tarafından benimsenmesi ve benimsetilmesine bağlıdır. Tabi burada ülkemizde KOBİ’lerin oranın bu denli yüksek olması ve ortak çalışma ve birlikte büyüme algısının düşük olması aynı zamanda sosyolojik de bir problem olduğu algısını bende oluşturmaktadır. Örneğin, en azından benim bildiğim ve kültürel olarak kodlarımıza işlemiş bir söylemi ifade edeyim, o da “Ortak atın beli kırık olur.” atasözü. Bu tür söylemlerde paradigma değişikliği oluşturmak şart eğer birlikte çalışmak ve büyümek istiyorsak. Bu noktada firmalara ve girişimcilere modern yönetim teorilerinden biri olan popülasyon ekolojisi yaklaşımının faydalı olabileceğini düşünüyorum.

Son yıllarda bahsedilen bu noktalarda gerek Türkiye’nin sanayi devrimi de olarak bilinen Milli Teknoloji Hamlesi gerekse kalkınma planlarında yer verilen kritik teknolojiler, savunma sanayinde gerçekleştirilen atılımlar ülkemiz adına onur ve gurur verici adımlardır. Ancak görülüyor ki daha fazlasına, daha fazla çalışmaya ve her zamankinden daha fazla verimliliğe ve veriye dayalı politika geliştirmeye odaklanmalıyız. Burada bulguların sadece bir kesiti üzerinden yorumlarda bulundum. Elbette, yorumlanmayan diğer bulgular da farklı bakış açılarından ele alınabilir.

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

Bilimle ve teknolojiyle kalınız.

Yararlanılan Kaynak

Öne çıkan

Verinin Standartlaştırılması Üzerine Vaka Çalışmaları: Case Studies on Standardization of Data

Veri bilimciler ve veri mühendisleri çok değişkenli istatistiksel analizler üzerinde yoğun bir ş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 standardize 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 standardize 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 istatistiksel 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 metotları uygulanabilmektedir. Örneğin analize geçmeden önce veri aşırı pozitif çarpıksa log dönüşümünün yaygın kullanıldığı görülmektedir . 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öntemlerini uygulamalı örnekler üzerinden adım adım irdelemektir. Literatü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

library<-c("dplyr","tibble","tidyr","ggplot2","formattable","readr","readxl","ggpubr","formattable", "ggstance","scales", "rmarkdown", "knitr","writexl", "kableExtra")
loading<-sapply(library, require, character.only = TRUE)
loading

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) %>% formattable() #ilk 10 gözlem

Tanımlayıcı istatistikler

summary(veri)
       x        
 Min.   :18.51  
 1st Qu.:23.71  
 Median :28.98  
 Mean   :29.13  
 3rd Qu.:34.30  
 Max.   :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= (x-xort)/sd. Bu işlem Microsoft Excel’de =STANDARTLAŞTIRMA (x, ortalama, standart_sapma) fonksiyonu ile de yapılmaktadır. Bu ve buna benzer fonksiyonlar bilinmese de diğer yöntemler gibi formülleri kolayca Excel ortamında uygulanabilir. Diğer bir ifadeyle, bahsedilecek diğer standartlaştırma yöntemlerinin de Microsoft Excel ortamında yapılması gayet kolay ve mümkündür. Bunu R programlama dili bilmeyenler için özellikle ifade etmek gerekir. Burada R programlama dilinin bu konu alanında Microsoft Excel’e göre üstün yanı yüksek gözlem sayısına sahip veri setlerinde ortaya çıkmaktadır. R ve diğer açık kaynak programlama dilleri büyük veri setleri üzerinde çalışılması açısından Microsoft Excel gibi paket programlara göre daha esnek, daha hızlı ve gelişmiştir.

tibble(bki=veri$x, bki_zskor=scale(veri$x)) %>% head(10) %>% formattable() #ilk 10 gözlem

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) %>% formattable() #ilk 10 gözlem

Dağılım Aralığı (-1;+1) Olacak şekilde Standartlaştırma

(x-(xmak+xmin)/2)/(xmak-xmin)/2 eşitliği ile hesaplanır.

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=m/x) %>% head(10) %>% formattable() #ilk 10 gözlem

En Büyük Değer 1 Olacak şekilde Standartlaştırma

x/xmax eşitliği ile hesaplanır.

tibble(mak1=veri$x/max(veri$x)) %>% head(10) %>% formattable() #ilk 10 gözlem

Aritmetik Ortalama 1 Olacak şekilde Standartlaştırma

x/xort eşitliği ile hesaplanır.

tibble(a1=veri$x/mean(veri$x)) %>% head(10) %>% formattable() #ilk 10 gözlem

Dağılım Aralığı (0;+1) Olacak şekilde Standartlaştırma

(x-xmin)/ (xmak-xmin) eşitliği ile hesaplanır. Dağılım aralığı= Mak-Min.

tibble(dsifir_bir=(veri$x-min(veri$x))/(max(veri$x)-min(veri$x))) %>% head(10) %>% formattable() #ilk 10 gözlem

Standart Sapması 1 Olacak şekilde Standartlaştırma

x/xsd eşitliği ile hesaplanır.

tibble(sd_1=veri$x/sd(veri$x)) %>% head(10) %>% formattable() #ilk 10 gözlem

Özet: 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)) 

#ilk 10 gözlem

tum %>% head(10) %>% formattable()

Sonuçların Microsoft Excel Kitabına Yazdırılması

write_xlsx(tum, "tum_sonuclar.xlsx")

Yukarıdaki kod bloğunun çalıştırılmasından sonra sonuçlar Microsoft Excel uzantılı (xlsx) çalışma kitabına yazdırılmış olup, aşağıdaki linkten sonuçları indirebilirsiniz.

Sonuç

Yapılan uygulamalı çalışmayla verinin standartlaştırılması konusu özelinde farkındalık oluşturulması amaçlanmıştır.

Faydalı olması dileğiyle.

Yararlanılan Kaynaklar

Öne çıkan

Türkiye’nin İmalat Sanayi Teknoloji Düzeyi

Türkiye İstatistik Kurumu (TÜİK) tarafından 8 Eylül 2020 tarihinde Girişimcilik ve İş Demografisi istatistikleri yayınlanmıştır. İş Demografisi, temel yöntem ve yaklaşımları Avrupa Birliği İstatistik Ofisi (EUROSTAT) ve OECD tarafından belirlenmiş ve bu yönüyle de uluslararası karşılaştırılabilirliği olan bir çalışmadır. İş Demografisi göstergeleri, “Girişimcilik” konseptinin önemli bir bölümünü oluşturmaktadır. Temel veri kaynağı, Gelir İdaresi Başkanlığı (GİB) sicil tabloları ile yıllık ve dönemlik beyannameleridir. Sosyal Güvenlik Kurumu (SGK) verileri de sistemin diğer önemli kaynağını oluşturmaktadır. Girişimcilik ve İş Demografisi çalışması temel olarak aktif girişimlere ilişkin doğum, ölüm, hayatta kalma ve büyüme dinamiklerini ölçmeyi amaçlamaktadır. Bu çalışma kapsamında ise Girişimcilik ve İş Demografisi istatistiklerinden yıllara göre doğan firmaların teknoloji düzeyi ele alınmıştır.

Adı geçen istatistiklerden ortaya konulan bulgulardan ilki imalat sanayinde doğan girişimlerin sayıları olup, teknoloji düzeyine göre Şekil 1’de verilmiştir. Şekil 1’e göre öne çıkan bulgular şöyledir:

  • Yıllar itibariyle bakıldığında düşük teknoloji sınıfında doğan girişimlerin sayısı 2012 yılında en yüksek düzeye ulaşırken 2015 yılında en düşük seviyesinde seyretmiştir. Düşük teknoloji seviyesinde dalgalı bir seyir ortaya çıkması gelişmiş ülke ekonomilerinde ürkütücü bir tablo görülmemektedir. Aksine eğer düşük teknoloji düzeyindeki firmaların sayısının giderek azalırken diğer teknoloji seviyelerinde ve özellik yüksek teknoloji seviyelerinde artış görülmesi ülke ekonomileri açısından olumlu yorumlanması gereken bir göstergedir.
  • Benzer şekilde yıllar itibariyle orta düşük teknoloji sınıfında doğan girişimlerin sayısı da dalgalı bir seyir izlemiştir. 2019 yılında ise bu teknoloji sınıfında doğan girişimlerin sayısı en düşük seviyede gerçekleşmiştir.
  • Bahsedildiği üzere ülke ekonomileri açısından önem arz eden teknoloji sınıfları orta yüksek ve yüksek teknoloji sınıflarıdır. Bunun altında yatan temel sebepler arasında bu teknoloji sınıfında üretilen ürünlerin yüksek ekonomik katma değer oluşturma potansiyelleri bulunmaktadır. Orta yüksek teknoloji sınıfında doğan girişimlerin sayısına bakıldığında genel olarak istikrarlı bir artış seyri izlediği görülmektedir. Benzer şekilde 2014 ve 2015 yılları dışarda bırakılırsa yüksek teknoloji sınıfında da benzer bir resim ortaya çıkmaktadır. Orta yüksek ve özellikle yüksek teknoloji seviyesinde doğan girişimlerin sayısının artması ülkenin ekonomik kalkınmasına, büyümesine ve ülke ekonomilerinin rekabetçi olabilmesine büyük katkı sunmaktadır. Ancak açık ara mutlak bir katkıdan bahsedilebilmesi için düşük ve orta düşük teknoloji sınıfındaki firmalardan orta yüksek ve yüksek teknoloji sınıfına geçişkenliklerinin olması ve firmaların belirli ölçeğe ulaşması gerektiğini burada ifade etmek gerekir. Yani aslında burada ters orantılı bir varsayımdan bahsediyoruz; orta yüksek ve yüksek teknoloji seviyesindeki firma sayıları artış beklerken düşük ve orta düşük teknoloji sınıfındaki firmaların sayısı doğrusal olarak azalması gerekir. Diğer taraftan girişimlerin ya da firmaların teknoloji düzeyi yükseldikçe istihdam katma değeri, diğer bir deyişle istihdam edilen çalışan sayısı azaldığı bilinen bir gerçektir. Burada istihdam sayılarının yüksek teknoloji düzeylerinden dolayı azalması işsizliği artırarak sosyal bir sorun ortaya çıkaracağı aşikardır. Ancak bu sorunun da imalat sektörü özelinde bir çözümü bulunmaktadır. Devletin süper teşviklerle yüksek teknoloji sınıfında büyük ölçekli firmalar oluşturması ve belirli seviyeye kadar onları teşvik etmesi gerekir tıpkı Güney Kore’de olduğu gibi. İlk etapta bu durum oluşacak yüksek sabit maliyetlerden ve firmanın stabil hale gelebilmesinden dolayı bir zorunluluktur. Bu noktada Sanayi ve Teknoloji Bakanlığı’nın 2023 yılında en az 10 Turcorn oluşturma çabası yerinde bir karardır, ancak bunun gerçekleştirilmesi görüldüğü kadar kolay değildir. Bunun için ekonominin ve diğer yatırımı etkileyen pek çok faktörün stabil hale getirilmesi gerektiği de unutulmamalıdır. Zira ekonomiyi sadece ekonomik faktörlerle açıklayamayız. Uygun yatırım ortamı her açıdan tesis edilmesi gerekir göçmen politikaları da dahil olmak üzere.

Şekil 1: İmalat Sanayinde Doğan Girişimlerin Sayısının Teknoloji Düzeyine Göre Dağılımı, 2011-2019

Kaynak: TÜİK verilerinden tarafımca analiz edilmiştir.

Girişimcilik ve İş Demografisi istatistiklerinden imalat sanayinde doğan girişimlerin oranı ise yıllar itibarıyla Şekil 2’de verilmiştir. Şekil 2’ye göre öne çıkan bulgular şöyledir:

  • Orta yüksek teknoloji sınıfında doğan firmaların oranına bakıldığında aslında en olumsuz tablonun 2012 yılında olduğu görülmektedir. Bu yılda doğan firmaların oranı 7,9 seviyesinde kalmıştır. Bu sınıfta doğan girişimlerin oranının en yüksek olduğu yıl ise %9,71 ile 2019 yılı olmuştur.
  • Yüksek teknoloji sınıfında doğan firmaların oranına bakıldığında ise keskin azalma trendleri görülmediği, gözlenmiştir. Diğer taraftan bu sınıfta doğan firmaların oranının en düşük olduğu yıl 2011(%0,38) yılı iken en yüksek olduğu yıl 2019 (%0,77)’dur. Buradan bakıldığında hem orta yüksek hem de yüksek teknoloji sınıfındaki firmaların oranının en yüksek olduğu yılın 2019 yılı olması uygulamaya konulan sanayi ve teknoloji politikalarının olumlu bir sonucu olduğu düşünülmektedir. Ancak 2019 yılında kaydedilen bu olumlu gelişmeye rağmen yüksek teknoloji sınıfında doğan firmaların oranının %1 bandında bile olmaması özellikle düşünülmesi, kafa yorulması ve çok daha fazla çalışılması gereken konuların başında gelmektedir. Bilindiği üzere Dünya bir pandemi sürecinden geçmektedir. Bu süreç beraberinde riskler getirdiği gibi avantajlar da getirmektedir özellikle dijitalleşme açısından. Bu avantajlar sonuna kadar kullanılmalı ve pandemi sürecince test edilmeye devam edilmelidir. Pandemi bitse bile dijitalleşmenin getirdiği fırsatlardan başta kamu olmak üzere yararlanmaya devam edilmelidir. Yani dijitalleşmenin olanak tanıdığı uzaktan çalışmaya devam edilmelidir kamu harcamalarını azalttığı için. Diğer taraftan pandemi süreci kamu harcamaları üzerinde büyük bir baskı oluşturduğu için daha az verimli (düşük ve orta düşük teknoloji yatırımları) yatırım alanlarından daha çok verimli (orta yüksek ve özellikle yüksek teknoloji yatırımları) yatırım alanlarına kamu bütçeleri transfer edilmelidir.

Şekil 2: İmalat Sanayinde Doğan Girişimlerin Oranının Teknoloji Düzeyine Göre Dağılımı (%), 2011-2019

Kaynak: TÜİK verilerinden tarafımca analiz edilmiştir.

Değerlendirilen bulgular ışığında özetleyecek olursak ülke ekonomilerinin rekabet edebilirliklerinin ve gelişmişliklerinin temelinde aslında ürettikleri ürünlerin taklit edilemeyecek yüksek teknoloji ürünlerden oluşması ve bu ürünleri üreten firmaların oranının yüksek, ölçeğinin ise büyük olması yatmaktadır.  

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

Bilimle ve teknolojiyle kalınız.

Yararlanılan Kaynaklar

Öne çıkan

Makine Öğrenme Yöntemleri Kullanarak Eksik Verilere Atama Yapılması Üzerine Bir Vaka Çalışması: A Case Study on Assigning Missing Data Using Machine Learning (ML) Methods

Veri bilimcilerin ya da veri analizleriyle uğraşan akademi ve saha çalışanların karşılaştığı problemlerin başında veri setindeki değişkenlerde eksik gözlemlerle diğer bir deyişle missing data gelmektedir. Literatürde eksik veri atama yöntemleri arasında bir çok yöntem bulunmakla birlikte öne çıkan yöntemlerden bazıları şöyledir:

  1. Eksik gözlemlere ortalama değer atama
  2. Eksik gözlemlere 0 değeri atama
  3. Eksik gözlemlere median değeri atama
  4. Eksik gözlemlere PMM yöntemi ile atama
  5. Eksik gözlemlere regresyon yöntemi ile atama
  6. Eksik gözlemlere EM (Expectation-Maximization) yöntemi ile atama

Bahsedilen bu yöntemlerin dışında eksik veri atama yöntemlerinden makine öğrenme algoritmalarından ya da yöntemlerinden de yararlanabilmektedir. Bunlardan bazıları ise şöyle özetlenebilir:

  1. Karar ağaçları (decision trees) yöntemi ile eksik gözlemlere atama yapma
  2. KNN (K Nearest Neighbor) yöntemi ile eksik gözlemlere atama yapma
  3. Rastgele Orman (RF) Algoritması ile eksik gözlemlere atama

Sayılan bu yöntemleri artırmak mümkündür. Bu çalışma kapsamında eksik veri atama yöntemi olarak ele alınacak ve üzerinde uygulama yapılacak yöntemler ise karar ağaçları, KNN ve RF makine öğrenme yöntemleri olacaktır. Çalışmada örnek uygulama yapılacak veri seti sentetik olarak üretilecektir. Diğer bir deyişle hipotetik olacaktır. Şimdi sırasıyla uygulama adımlarına geçebiliriz.

Yüklenen Kütüphaneler

Aşağıda görüleceği üzere Kütüphane sayısını oldukça fazla tuttum. Bunun nedeni diğer çalışmalarda bu kütüphaneleri kullanmamdır.

library<-c("reactable","crosstalk","dplyr","tibble","tidyr","ggplot2","formattable","ggthemes","readr","readxl","ggpubr","formattable", "ggstance", "stringr","explore", "lubridate","leaflet", "tidytext", "scales", "data.table", "CCA", "pastecs", "gtools", "rmarkdown", "knitr", "gtsummary", "writexl", "ppcor", "reshape2", "GGally", "CCP", "Hmisc", "VIM", "philentropy", "haven","mice")
loading<-sapply(library, require, character.only = TRUE)
as.vector(loading)

Tesadüfi sentetik (hipotetik) veri üretme

Bu kısımda 4 değişkenli bir veri seti basit tekrarlı örneklem yöntemi kullanılarak üretilecektir.

atama=c(1:10000, rep(NA, 10000))
set.seed(61)#aynı sonuçları almak için
v1=sample(atama, 1000, replace=TRUE)
v2=sample(atama, 1000, replace=TRUE)
v3=sample(atama, 1000, replace=TRUE)
v4=sample(atama, 1000, replace=TRUE)
veri<-cbind(v1, v2,v3,v4) %>% as_tibble()


formattable(head(veri, 10))#ilk 10 gözlem

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen ilk 10 gözlem aşağıda verilmiştir.

Eksik verileri görselleştirme

Burada veri setinde değişkene göre eksik veri olan gözlem sayısı ile ilgili değişkendeki gözlem sayıları içindeki oranı verilmiştir.

explore_all(veri)

Yukarıdaki R kod bloğunun çalıştırılmasından sonra eksik veri olan gözlem sayısı ile ilgili değişkendeki gözlem sayıları içindeki oranı aşağıda verilmiştir.

Karar ağaçları ile eksik veri atama

dt<-mice(veri, method = "cart")
formattable(head(mice::complete(dt,1),10))# Atama sonrası ilk 10 gözlem

Yukarıdaki R kod bloğunun çalıştırılmasından sonra karar ağaçları yöntemiyle yapılan atamaları gösteren ilk 10 gözlem mevcut gözlem değerleriyle birlikte aşağıda verilmiştir.

KNN (K Nearest Neighbor) Algoritması İle Eksik Veri Ataması Yapılması

KNN algortiması hem sınıflandırma hem de regresyon problemlerinin çözümünde kullanılabilmektedir. Buradan bakıldığında hem kategorik hem de sürekli ve kesikli nitelikte olan değişkenlerde eksik veri gözlemlerinin atanmasında alternatif non-parametrik denetimli (supervised) yöntemlerden birisidir.

eksikknn <- kNN(veri)
eksikknn[,1:4] %>% head(10) %>% formattable() #ilk 10 gözlem

Yukarıdaki R kod bloğunun çalıştırılmasından sonra KNN algoritmasıyla yapılan atamaları gösteren ilk 10 gözlem mevcut gözlem değerleriyle birlikte aşağıda verilmiştir.

Rastgele Orman (RF) Algoritması Kullanılarak Eksik Veri Ataması Yapılması

rfdf <- mice(veri, meth = "rf", ntree = 50, seed = 61)#ntree yetiştirilecek ağaç sayısını göstermektedir.

formattable(head(mice::complete(rfdf,1),10))# Atama sonrası ilk 10 gözlem

Yukarıdaki R kod bloğunun çalıştırılmasından sonra rastgele orman (RF) algoritmasıyla yapılan atamaları gösteren ilk 10 gözlem mevcut gözlem değerleriyle birlikte aşağıda verilmiştir.

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

Daha önce RPubs platformunda eksik veri ataması yapılması üzerine örnek uygulama yaptığım çalışmanın linkini de aşağıda paylaşıyorum ilgilenenler için.

Makine Öğrenme Yöntemleri Kullanarak Eksik Gözlemlere Atama Yapma

Faydalı olması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla…

Yararlanılan Kaynaklar

Öne çıkan

COVID-19 ve Türkiye İmalat Sanayi Sektör Üretimlerinin Seyri

Birleşmiş Milletler Sınai Kalkınma Örgütü (UNIDO) tarafından 6 Ekim tarihinde Dünya İmalat Üretimi Temmuz 2020 dönem raporu yayınlanmıştır. Raporda küresel üretimde büyüme, Covid-19’un tetiklediği ekonomik bozulmaların ardından istikrar görüntüsü vermeye ve yukarı yönlü bir trend göstermeye başlamıştır. Çin’deki son üretim verileri, salgın öncesiyle benzer büyüme oranlarına işaret ederken, diğer ülkeler daha yavaş bir hızda toparlanma eğilimi göstermiştir. Covid-19’un etkisiyle Ocak ayındaki üretim düşüşünün ardından Çin ekonomisi hızla toparlanmış ve Haziran ayında kriz öncesi üretim seviyesini de aşmıştır. Covid-19’un Latin Amerika ve Kuzey Amerika, Avrupa ve Doğu Asya gibi sanayileşmiş ülkelerdeki etkisi Mart ayından itibaren görülmüş ve en düşük üretim Nisan ayında gerçekleşmiştir.

Rapora göre Covid-19 pandemi süresince bilgisayar, elektronik ve optik ürünler, gözlemlenen tüm ülke gruplarında üretim artışı gösteren tek ürün grubu olmuştur. Ayrıca, elektrikli ekipman, kimyasal ve farmasötik ürünler diğer gruplara göre nispeten daha düşük kayıplar göstermiştir.

Covid-19 salgını nedeniyle şiddetli düşüşün ardından küresel üretimdeki toparlanma artış trendine girmeye başlamıştır. Türkiye’nin toplam üretim trendi ise UNIDO’nun 2005 yılını baz yıl olarak aldığı mevsimsel etkilerden arındırılmış temel endeksine göre Şekil 1 üzerinde 2005 yılından 2020 yılının ilk 7 ayına kadar karşılaştırmalı olarak verilmiştir.

Şekil 1: Türkiye’nin Üretim Sektörleri Toplam Endeks Trendi, 2005-2020

Kaynak: UNIDO verilerinden tarafımca analiz edilmiştir.

Şekil 1’de görüleceği üzere üretim artışlarında 2020 yılı trendinin artış göstererek 2019 yılı trendine yaklaşmakta olduğu görülmektedir. Ancak bütün zaman zemin serileri içerisinde üretimdeki en yüksek artış trendinin 2017 yılında olduğu gözlemlenmiştir.

Türkiye’nin üretim sektörleri trendini daha yakından görmek adına 2020 yılı için aylara göre toplam üretim trendi UNIDO’nun 2005 yılını baz yıl olarak aldığı mevsimsel etkilerden arındırılmış temel endeksine göre ise Şekil 2 üzerinde verilmiştir. Şekil 2’ye göre Türkiye’de üretim sektörlerinin 4. aydan sonra toparlanma seyrine girdiği, en yüksek endeks değeri gerçekleşmesinin ise 2020 yılının 7. ayında olduğu gözlemlenmiştir.

Şekil 2: Türkiye’nin Aylara Göre Üretim Sektörleri Toplam Endeks Trendi, 2020

Kaynak: UNIDO verilerinden tarafımca analiz edilmiştir.

Ürün gruplara göre üretim sektörlerindeki trendler ise 2020 yılının 3. ayından 7. ayına kadar (bu ay dahil) Tablo 1’de verilmiştir. Tablo 1’deki en sağ sütunda bar grafikteki kırmızı blok, ilgili aydaki en yüksek endeks değerini göstermektedir. Tablo 1’e göre öne çıkan bulgular şöyledir:

  • Bilgisayar, elektronik ve optik ürünlerin 7. aydaki üretim endeksi değeri bütün üretim sektörleri içerisinde en yüksek endeks değerine sahiptir. Bu ürün grubunda 4. ayda kaydedilen en düşük endeks değerinden sonra endeks değeri 5, 6 ve 7. aylarda sürekli yükseliş trendi göstererek 7. ayda en yüksek seviyesine ulaşmıştır.
  • Genel olarak istikrarlı bir seyir izleyen içecek ürün gruplarının 3. aydan itibaren yükseliş trendi gösterdiği, 7. ayda ise en yüksek seviyesine ulaştığı görülmektedir. İçecek ürün grubu, bilgisayar, elektronik ve optik ürünlerden sonra en yüksek endeks değerine sahip 2. ürün grubu olmuştur.
  • İstikrarsız bir seyir izleyen gıda ürünlerindeki üretim trendinin en yüksek olduğu ay 3. ay iken, en düşük olduğu ay 5. aydır.
  • Tekstil ürünlerinde en düşük üretim endeks değerinin kaydedildiği 4. aydan sonra istikrarlı artış trendi gözlenmiştir. Yedinci ayda ise bu ürün grubunun endeks değerinin en yüksek seviyeye ulaştığı görülmüştür.
  • Genel olarak grafiklerde kırmızı bloklara bakıldığında ürün gruplarında en yüksek endeks değerlerine 7. ayda ulaşıldığı görülmektedir.

Tablo 1: Türkiye’deki Ürün Gruplarının Aylara Göre Üretim Endeks Değerleri, 2020

Kaynak: UNIDO verilerinden tarafımca analiz edilmiştir.

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

Bilimle ve teknolojiyle kalınız.

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

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

Yararlanılan Kaynaklar

Öne çıkan

Büyük Veri Mi Kalın Veri Mi? : Big Data or Thick Data?

Yararlanılan Kaynak: Tarafımdan geliştirilen kelime bulutu oluşturucu (https://buluttevfik.shinyapps.io/kelimebulutuv2/) uygulaması ile yazdığım metin olduğu gibi analiz edilmiştir.

Yapılandırılmış ve yapılandırılmamış veri ile bilgi ve belgelerin dijital ortama aktarılması ve dijital ortamda işlenmesi süreci anlamına gelen dijitalleşmenin küresel ölçekte Covid-19 salgının ortaya çıkmasıyla birlikte daha da ivme kazanmış olması üretilen verinin hacmini devasa boyutlara ulaştırmış,  çeşitliliğini ise artışmıştır. Bu durum beraberinde büyük veri, ingilizce ifadeyle big data kavramını 2000’li yılların başında literatüre kazandırmıştır. Özellikle son 10 yılda yaşamımızın hemen hemen her yönünü etkileyen dijitalleşmeyle birlikte ortaya çıkan devasa boyuttaki bu veri daha iyi bir örgüt inşa edilmesinde, örgütün iyileştirilmesinde ve sürdürülebilir kılınmasında anahtar rol oynamaya başlamıştır. Artan dijitalleşme bununla da sınırlı kalmamış büyük verinin yanında kalın veri, ingilizce ifadeyle thick data kavramını beraberinde getirmiştir. Bu makalede büyük veri ve kalın veri bağlamında aşağıdaki sorulara cevap aranmıştır:

  • Büyük veri nedir?
  • Kalın veri nedir?
  • Büyük veri ve kalın veri arasında öne çıkan farklılıklar nelerdir?
  • Örgütler için büyük veri ve kalın veri neden önemlidir?

Büyük veri nedir?

Büyük veri, ingilizce ifadeyle big data yapılandırılmış ve yapılandırılmamış olmasının yanında çeşitli olması, doğruluk değeri taşıması, değer ifade etmesi ve belirli bir hızda üretilmesi özelliklerinin aynı anda karşılandığı veriyi tanımlamak için kullanılan bir terimdir. 2005 yılında O’Reilly Media şirketinden Roger Mougalas, Web 2.0 teriminin ortaya çıkmasından sadece bir yıl sonra, “Big Data” terimini ilk kez ortaya çıkmıştır.  Ancak 2005 yılından önce de büyük veri vardı ve operasyonlarda kullanılıyordu. Ancak bu kavramın adı konmamıştı.

Büyük veri kendi içerisinde uzun veri (tall data) ve şişman veri (fat data) olmak üzere iki kategoride incelenir.

  1. Uzun veri (tall data): Veri setindeki değişken sayısının az olmasına karşılık gözlem sayısının çok yüksek olması anlamına gelir. Başka bir deyişle her bir gözlemi satır, değişkenleri sütun olarak kabul edersek satır sayısının çok yüksek, buna karşın sütun sayısının düşük olması durumunu ifade eder.
  2. Şişman veri (fat data): Büyük verinin bu kategorisi ise uzun verinin tam tersidir. Daha açık ifadeyle, şişman veri veri setindeki değişken sayısının yüksek olmasına karşılık satır sayısının oldukça az olduğu kategoriyi tanımlamak için kullanılır.

Anlatılanları somutlaştırmak adına büyük veri kategorileri Şekil 1 üzerinde verilmiştir.

Şekil 1: Büyük Veri Kategorileri

Ancak büyük veriden bahsedebilmek için tek başına büyük hacimli olması yetmez. Bunun yanında diğer özelliklerin de aynı anda karşılanması gerektiği daha önce ifade edilmişti. Tam anlamıyla büyük veriden bahsedebilmek için literatürde yaygın bir şekilde kabul gören belli başlı özelliklere sahip olması gerekir. Bu özellikler aynı zamanda kısaca 5V olarak anılmakta olup şöyledir:

a) Hacim (Volume): Üretilen verinin yüksek miktarlarda olması anlamına gelir. Analist firmalarından Gartner ve uluslararası veri şirketi IDC verilerine göre önümüzdeki birkaç yıl içerisinde bulut bilişim, nesnelerin interneti (IoT) ve edge bilişim teknolojileri sayesinde evrim geçirecektir. Burada adı geçmişken edge bilişimden kısaca bahsetmek yerinde olacaktır. Edge bilişim, kurumsal uygulamaları nesnelerin interneti (IoT) veya yerel edge sunucuları gibi veri kaynaklarına yaklaştıran dağıtık bir bilgi işlem çerçevesidir. Verilerin kaynağına olan bu yakınlık, daha hızlı iç görüler oluşturma ve iyileştirilmiş yanıt süreleri gibi gerçek iş avantajları sağlayabilmektedir. Somutlaştırmak gerekirse, firmanın yakınından ham maddeyi alarak işlemesi gibi düşünebilirsiniz. Edge bilişim, bulut bilişime göre daha etkili bir alternatif sunarak verilerin oluşturuldukları kaynağın daha yakınında işlenerek analiz edilebilmesine olanak tanımaktadır. Diğer taraftan nesnelerin interneti (IoT) ise ağ içerisinde yer alan cihaz ve makine gibi fiziksel nesnelerin insana gerek duymadan kendi aralarında veri alış-verişi yaptığı sistemlerdir. Nesnelerin internetiyle birbirine bağlanan cihaz sayısında büyük artış sağlanması ve bu cihazların artan bilgi işleme gücü,  daha önce benzeri görülmemiş veri hacimlerinin ve büyük verinin oluşmasına imkân tanımıştır. Edge bilişim de büyük veri hacimlerinin ve büyük verinin oluşması sürecine hız kazandırmıştır. Ayrıca, 5G ağlara geçişin mümkün kılınması ile birlikte bağlı mobil cihaz sayısının artacak olması veri hacimlerini üstel olarak büyütecektir. Şöyle ki, beşinci nesil kablosuz mobil telekomünikasyon hizmeti olan kısaca 5G, dördüncü nesil teknoloji olarak nitelendirilen 4G’den yaklaşık 10 katı veri iletim hızı sağlamaktadır. Bu açıdan bakıldığında 5G ve edge bilişim uyumu, bütün sektörlerde olağanüstü fırsatların ortaya çıkmasına zemin hazırlayacaktır. IDC’ye göre, 2025 yılına kadar küresel ölçekteki toplam veri hacmi 175 zettabayta ulaşacaktır. Veri depolama ölçü birimlerinden biri olan zettabaytta 1 zettabayt 10²¹ (1.000.000.000.000.000.000.000) bayt veya 1 sekstilyon bayt olarak ifade edilmektedir.

b) Çeşitlilik (Variety): Verinin yapılandırılmış ve yapılandırılmamış olması anlamına gelir. Büyük veride veri tipleri ve kaynakları Şekil 2’deki gibi özetlenebilir:

Şekil 2: Büyük Veri Tipleri ve Kaynakları

Kaynak: Hiba ve diğerleri, 2015

c) Hız (Velocity): Verinin belirli bir hızda üretilmesi gerekir. Gerçek zamanlı verilerin üretildiği sosyal medya platformları, hastaneler, radar sistemleri gibi alanlar buna örnek verilebilir.

d) Değer (Value): Verinin işlendikten sonra bir anlam ifade etmesi, diğer bir ifadeyle veri madenciliği teknikleri kullanılarak tanımlayıcı ve çıkarımsal istatistikler üretilmesi ve verinin paraya dönüştürülmesidir.

e) Doğruluk (Veracity): Verinin güvenilir olmasıdır. Bundan kasıt toplanan verinin kaynağının güvenilir olması, verinin yaşam döngüsünün şeffaf bir şekilde güvence altına alınması, güvenli depolama özelliklerine sahip olmasını ve istatistiksel açıdan güvenilir olmasını gerektiği anlaşılmalıdır.

Büyük verinin taşıması gereken özellikler anlatıldıktan sonra bahsedilenleri özetlemesi adına bu özellikler Şekil 3’te sunulmuştur.

Şekil 3: Büyük Verinin Özellikleri

Kalın veri nedir?

Kalın veriye geçmeden önce “kalın” teriminin irdelenmesinin faydalı olduğuna inanıyorum. Antropolog Clifford Geertz tarafından 1973 yılında yayınlanan makalede kalın terimi ele alınmış ve popülerlik kazanmıştır. Kalın terimi bir eylemin anlamının ve motivasyonunun irdelenmesi gerektiğini ileri sürmektedir. Kalın veri ise büyük veri analitikleriyle ortaya konulan görselleştirme ve analizinin ardındaki anlamı ortaya çıkaran yeni bir etnografik yaklaşımdır. Antropolojinin bir dalı olan etnografi, mevcut bir sosyal durumda bireylerin ya da grupların davranışını nitel araştırma perspektifinden inceleyen sosyal araştırma disiplinidir. İnsan davranışının bilinmeyenlerini anlamak ve bir bireyin bir hizmet veya ürünle ilişkisinin zaman içinde nasıl değişeceğini tahmin etmeyi amaçlayan kalın veri yaklaşımı işletme CEO’su Tricia Wang tarafından 2013 yılında popüler hale getirilmiştir. Kalın veri yaklaşımı tüketici davranışlarını daha hassas bir şekilde alır ve tüketicinin satın alma hikâyesine derinlik kazandırır. Kalın veri, analiz edilen konuların bağlamlarının ve duygularının ortaya çıkmasına izin veren etnografik verilerin nitel yaklaşım ile ele almasıyla büyük veriden ayrılırken, büyük veri genellikle veri bilimcileri tarafından yürütülen algoritmik bir süreci gerektirir. İç görüler inşa edilmeye çalışılıyorsa bir değil birden fazla metodun bir arada kullanılması gerekir. Buradan kalitatif araştırma yöntemi olarak da görülen kalın veriyle birlikte kantitatif yaklaşım olarak değerlendirilen büyük verinin birlikte kullanılması gerektiği anlaşılmalıdır. Özellikle pazarlama alanında büyük markalar kalın veri ve büyük verinin entegrasyonu ile fark yaratmaya başlamışlardır. Buna örnek olarak video içerik sağlayıcı Netflix’in pazarlama stratejileri verilebilir. Büyük veri genellikle makine öğrenme ve derin öğrenme gibi yapay zekâ yöntemlerine bağlı olarak tahminde bulunurken kalın veri tutum veya davranışların ardında yatan gerçeklikle ilgilenir.

Büyük veri ve kalın veri arasındaki farklılıklar nelerdir?

Önceki kısımda büyük veri ve kalın veri arasındaki farklılıklar kısmen verilse de bu kısımda sistematik bir şekilde bu kavram arasındaki farklılıkları Ang (2019)’a göre aşağıdaki gibi ele alabiliriz:

  1. Verinin formatı: Büyük veride veri nicel formattayken, kalın veri de format niteldir.
  2. Hacim: Gözlem sayıları büyük veride daha yüksek iken kalın veride daha düşüktür.
  3. Veri toplama yöntemleri: Dijital kayıtlar ve dijital arşivler ile internet ve sosyal medya aracılığıyla büyük veride veri toplanırken, kalın veride veri katılımcı gözlemi, odak grup görüşmeleri, açık uçlu soruları barındıran anketler, video kayıtları ve nitel karakterli verinin sosyal medya platformları aracılığıyla toplanır.
  4. Analistler: Analizler büyük veride genellikle sosyal araştırmacılar ve veri bilimcileri tarafından yapılırken kalın veride analizler antropologlar ve etnograflar tarafından yapılmaktadır.
  5. Analiz yapıldığı yer: Büyük veride analistlerin veriyi analiz etmesi mekandan bağımsız iken, diğer bir ifadeyle belirli bir mekan gereksinimi söz konusu değil iken, kalın veride analistler nitel araştırmanın doğası gereği gözlemin yapılacağı ortamda bulunma gereksinimi duyarlar. Katılımcı gözlemi, derinlemesine görüşme gibi nitel araştırma teknikleri analistin o ortamda bulunmasını gerektirir.
  6. Problem çözümündeki rol: Büyük veride daha çok tanımlayıcı ve çıkarımsal istatistikler ortaya koymak amaçlanırken, kalın veride belirli bir konuda problemleri tanımlayarak ve nedenlerini ortaya koyarak derinlemesine içgörüler elde edilmesi amaçlanır.
  7. Güçlü yanlar: Nicel araştırmaların doğası gereği elde edilen bulguların araştırma evrenine veya popülasyonuna genellenmesi söz konusu iken, nitel araştırmaların doğası gereği kalın veride elde edilen bulguların popülasyona genellenmesi söz konusu değildir. Kalın veride amaç belirli konu ve problem alanına yönelik derinlemesine içgörüler elde etmektir.

Örgütler için büyük veri ve kalın veri neden önemlidir? En başta yapay zekâ teknolojilerinde büyük verinin önemini vurgulamak gerekir. Gelişmiş bilgisayar zekâsı da olarak da adlandırılan yapay zekâ büyük hacimli verilerden ve veri setlerinden öğrenerek daha iyi analizler yapabilmekte ve çıkarımlarda bulunmaktadır. Bu yönüyle bakıldığında düşük hacimli veri setleri yapay zekâ çıkarımları açısından fonksiyonel ve istatistiksel açıdan güvenilir görülmemektedir. Dolayısıyla yapay zekâ ve büyük veri güvenilir analiz ve istatistiksel çıkarımlar açısından vazgeçilemez muhteşem ikilidir. Nitel araştırma yaklaşımlarından biri olan kalın veri ise büyük veriye daha çok içgörü sağlayarak derinlemesine analize imkân tanımaktadır. O zaman şöyle söyleyebiliriz; Etnografik bir yaklaşım olan kalın veri büyük veriyi, büyük veri ise yapay zekâyı besler. Yapay zekâ için en elzem girdi veridir. Veri yoksa yapay zekânın da öğrenebileceği bir girdi olmayacağından fonksiyonel olmayacaktır. Buradan şu yorumu da çıkarabiliriz: hızla artan dijitalleşme ve Web 3.0 ile birlikte kaliteli ve güvenilir veri hacmi artıkça yapay zekâ daha iyi öğreneceğinden daha iyi tahminlerde ve çıkarımlarda bulunacaktır. Ülke politikaları da dijitalleşme sürecine ve dijital dönüşüme büyük ivme kazandırarak büyük verinin üstel olarak artmasına büyük katkı sağlamaktadır. Şöyle ki, Almanya’nın 2011 yılında başlattığı 4. Sanayi Devrimi (Industry 4.0), Singapur’un 2014 yılında başlattığı Akıllı Ulus (Smart Nation) programı ve Japonya’nın 2015 yılında başlattığı Toplum 5.0 (Society 5.0) devrimi bu ülke politikalarına örnek verilebilir. Şahsen yapay zekâ ve büyük veri muhteşem ikilisine son zamanlarda öne çıkan kalın veriyi de ilave edersek muhteşem üçlüyü elde etmiş oluruz.

Başta verimlilik ve etkililik sağlayan büyük veri ve kalın verinin örgütlere sağladığı belli başlı avantajlar şöyledir (Almeida, 2017):

  • Büyük veri analitikleriyle hem yapılandırılmış hem de yapılandırılmamış verinin yapay zekâ teknolojisiyle analizine imkân tanıyarak daha doğru tahminler elde edilebilmektedir.
  • Artan dijitalleşme ve bulut bilişim sayesinde büyük veriye zaman ve mekândan bağımsız olarak ulaşılmasının yanında gerçek zamanlı analizlere olanak tanıması büyük veri kullanıcılarına ulaşılabilirlik açısından büyük avantaj sağlamaktadır.
  • Yeni ürün ve hizmetlerin geliştirilmesine ve yeni iş modellerinin kurulmasına olanak tanımaktadır.
  • Veriye dayalı pazarlama anlayışına, müşteri deneyimlerinin kişiselleştirilmesine, müşteri sadakatinin ve tatmininin artırılmasına büyük katkı sunmaktadır.
  • Müşteri davranışının daha iyi anlaşılmasına ve müşteri davranışı hakkında derinlemesine içgörüler oluşturulmasına fırsat sunmuştur.
  • Yatırım getiri oranları (ROIs)’nda artış sağlamaktadır.
  • Girdi maliyetlerini azaltarak satış fiyatlarının daha etkili belirlenmesine katkı sunmaktadır.

Özetle, yapılan bu çalışmayla büyük veri ve kalın verinin tanımı, aralarında öne çıkan farklılıkların neler olduğundan bahsedilerek örgütler için neden önemli olduğu vurgulanmıştır. Anlatılanlar bütüncül bir yaklaşımla değerlendirildiğinde etnografik bir yaklaşım olan kalın verinin büyük veri için tamamlayıcı bir rol oynadığı, hem büyük verinin hem de kalın verinin yapay zekâ teknolojilerinin ayrılmaz bir parçası olduğu ve olması gerektiği anlaşılmalıdır. Dolayısıyla büyük veri ve kalın verinin içerisinde olduğu bir hibrit yaklaşım benimsenmelidir. Nitekim yapay zekânın ana girdisi ve yakıtı olan büyük veri ve kalın verinin örgütlerin yatırım planlama, yatırım kararı alma, ürün veya hizmet geliştirme ve pazarlamada, yönetim sistemlerinin iyileştirilmesinde, veriye dayalı makro ve mikro politikalar geliştirilmesinde etkinlik, etkililik ve verimlilik sağlamak için hayati derecede önemli olduğu unutulmamalıdır. Başta pazarlama olmak üzere küresel trendlerin de bu yönde olduğu görülmektedir. Benzetim yaparsak elinizde son model arabanız olsa da yakıt yoksa fonksiyonel anlamda arabanın pek bir değerinin olduğu söylenemez. İşte yapay zekâ ve onun alt dalları olan makine öğrenme ve derin öğrenme için de veri o denli bir öneme sahiptir. Artık dünyanın en değerli kaynağı petrol değil veridir.

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

Bilimle ve teknolojiyle kalınız.

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

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

Yararlanılan Kaynaklar

  • Yuen Yuen Ang (2019). Integrating Big Data and Thick Data to Transform Public Services Delivery. IBM, http://www.businessofgovernment.org/report/integrating-big-data-and-thick-data-transform-public-services-delivery. Access Date: 9/10/2020.
  • Dash, S., Shakyawar, S.K., Sharma, M. et al. Big data in healthcare: management, analysis and future prospects. J Big Data 6, 54 (2019). https://doi.org/10.1186/s40537-019-0217-0
  • What is Digitalization? http://library.fes.de/pdf-files/bueros/ruanda/16158.pdf
  • Alles, Michael & Vasarhelyi, Miklos. (2014). Thick data: adding context to big data to enhance auditability. International Journal of Auditing Technology. 2. 95. 10.1504/IJAUDIT.2014.066237.
  • J. Fiaidhi and S. Mohammed, “Thick Data: A New Qualitative Analytics for Identifying Customer Insights,” in IT Professional, vol. 21, no. 3, pp. 4-13, 1 May-June 2019, doi: 10.1109/MITP.2019.2910982.
  • KARTARI, Asker. Nitel Düşünce ve Etnografi: Etnografik Yönteme Düşünsel Bir Yaklaşım. Moment Dergi, [S.l.], v. 4, n. 1, jun. 2017. ISSN 2148-970X. Erişim Adresi: <http://www.momentdergi.org/index.php/momentdergi/article/view/236/437&gt;. Erişim Tarihi: 09 Oct. 2020 doi:10.17572/mj2017.1.207220.
  • Geertz, Clifford (1973) Thick Description: Toward an Interpretive Theory of Culture. In The Interpretation of Cultures: Selected Essays. pp 3–30. New York: Basic Books.
  • Jørgensen, T. B., & Due, B. L. (2018). Big–Thick Blending: A method for mixing analytical insights from big and thick data sources. Big Data & Society.
  • Hiba, Jasim & Hadi, Hiba & Hameed Shnain, Ammar & Hadishaheed, Sarah & Haji, Azizahbt. (2015). BIG DATA AND FIVE V’S CHARACTERISTICS. 2393-2835.
  • S. Sreeja, A.K. Sangeetha “No science no humans, no new technologies no changes: “Big Data a Great Revolution”,” International Journal of Computer Science and Information Technologies, vol. 6, no. 4, 2015, pp. 3269-3274.
  • Almeida, Fernando. (2017). Benefits, Challenges and Tools of Big Data Management. Journal of Systems Integration. 8. 12-20. 10.20470/jsi.v8i4.311.
  • Naidoo, Loshini. (2012). Ethnography: An Introduction to Definition and Method. 10.5772/39248.
  • https://tevfikbulut.com/2020/08/01/bulut-bilisim-nereye-evriliyor-where-is-cloud-computing-evolving-into/
  • IDC FutureScape, Worldwide IT Industry 2019 Predictions, November 2018. https://www.idc.com/getdoc.jsp?containerId=US44403818.
  • Kelime bulutu oluşturucu, https://buluttevfik.shinyapps.io/kelimebulutuv2/
Öne çıkan

R’da Kelime Bulutu Uygulaması Geliştirilmesi Üzerine Bir Vaka Çalışması: A Case Study on Developing a Word Cloud Application in R

Burada yapılan çalışmayla R programlama dili kullanılarak veri madenciliğinin bir dalı olan metin madenciliği (text mining) alanında bir uygulama geliştirilmiştir. Böylece kolay kullanım arayüzü sunan uygulama ile nitel araştırmalar yapan saha ve akademi çalışanlarına kolaylık sağlanması amaçlanmıştır.

Çalışma kapsamında geliştirilen uygulamadan bir ekran kesiti aşağıda verilmiştir.

Uygulamaya ise aşağıdaki linkten ulaşabilirsiniz.

https://buluttevfik.shinyapps.io/kelimebulutuv2/

Faydalı olması dileğiyle.

Yararlanılan Kaynaklar

Öne çıkan

APLOCO Metodunun Kompleks Ağlarda Düğüm Ağırlıklarının Belirlenmesinde Kullanımı Üzerine Bir Vaka Çalışması

Prof. Dr. Oğuz Fındık ve Emrah Özkaynak tarafından yapılan ve 19 Eylül 2020 tarihinde yayınlanan bir çalışmada kompleks ağ analizlerinde düğüm ağırlıklarının belirlenmesinde geliştirdiğim çok kriterli karar verme yöntemlerinden biri olan APLOCO uygulanmıştır. Çalışmanın adı, linki ve alıntı şekliyle birlikte aşağıda verilmiştir.

Çalışmanın adı:

Link prediction based on node weighting in complex networks

Çalışmanın linki ve alıntı şekli

https://link.springer.com/article/10.1007/s00500-020-05314-8#citeas

Fındık, O., Özkaynak, E. Link prediction based on node weighting in complex networks. Soft Comput (2020). https://doi.org/10.1007/s00500-020-05314-8

Yazarın ağzından çalışmanın içeriği:

“Bu çalışmada karmaşık ağlarda bağlantı tahmini için Düğüm Ağırlıklı Bağlantı Tahmin Modeli geliştirilmiştir. Geliştirilen modelde zaman periyodu ile birlikte ağda düğümlerin gücünü ortaya çıkarabilecek ve topolojik bilgilerle ifade edilemeyen özelliklerin dahil edildiği düğüm ağırlıklandırma işlemi yapılmaktadır. Elde edilen düğüm ağırlıkları gelecekte aralarında bağlantı olma ihtimali olan düğümlerin benzerlik oranlarını hesaplamada kullanılmaktadır. Düğümlerin ağırlıklandırma işleminde APLOCO yöntemi kullanılmıştır. APLOCO yönteminin tercih edilmesinin sebebi hem uygulanabilirliğinin kolay olması hem de düğümlerin ağırlığını hesaplamada başarılı sonuçlar vermesidir. APLOCO yönteminin uygulanması aşamalarında her daim desteğini esirgemeyen Tevfik Bulut Hocama çok teşekkür ederim. Bilim adına faydalı bir çalışma olacağını ümit ediyorum.” Emrah Özkaynak

Yararlanılan Kaynaklar

  • Fındık, O., Özkaynak, E. Link prediction based on node weighting in complex networks. Soft Comput (2020). https://doi.org/10.1007/s00500-020-05314-8
  • Bulut T (2018) A new multi criteria decision making method: approach of logarithmic concept (APLOCO). Int J Artif Intell Appl 9:15–33. https://doi.org/10.5121/ijaia.2018.9102
Öne çıkan

Küresel İnovasyon Endeksi’nde Türkiye Ne Durumda?

Dünya ekonomilerini inovasyon yeteneklerine göre sıralayan Küresel İnovasyon Endeksi, ingilizce ifadeyle Global Inovation Index (GII)’in 2020 yılı raporu 2 Eylül 2020 tarihinde Dünya Fikri Mülkiyet Hakları Örgütü (WIPO) tarafından yayınlanmıştır. Endeks her yıl düzenli olarak Dünya Fikri Mülkiyet Hakları Örgütü (WIPO), INSEAD ve Cornell Üniversitesi iş birliğinde hazırlanmaktadır. İnovasyon girdileri ve çıktıları olarak gruplandırılmış yaklaşık 80 göstergeden oluşan endeks, inovasyonun çok boyutlu yönlerini incelemektedir. Küresel İnovasyon Endeksinin çerçevesi gözünüzde canlanması adına Şekil 1’de verilmiştir.

Şekil 1: Küresel İnovasyon Endeksi (GII)’nin Yapısı

Kaynak: WIPO

Küresel İnovasyon Endeksi’ne göre 2020 yılında ilk 20’ye giren ülke ekonomileri Tablo 1’de sunulmuştur. Tablo 1’e göre öne çıkan bulgular şöyledir:

  • İlk 3 sırayı 2019 yılında olduğu gibi sırasıyla İsviçre, İsveç ve ABD paylaşmıştır.  Tabloda yer alan skorlara bakıldığında genel olarak skorlarda bir artış görülmediği, aksine azalış meydana geldiği görülmektedir. Ancak skorlardaki bu azalmanın bazı ülkeler hariç sıralamaları genel olarak değiştirmediği gözlemlenmiştir. Bunun nedeni raporda belirtildiği üzere Covid-19 pandemisinin ülke ekonomilerinde neden olduğu daralma ve araştırma ve geliştirme yatırımlarında neden olduğu kesintilerdir.
  • İlk 20 ülke içerisinde en yüksek gelişme gösteren ülke ekonomisi 4 sıra birden yükselen Fransa ekonomisi olmuştur. Yeni durumda Fransa listeye 12. sıradan girmiştir. Diğer taraftan en yüksek gerileme gösteren ülke ekonomileri ise İsrail ve İrlanda olmuştur.  İsrail 2019 yılında 10. sıradan 13. sıraya, İrlanda ise 12. sıradan 15. sıraya gerilemiştir.
  • Birleşik Krallık 2020 yılında 1 sıra yükselerek Hollanda ile, Danimarka 1 sıra yükselerek Finlandiya ile yer değiştirmiştir.

Tablo 1: Küresel İnovasyon Endeksi, 2020

Kaynak: WIPO

Raporda Türkiye ile ilgili olarak yer alan son 3 yıla ilişkin istatistikler Tablo 2’de sunulmuş olup, bu tabloya göre öne çıkan bulgular şöyledir:

  • Türkiye 2020 yılında Küresel İnovasyon Endeksinde bir önceki yıla göre 2 sıra düşüş göstererek 131 ülke ekonomisi arasında 51. sırada yer almıştır. İnovasyon girdi alt endeksinde ise bir önceki yıla göre artış göstererek 56. sıradan 52. sıraya yükselmiştir. İnovasyon çıktı alt endeksinde ise bir önceki yıla göre düşüş göstererek 49. sıradan 53. sıraya gerilemiştir.
  • 2020 yılında inovasyon girdi alt endeksi inovasyon çıktı alt endeksinden daha iyi durumdadır.
  • İnovasyon girdi alt endeks sıralamasında son 3 yılda en iyi performans 2020 yılında gösterilmiştir. Diğer taraftan inovasyon çıktı alt endeks sıralamasında son 3 yılda en düşük performans ise aynı yılda gözlemlenmiştir.
  • Küresel İnovasyon Endeksi sıralamasında ise son 3 yılda en düşük performans 2020 yılında görülürken, en yüksek performans 2019 yılında görülmüştür.

Tablo 2: Küresel İnovasyon Endeksi Bulguları, Türkiye

Kaynak: WIPO

Küresel İnovasyon Endeksi’ne göre Türkiye, 37 üst orta gelir grubu ülke ekonomisi arasında 8. sırada yer alırken, Kuzey Afrika ve Batı Asya’daki 19 ülke ekonomisi arasında ise 4. sırada bulunmaktadır. Gayri Safi Yurt İçi Hasıla (GSYİH) ile karşılaştırıldığında, Türkiye’nin performansı gelişmişlik düzeyi dikkate alındığında beklentilerin altında seyretmektedir.

Çıktı alt endeks puanının girdi alt endeksi puanına oranı anlamına gelen inovasyon etkililiği rasyosu, ingilizce ifadeyle Innovation Efficiency Ratio bir ülkenin girdileri ile ne kadar inovasyon çıktısı ürettiğini göstermektedir. Türkiye inovasyon etkililiği rasyosunda 2020 yılında 0,6’lık oranla 131 ülke arasında 54. sırada yer almıştır. İnovasyon etkililiği rasyosu 2020 yılından itibaren Dünya Fikri Mülkiyet Hakları Örgütü (WIPO) tarafından yayınlandığından önceki yıllarla birlikte bir karşılaştırma sağlanamamaktadır.

Girdi ve çıktı inovasyon endekslerinin alt endekslerinde de 2019 ve 2020 yılları karşılaştırılmış olup, öne çıkan bulgular Tablo 3’te verilmiştir. Tablo 3’e göre;

  • En yüksek performans gösterilen alt endeks 2020 yılında 28. sıraylaPazar gelişmişliği” iken 2019 yılında 40. sırada “Yaratıcı çıktılar” olmuştur.
  • En düşük performans gösterilen alt endeks 2020 yılında 94. sıraylaKurumlar” iken 2019 yılında 2020 yılına benzer olarak 85. sıradaKurumlar” olmuştur. Bu bulgudan aynı zamanda en düşük performans gösterilen “Kurumlar” alt endeksinin 9 sıra birden düşerek 2020 yılında daha da düştüğü görülmektedir.
  • Bir önceki yıla göre en yüksek gelişme gösteren alt endeks 24 sıra yükseliş gösteren “Pazar gelişmişliği” alt endeksidir. Bu endeksi sırasıyla 14 sıra yükseliş gösteren “İş gelişmişliği” ve 4 sıra yükseliş gösteren “İnsan sermayesi ve araştırma” endeksi izlemiştir.
  • Bir önceki yıla göre en düşük performans ortaya koyan alt endeks 13 sıra gerileme gösteren “Altyapı” alt endeksidir. Bu endeksi sırasıyla 10 sıra gerileyen “Yaratıcı çıktılar” ve 9 sıra gerileyen “Kurumlar” endeksi takip etmiştir.

Tablo 3: Girdi ve Çıktı İnovasyon Alt Endeksleri, Türkiye

Kaynak: WIPO

5 nolu “İş gelişmişliği” bölümünde 5.2. kodlu “İnovasyon bağlantıları” altında 5.2.1 kod ile yer alan Üniversite/Sanayi Araştırma İşbirliği endeksinde Türkiye’nin son iki yıllık gelişimi ise şöyledir: Türkiye Üniversite/Sanayi Araştırma İşbirliği alt endeksinde 2019 yılında 37 puanla 88. sırada yer alırken 2020 yılında 18 sıra birden yükselerek 40,6 puanla 70. sıraya yerleşmiştir. Bu bulgudan Üniversite-Sanayi İşbirliği programlarının endekse önemli katkı sunduğu anlaşılmaktadır.

Raporda Dünyayı etkisi alan Covid-19 pandemisinden dolayı 2020 yılında dünya ülkeleri araştırma ve geliştirme (AR-GE) yatırımlarına ayırdıkları pay düşüş göstermiştir. Diğer taraftan küresel olarak bazı ülkeler hariç ülke ekonomik büyüme hızlarında düşüş trendi öngörülmektedir. Bu nedenle Türkiye özelinde sunulan yukarıdaki bulgular çok olumsuz bir tablo çizmemelidir. Ancak bu durum ülkemizi ilerlemeden ve daha ön sıralara girmeden alı koyacağı anlamı taşımamalıdır. Türkiye nitelikli personel istihdamını ve şeffaflığı ilke edinerek ve verimsiz veya nispeten verimli alanlardan yüksek katma değerli alanlara daha fazla kaynak aktararak daha üst sıralara yükselmesi ve uluslararası arenada söz sahibi olması her zaman mümkündür. Ayrıca, 80 göstergeden oluşan endeks görev alanları itibarıyla neredeyse bütün kamu kurum ve kuruluşlarını ilgilendirdiğinden ilgili kamu kurum ve kuruluşlarının bilimi rehber edinerek eş güdümlü çalışması ve süreci görmek adına belirli aralıklarla ilerleme raporları hazırlaması gerektiği unutulmamalıdır.  Raporun ana ve alt endeksler açısından detaylı bir şekilde incelenmesi, atılacak adımlar ve alınacak politika tedbirleri açısından yol gösterici olacaktır. Üretilen yeni bilgi ve yöntemlerin sahada uygulanması anlamına gelen inovasyon ile inovasyon yetenek ve becerileri geliştiği ölçüde ülke ekonomileri gelişim göstereceği ve refah seviyelerinin artacağı aşikardır.

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

Bilimle, teknolojiyle ve inovasyonla kalınız.

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

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

Yararlanılan Kaynaklar

Öne çıkan

Girişimcilik Eğitimlerinde Ne Durumdayız?

Küçük ve Orta Ölçekli İşletmeleri Geliştirme ve Destekleme İdaresi Başkanlığı (KOSGEB) tarafından 24 Temmuz 2019’da uygulamaya aldığı girişimcilik eğitimlerinin değerlendirilmesi amacıyla eğitim sonunda girişimcilerin katılım sağladığı “Girişimcilik Eğitimi Memnuniyet Anketi” gerçekleştirilmiştir. 2020 yılı temmuz sonu itibarıyla yaklaşık 72 bin geleneksel ve 28 bin ileri girişimcilik eğitimi alan katılımcı üzerinde gerçekleştirilen anketten öne çıkan bulgular şöyledir:

  • Katılımcıların yaklaşık 3’te 2’si 1 yıldan az sürede kendi işini kurmayı planladığını belirtmiştir.
  • Girişimcilik eğitimlerinden yüzde 90’ın üzerinde memnuniyet sağlandığı gözlemlenmiştir.
  • KOSGEB’in geleneksel girişimcilik eğitimi alanların yüzde 64’ü, ileri girişimcilik eğitimi alanlarınsa yüzde 65’i 1 yıldan az sürede kendi işini kurmayı planladığını bildirmiştir.
  • Eğitime katılanların 3’te 2’si erkek girişimci adayı olmasına rağmen, eğitimden sonra işletme kuran ve başvuru yaparak KOSGEB girişimcilik desteklerinden faydalananlarda kadınların oranı yüzde 48 olarak gerçekleşmiştir. Bu bulgu kendi işini kurmak isteyen kadın girişimci adaylarının erkek adaylara göre iş fikrini uygulamaya dönüştürme konusunda daha başarılı ve motivasyon sahibi olduğunu göstermektedir.
  • Türkiye’de 15-24 yaş genç nüfus oranı yüzde 25,3 olmasına rağmen, KOSGEB’in geleneksel girişimcilik eğitimini alanların yüzde 35’i ve ileri girişimcilik eğitimini alanların yüzde 30’unun bu yaş gurubundan oluştuğu gözlenmiştir.
  • Türkiye’de lisans ve lisansüstü mezunlarının nüfusa oranı yüzde 15,7 iken, girişimcilik eğitimi katılımcıları arasında bu oran yüzde 37 olarak gerçekleşmiştir.
  • Geleneksel girişimcilik eğitimi alanların yüzde 64’ü, ileri girişimcilik eğitimi alanlarınsa yüzde 65’i 1 yıldan az sürede kendi işini kurmayı planladığını beyan etmiştir. Bu bulgudan eğitim katılımcılarının iş fikirlerini gerçeğe dönüştürerek girişimci olma konusundaki kararlı oldukları anlaşılmaktadır.
  • Eğitime katılanların büyük çoğunluğunun kuracağı işletmenin faaliyet konusuna karar verdiği tespit edilirken, bu katılımcıların yaklaşık yarısının imalat sektöründe faaliyet gösteren bir işletme kurmak istediği görülmüştür.
  • Memnuniyet düzeyinin ölçümü amacıyla katılımcılara yöneltilen sorulara verilen yanıtlar sonucunda, yüzde 90’ın üzerinde memnuniyet sağlandığı görülmüştür.

Farkındalık oluşturması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Yararlanılan Kaynaklar

Öne çıkan

Python’da Şans Oyunları Perspektifinden Olasılık : Probability from Perspective of the Chance Games in Python

Rastlantı ya da kesin olmayan olaylarla ilgilenen olasılık teorisi, rastlantı olaylarını belirli kurallara göre matematik disiplininde inceleyen bir bilim dalıdır. Burada, rastlantı olayından kasıt gerçekleşmesi şansa bağlı olan önceden kesin olarak bilinmeyen olaylardır. Burada olabildiğince yalın bir şekilde uygulamalı örneklerin şans oyunları üzerinden verilmesinin nedeni olasılık konusuna dikkat çekmek ve olasılık konusuyla ilgileneceklere katkıda bulunmaktır. Yoksa amaç bu oyunları oynamaya özendirmek veya teşvik emek değildir. Bunu burada özellikle ifade etmek gerekir 🙂 .

Çalışma kapsamında Python programlama dili kullanılarak şans oyunlarından biri olan 01.08.2020 tarihinde yürürlüğe giren Çılgın (🤪) Sayısal Loto kombinasyonları ve olasılıkları hesaplanarak kazanma olasılıkları karşılaştırmalı olarak verilmiştir.

Rastlantı ya da kesin olmayan olaylarla ilgilenen olasılık teorisi, rastlantı olaylarını belirli kurallara göre matematik disiplininde inceleyen bir bilim dalıdır. Burada, rastlantı olayından kasıt gerçekleşmesi şansa bağlı olan önceden bilinmeyen olaylardır.

Çılgın Sayısal Loto kazanma olasılıklarının hesaplanmasında kesikli olasılık dağılımlarından biri olan Hipergeometrik Olasılık Dağılımı (Hypergeometric Probability Distribution) kullanılmıştır.

Hypergeometrik Dağılım

Hipergeometrik dağılım basit tekrarsız tesadüfi örneklem (iadesiz örneklem) seçiminin yapıldığı denemedir. Hipergeometik dağılımın varsayımları şöyledir:

  • Her deneyin olası iki sonucu vardır.
  • Deneyin tekrarlanma sayısı (n) sabittir.
  • Deneyler birbirinden bağımsızdır.

Hipergeometrik dağılımında kullanılan parametreler Tablo 1’de verilmiştir. Eşitliklerde bir deneyde istenen sonucun ortaya çıkma olasılığı, diğer bir ifadeyle başarı olasılığı p, istenen sonucun ortaya çıkmama olasılığı ise q=1-p‘dir. Tekrarsız örnekleme söz konusu olduğu için başarı olasılığı (p) deneyden deneye farklılık göstermektedir.

Tablo 1: Hipergeometrik Dağılım Parametreleri

Hipergeometrik Olasılık Kütle Fonksiyonu (PMF)

Tablo 1’deki parametreler kullanılarak oluşturulan Hipergeometrik olasılık kütle fonksiyonu (PMF) aşağıdaki eşitlikte verilmiştir. Parantez içindeki eşitlikler tekrarsız kombinasyonları ifade etmektedir.

Eşitlikte N anakütle eleman sayısını, m popülasyondaki başarı sayısını, x örneklemdeki başarı sayısını, n örneklem hacmini göstermektedir.

Uygulama

Uygulamaya geçilmeden önce Pyhton’da yüklenmesi gereken kütüphaneleri veya modülleri aşağıda verelim. Uygulamalar Pyhton Jupyter notebook üzerinde yapılmıştır.

Yüklenmesi gereken modüller

from sympy.stats import Hypergeometric, density 

Örnek 1: Çılgın Sayısal Loto şans oyununda haznede 90 top bulunmaktadır. İçerisinden iadesiz seçilen 6 toptan sırasıyla 2, 3, 4, 5 ve 6 bilene ikramiye verilmektedir. Not: 5+1 kazanma olasılığı hesaplama dışında bırakılmıştır. 5+1 kazanma olasılığı bir sonraki örnekte hesaplanacaktır.

İstenenler

  1. Çılgın Sayısal Loto şans oyunu olasılık fonksiyonunu bulunuz.
  2. Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıklarını alternatif çözümle birlikte hesaplayınız.

Bilinenler

  • N= 90 (Anakütledeki eleman sayısı)
  • x= 2’den 6’ya kadar (dahil) (Örneklemdeki başarı sayısı)
  • m=6 (Popülasyondaki başarı sayısı)
  • n= 6 (Örneklem hacmi)

Çözüm

  1. Bilinenleri Hipergeometrik kütle olasılık fonksiyonunda yerine koyarsak Çılgın Sayısal Loto şans oyunu olasılık fonksiyonu aşağıdaki gibi olacaktır. Parantez içindeki eşitlikler tekrarsız kombinasyonları göstermektedir.

2. Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıkları aşağıda yazılan Python kod bloğunda hesaplanmıştır. Ancak burada 2’den 6’ya kadar olan tüm kazanma olasılıkları anlaşılması adına ayrı ayrı Python kod bloklarında verilmiştir. İlk olarak 6 kazanma olasılığını hesapladıktan sonra daha kolay anlaşılması için çarpmaya göre tersini verelim.

#6 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[6]
print("6 Kazanma Olasılığı=", round(1/olasilik1,3),"'da 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 6 kazanma olasılığı= 622.614.630,0’da 1 olup, aşağıda verilmiştir.

6 Kazanma Olasılığı= 622614630.0 'da 1'dir.

5 kazanma olasılığı ise aşağıdaki kod bloğunda verilmiştir.

#5 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[5]
print("5 Kazanma Olasılığı=", round(1/olasilik1,3),"'de 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 5 kazanma olasılığı= 1.235.346,488 ‘de 1 olup, aşağıda verilmiştir.

5 Kazanma Olasılığı= 1235346.488 'de 1'dir.

4 kazanma olasılığı ise aşağıdaki kod bloğunda verilmiştir.

#4 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[4]
print("4 Kazanma Olasılığı=", round(1/olasilik1,3),"'te 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 4 kazanma olasılığı= 11.906,954’te 1 olup, aşağıda verilmiştir.

4 Kazanma Olasılığı= 11906.954 'da 1'dir.

3 kazanma olasılığı ise aşağıdaki kod bloğunda verilmiştir.

#3 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[3]
print("3 Kazanma Olasılığı=", round(1/olasilik1,3),"'da 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 3 kazanma olasılığı= 326,715’te 1 olup, aşağıda verilmiştir.

3 Kazanma Olasılığı= 326.715 'te 1'dir.

2 kazanma olasılığı ise aşağıdaki kod bloğunda verilmiştir.

#2 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 6) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[2]
print("2 Kazanma Olasılığı=", round(1/olasilik1,3),"'de 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 2 kazanma olasılığı= 21,512 ‘te 1 olup, aşağıda verilmiştir.

2 Kazanma Olasılığı= 21.512 'de 1'dir.

Alternatif çözüm

Yukarıda görüleceği üzere Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıklarını yazılan Python kod bloklarında sırasıyla hesaplanmıştır. Ancak hem zamandan kazanmak hem de Hypergeometric() fonksiyonu yerine math.factorial() fonksiyonu kullanarak, diğer bir ifadeyle faktöriyelleri kullanarak daha pratik hareket edelim. Böylece çoğumuzun aşina olduğu faktöriyeller üzerinden giderek ve for döngüsü oluşturarak Hipergeometrik olasılık konusunu daha kalıcı hale getirelim. İlk olarak aşağıdaki Python kod bloğundan kütüphanemizi yükleyelim.

import math 

Şimdi Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıklarını hesaplamada for döngüsü (for loop)’nü kullandığım aşağıdaki Python kod bloğunda verelim.

N=90 #Anakütledeki eleman sayısı
n=6  #Örneklem hacmi
m=6  #Popülasyondaki başarı sayısı
x=[2,3,4,5,6] #Örneklemdeki başarı sayıları

uzunluk = len(x)

for i in range(uzunluk):
    pay1=math.factorial(m)/(math.factorial(m-x[i])*math.factorial(x[i]))
    pay2=math.factorial(N-m)/(math.factorial(N-m-n+x[i])*math.factorial(n-x[i]))
    payda=math.factorial(N)/(math.factorial(N-n)*math.factorial(n))
    sonuc=float(pay1*pay2/payda)
    print(x[i],"Kazanma Olasılığı:", f"{sonuc:.20f}","; [",round(1/sonuc,3),"'de 1'dir.","]")

Yukarıdaki kod bloğunun çalıştırılmasından sonra Çılgın Sayısal Loto şans oyununda sırasıyla 2, 3, 4, 5 ve 6 kazanma olasılıkları aşağıda verilmiştir.

2 Kazanma Olasılığı: 0.04648543995826118214 ; [ 21.512 'de 1'dir. ]
3 Kazanma Olasılığı: 0.00306076970918592144 ; [ 326.715 'de 1'dir. ]
4 Kazanma Olasılığı: 0.00008398453470327223 ; [ 11906.954 'de 1'dir. ]
5 Kazanma Olasılığı: 0.00000080948949111588 ; [ 1235346.488 'de 1'dir. ]
6 Kazanma Olasılığı: 0.00000000160612994269 ; [ 622614630.0 'de 1'dir. ]

Örnek 2: Çılgın Sayısal Loto şans oyununda haznede 90 top bulunmaktadır. İçerisinden iadesiz seçilen 7 toptan 5 + 1 bilene de ikramiye verilmektedir.

İstenenler

  1. Çılgın Sayısal Loto şans oyununda 5+1 kazanma olasılığını alternatif çözümü ile birlikte hesaplayınız ve eşitliğini bulunuz.

Bilinenler

  • N= 90 (Anakütledeki eleman sayısı)
  • x= 6 (Örneklemdeki başarı sayısı)
  • m=6 (Popülasyondaki başarı sayısı)
  • n= 7 (Örneklem hacmi)

Çözüm

  1. Çılgın Sayısal Loto şans oyununda 5 +1 kazanma olasılığı aşağıda yazılan Python kod bloğunda hesaplanmıştır.
#5+1 kazanma olasılığı
Cilgin = Hypergeometric('Cilgin', 90, 6, 7) # Çılgın Sayısal Loto
olasilik1=density(Cilgin).dict[6]
print("5+1 Kazanma Olasılığı=", round(1/olasilik1,3),"'te 1'dir.")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 5 +1 kazanma olasılığı= 88.944.947,143’te 1 olup, aşağıda verilmiştir.

5+1 Kazanma Olasılığı= 88944947.143 'te 1'dir.

Çözümü eşitlik üzerinde de göstermek de fayda var. 5 + 1 kazanma olasılığında Hipergeometrik olasılık eşitliğimiz çözümü ile birlikte şöyle olacaktır:

Eşitlikte hesaplanan olasılık değeri kolay ifade edilebilsin diye çarpmaya göre tersi alınmıştır.

Alternatif çözüm

Yukarıda biz Çılgın Sayısal Loto şans oyununda 5 +1 kazanma olasılığını Hypergeometric() fonksiyonu kullanarak hesaplamıştık. Şimdi math.factorial() fonksiyonu kullanarak, diğer bir ifadeyle çoğumuzun aşina olduğu faktöriyelleri kullanarak 5 + 1 kazanma olasılığını aşağıda yazdığım Python kod bloğunda hesaplayalım. Bir önceki alternatif çözümde kütüphane yüklendiği için burada ayrıca yüklenecek kütüphane adı verilmemiştir.

#5 + 1 Kazanma olasılığı
N=90 #Anakütledeki eleman sayısı
n=7  #Örneklem hacmi
m=6  #Popülasyondaki başarı sayısı
x=6  #Örneklemdeki başarı sayısı

pay1=math.factorial(m)/(math.factorial(m-x)*math.factorial(x))
pay2=math.factorial(N-m)/(math.factorial(N-m-n+x)*math.factorial(n-x))
payda=math.factorial(N)/(math.factorial(N-n)*math.factorial(n))
sonuc=float(pay1*pay2/payda)
print("5 + 1 Kazanma Olasılığı:", f"{sonuc:.20f}","; [",round(1/sonuc,3),"'te 1'dir.","]")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 5 +1 kazanma olasılığı aşağıda verilmiştir.

5 + 1 Kazanma Olasılığı: 0.00000001124290959883 ; [ 88944947.143 'te 1'dir. ]

Özetle kesikli olasılık dağılımlarından biri olan Hipergeometrik olasılık dağılımı kullanılarak hesaplanan Çılgın Sayısal Loto ikramiye kazanma olasılıkları kategorilere göre aşağıda verilmiştir. Ortaya konulan bulgulara göre 90 sayı içerisinde;

  • 6 bilme şansınız 622.614.630,0’da 1’dir.
  • 5 +1 bilme şansınız 88.944.947,143’te 1’dir.
  • 5 bilme şansınız 1.235.346,488 ‘de 1’dir.
  • 4 bilme şansınız 11.906,954’te 1’dir.
  • 3 bilme şansınız 326,715’te 1’dir.
  • 2 bilme şansınız 21,51’te 1’dir.

Ortaya konulan araştırma bulguları Çılgın Sayısal Loto kazanma olasılıklarının Sayısal Loto kazanma olasılıklarından çok daha düşük olduğunu göstermektedir. Aşağıdaki linkten yaptığım çalışmada karşılaştırma sonuçlara ulaşabilirsiniz.

Şans Oyunları Perspektifinden Olasılık

Sonuç olarak Python’da yapılan bu çalışmayla olasılık teorisindeki kesikli olasılık dağılımlarından biri olan Hipergeometrik olasılık dağılımı kullanılarak şans oyunları özelinde olasılık teorisine dikkat çekilmeye çalışılmıştır.

Yukarıda yapılan işlemler R programlama dili kullanarak geliştirdiğim shiny web uygulamam üzerinde de hesaplanabilir. Linki aşağıda paylaşıyorum.

Hipergeometrik Olasılık Hesaplayıcı. 01.09.2020. https://buluttevfik.shinyapps.io/HypergeometricProbabilityCalculator/

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

Bilimle ve teknolojiyle kalınız.

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

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

Yararlanılan Kaynaklar

Öne çıkan

Pyhton’da Eşitliklerin Yazılması ve Çözümü Üzerine Bir Vaka Çalışması: A Case Study on Writing and Solving Equations in Python

Bilindiği üzere matematiksel ifadeleri göstermek için, diğer bir ifadeyle matematik diliyle konuşabilmek için yaygın bir şekilde matematik sembollerinden yararlanırız. Bu çalışmada Python’da matematik sembollerinin yazımı, basit, birinci, ikinci, üçüncü ve dördüncü dereceden eşitliklerin çözümü üzerine olabildiğince yalın bir dille uygulamalar yaparak konu alanında farkındalık oluşturmak istedim.

İlk olarak matematiksel ifadelerin ve denklerim oluşturulmasına, ardından ise eşitliklerin çözümü üzerine uygulamalara yer verilecektir. Uygulamaları Python programlama dili kullanarak Jupiter Notebook’ları üzerinde yaptım.

Matematiksel ifadeler Oluşturma ve Denklem Yazımı

İfadeler ve denklem yazımında başına # simgesi ilave ederek ile yorumlara yer verilmiş olup, yorumlar aşağıda yazılan Python kod bloklarının içerinde sunulmuştur.

Yüklenecek kütüphaneler (modüller)

from sympy import symbols
#yada 
from sympy import * # bu ifade ile sympy modülü ile birlikte bu modülle bağlantılı tüm modülleri yüklemiş oluyoruz. Aslında bu ifadeyi yazmak daha efektif görünüyor.
from sympy.solvers import solve #problem çözümleri için
#toplam (sigma) ve faktöriyeller için
from sympy.abc import i, k, m, n, x
from sympy import Sum, factorial, oo, IndexedBase, Function

Şimdi basit ifadelerle başlayabiliriz. Aşağıda yazılan kod bloğunda ilk olarak semboller tanımlanmıştır.

x, y = symbols('x y')
x, y

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde sonuç aşağıda verilmiştir.

(𝑥, 𝑦)

Şimdi yukarıdaki tanımladığımız sembolleri aşağıdaki kod bloğunda ifade olarak belirleyelim.

cozum = 7*x + 4*y
cozum

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde sonuç aşağıda verilmiştir.

7𝑥+4𝑦

Şimdi oluşturduğumuz ifadede aşağıda yazılan kod bloğunda .subs eklenti komutu ile x yerine 5’i koyalım. Aslında burada denklemde şunu yapmak istiyoruz: 7(5) + 4y = 4y + 35 . Eğer burada cozum.subs(y, 5) olsaydı y’nin yerine 5’i alarak 4 ile çarpacaktır.

cozum.subs(x, 5)#x'in yerine 5'in koyulması

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde sonuç aşağıda verilmiştir.

4𝑦+35

Denklem oluşturmada sembolleri genişleterek eşitlikler oluşturabiliriz. Burada bir sınırlama bulunmamaktadır. Aşağıda yazılan kod bloğunda bunu açıkça görebilirsiniz.

x, y, z, t, u = symbols('x y z, t, u')
( x**3 - x*y + 3*x + 2*t + u )/y**5 

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen eşitlik aşağıda verilmiştir.

Şimdi yapılan işi biraz zorlaştırarak bir üst level’a 🙂 çıkalım. Sembollerimiz burada x, y, z, t olsun. Oluşturduğumuz denklemiz ise 6x + 5y – 10z + 3t‘tir. Aşağıda yazılan kod bloğunda yazılan ifade.subs(y, 3*x**2 + z**(-6)) ile denklemimizde 6x + 5(3𝑥2) + 5(1/z6) – 10z + 3t =3𝑡+15𝑥2+6𝑥−10𝑧+5/𝑧6 ifadesini elde etmek istiyoruz.

x, y, z, t = symbols('x y z t')#sembollerimiz
ifade = 6*x + 5*y -10*z + 3*t #denklemimiz
ifade1 = ifade.subs(y, 3*x**2 + z**(-6))
ifade1

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde sonuç aşağıda verilmiştir.

Eğer ifadeleri kök içerisinde verecek olursak şöyle yazmamız gerekirdi. Bu durumda sadece sqrt() fonksiyonunu kullanmamız gerekecekti aşağıda görüleceği üzere..

x, y, z, t = symbols('x y z t')
ifade = 6*x + 5*y -10*z + 3*t
ifade1 = ifade.subs(y, 3*x**2 + z**(-6))
sqrt(ifade1)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen eşitlik aşağıda verilmiştir.

Aşağıda yazdığım kod bloğu ile matris de oluşturalım. Yapılan örnekte 2×4 düzeninde bir matris oluşturulmuştur.

init_printing(use_unicode=True)

Matrix([[0, -8], [x, y], [5, 10], [0, -8]])

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 4×2 düzeninde, yani 4 satır ve 2 sütundan oluşan matris aşağıda verilmiştir.

Alternatif olarak daha yüksek düzenlerde daha kolay matris de üretebiliriz. Aşağıda yazılan kod bloğunda 6×5 (6 satır, 5 sütun) düzeninde matris üretilmiştir.

k = MatrixSymbol('k', 6, 5)#6x5 düzeninde
Matrix(k)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 6×5 düzeninde matris aşağıda verilmiştir.

Şimdi de kare düzeninde iki matris oluşturarak çarpımını verelim.

k = MatrixSymbol('k', 3, 3)#3x3 düzeninde
l = MatrixSymbol('l', 3, 3)#3x3 düzeninde
ifade=k*l
Matrix(ifade)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen matris çarpım düzeni aşağıda verilmiştir.

Oluşturulan 3×3 düzenindeki matrislerin çarpımı verildikten sonra şimdi de transpozunu alalım. Eşitlikte kullanılan T (transposition) parametresi transpozu göstermektedir. Burada k matrisinin transpozu alınmış ardından l matrisi ile çarpılmıştır.

k = MatrixSymbol('k', 3, 3)#3x3 düzeninde
l = MatrixSymbol('l', 3, 3)#3x3 düzeninde
ifade=(k.T)*l#Burada T parametresi matrisin tranpozunu göstermektedir.
Matrix(ifade)

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen yeni matris düzeni aşağıda verilmiştir.

Şimdi ise sigma (∑) semboli, yani toplam sembolünü kullanarak iadeler üretelim.

Sum(k, (k, 1, m))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen ifade aşağıda verilmiştir. Burada aslında oluşturulan ifade ile açmak gerekirse 1 + 2 + 3 + 4 + 5,…,m = mx(m+1)/2‘yi göstermiş oluyoruz.

Eğer toplam sembolinde k’tan artı sonsuz (∞)‘a giden bir toplama işlemi yapacaksak bu durumda Sum(k, (k, 1, m)) ifadesinde m yerine oo yazıyoruz.

Sum(x**k, (k, 0, oo))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen ifade aşağıda verilmiştir.

Sonlu bir m katsayısı üzerinden giderek örnek bir uygulama yapalım çözümüyle birlikte. 1’den 10’a kadar (10 dahil) sayılarının toplamını hesaplayalım. Bu işlemi Sum(k, (k, 1, 10)) fonksiyonunun sonuna .doit().evalf() bileşenlerini ilave ederek yapıyoruz.

Sum(k, (k, 1, 10)).doit().evalf()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen sonuç 55’tir.

Matematiksel Basit Eşitliklerin Çözümü

Bu kısımda basit eşitliklerin yazımı ile birlikte çözümünü hep birlikte ele alacağız.

İlk olarak 9𝑥+93=0 eşitliğini oluşturarak çözüm kümesini bulalım.

x= symbols('x ')
esitlik = Eq(9*x - 27 + 120)#9𝑥+93=0
cozum = solve((esitlik),(x))
cozum#[-31/3]

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denkleme (eşitliğe) ait elde edilen çözüm kümesi aşağıda verilmiştir..

[-31/3]

Aynı çözüme aşağıda yazılan kod bloğu ile de ulaşılabilir, belirtmekte fayda var.

x= Symbol('x')
cozum = solve(9*x - 27 + 120,x)
cozum#[-31/3]

Şimdi de birinci dereceden iki denklem oluşturup sonuçlarını print() edelim. İlk denklemimiz 2𝑥−4𝑦+7=0, ikinci denklemimiz 𝑥+𝑦−5=0 olsun. Bu iki eşitlikte x ve y’nin çözüm kümelerini bulalım.

x, y = symbols('x y')
e1 = Eq(2*x - 4*y + 7)
e2 = Eq(x + y - 5)
cozum = solve((e1, e2),(x, y))
print(f'Denklemin çözümünde x = {cozum[x]}, y = {cozum[y]}')

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denklemlerin çözüm kümesi aşağıda verilmiştir.

Denklemin çözümünde x = 13/6, y = 17/6

Şimdi de üç denklem oluşturup bunların çözüm kümesini bulalım. İlk denklemimiz 2𝑥−4𝑦+9𝑧+7=0, ikinci denklemimiz 𝑥+𝑦+3𝑧−5=0, üçüncü denklemimiz ise 4𝑧+10=0 olsun. Bu üç eşitlikte x, y ve z ‘nin çözüm kümelerini bulalım.

x, y, z = symbols('x y z')
e1 = Eq(2*x - 4*y + 9*z + 7)#2𝑥−4𝑦+9𝑧+7
e2 = Eq(x + y - 5 + 3*z)#𝑥+𝑦+3𝑧−5=0
e3 = Eq(10 + 4*z)#4𝑧+10

cozum = solve((e1, e2, e3),(x, y, z))

print(f'Denklemin çözümünde x = {cozum[x]}, y = {cozum[y]}, z = {cozum[z]}')

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denklemlerin çözüm kümesi aşağıda verilmiştir. Denklemin çözümünde x = 131/12, y = 19/12, z = -5/2’dir.

Denklemin çözümünde x = 131/12, y = 19/12, z = -5/2

İkinci, Üçüncü ve Dördüncü Dereceden Denklemlerin Çözümü

Bu kısımda 2., 3., ve 4. derece eşitliklerin çözümü üzerine uygulamalar yapılmıştır. 2. dereceden bir eşitlik oluşturarak ilk örneğimizi yapalım. Eşitliğimiz 𝑥2−25 = 0 olsun. Burada denklemin çözüm kümesini bulalım..

x = Symbol('x')
solve(x**2 - 25, x)

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denkleme ilişkin çözüm kümesi [−5, 5] olup aşağıda verilmiştir.

[−5, 5]

Şimdi de 3. derece bir denklem oluşturup onun köklerine bakalım. Eşitliğimiz 𝑥3−𝑥2−625 = 0 olsun. Burada denklemin çözüm kümesini bulalım.

x = Symbol('x')
solve(x**3 - x**2 - 625, x)

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denkleme ilişkin çözüm kümesi aşağıda verilmiştir.

Son olarak 4. derece bir denklem oluşturalım ve bunun çözümü biraz daha kolay olsun :). Eşitliğimiz 𝑥4−1024 = 0′dır. Burada denklemin çözüm kümesini bulalım.

x = Symbol('x')
solve(x**4  - 1024, x)

Yukarıdaki kod bloğunun çalıştırılmasından sonra kurulan denkleme ilişkin çözüm kümesi aşağıda verilmiştir..

Özetle Python’da yapılan çalışmayla birinci, ikinci, üçüncü ve dördüncü dereceden eşitliklerin yazımı ve çözümü üzerine uygulamalar yaparak konu alanında farkındalık oluşturulması amaçlanmıştır. Eşitliklerin Python programlama dilinde yazılması R programlama dilinden daha kolay olduğunu söyleyebilirim, denemesi bedava 🙂 .

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

Öne çıkan

Şans Oyunları Perspektifinden Olasılık III: Probability from Perspective of the Chance Games III

Rastlantı ya da kesin olmayan olaylarla ilgilenen olasılık teorisi, rastlantı olaylarını belirli kurallara göre matematik disiplininde inceleyen bir bilim dalıdır. Burada, rastlantı olayından kasıt gerçekleşmesi şansa bağlı olan önceden bilinmeyen olaylardır. Burada olabildiğince yalın bir şekilde uygulamalı örneklerin şans oyunları üzerinden verilmesinin nedeni olasılık konusuna dikkat çekmek ve olasılık konusuyla ilgileneceklere katkıda bulunmaktır. Yoksa amaç bu oyunları oynamaya özendirmek veya teşvik emek değildir. Bunu burada özellikle ifade etmek gerekir.

Çalışma kapsamında R programlama dili ve Microsoft Office Excel kullanılarak şans oyunlarından biri olan 10 Numara kombinasyonları ve olasılıkları hesaplanarak kazanma olasılıkları karşılaştırmalı olarak verilmiştir.

Rastlantı ya da kesin olmayan olaylarla ilgilenen olasılık teorisi, rastlantı olaylarını belirli kurallara göre matematik disiplininde inceleyen bir bilim dalıdır. Burada, rastlantı olayından kasıt gerçekleşmesi şansa bağlı olan önceden bilinmeyen olaylardır.

10 Numara kazanma olasılıklarının hesaplanmasında kesikli olasılık dağılımlarından biri ola Hipergeometrik Olasılık Dağılımı (Hypergeometric Probability Distribution) kullanılmıştır.

Hypergeometrik Dağılım

Hipergeometrik dağılım basit tekrarsız tesadüfi örneklem (iadesiz örneklem) seçiminin yapıldığı denemedir. Hipergeometik dağılımın varsayımları şöyledir:

  • Her deneyin olası iki sonucu vardır.
  • Deneyin tekrarlanma sayısı (n) sabittir.
  • Deneyler birbirinden bağımsızdır.

Hipergeometrik dağılımında kullanılan parametreler Tablo 1’de verilmiştir. Eşitliklerde bir deneyde istenen sonucun ortaya çıkma olasılığı, diğer bir ifadeyle başarı olasılığı p, istenen sonucun ortaya çıkmama olasılığı ise q=1-p‘dir. Tekrarsız örnekleme söz konusu olduğu için başarı olasılığı (p) deneyden deneye farklılık göstermektedir.

Tablo 1: Hipergeometrik Dağılım Parametreleri

Hipergeometrik Olasılık Kütle Fonksiyonu (PMF)

Tablo 1’deki parametreler kullanılarak oluşturulan Hipergeometrik olasılık kütle fonksiyonu (PMF) aşağıdaki eşitlikte verilmiştir. Parantez içindeki eşitlikler tekrarsız kombinasyonları ifade etmektedir.

Eşitlikte N anakütle eleman sayısını, m popülasyondaki başarı sayısını, x örneklemdeki başarı sayısını, n örneklem hacmini göstermektedir.

Örnek Uygulamalar

Örnek uygulamalara geçilmeden önce R’da yüklenmesi gereken kütüphaneleri aşağıda verelim. Daha önce aşağıdaki kütüphaneler kurulmamışsa lütfen kurunuz. R studio’yu sıklıkla kullandığım için gerek arayüzünün kullanım kolaylığı gerekse verimli olması açısından R konsol yerine R Studio arayüzünün kullanılması önerilmektedir. Eğer R yüklü değilse yapılan bu işlemleri bulutta yer alan R programlama yazılımını da kullanarak yapabilir ve R Studio arayüzünden bu platform üzerinden yararlanabilirsiniz. Sıklıkla bulut üzerindeki R Studio’yu da şahsen kullanmaktayım. Aşağıda linkten buluta giriş sağlayabilirsiniz. Sıklıkla

RStudio Cloud: https://login.rstudio.cloud/

gereklikütüphaneler<-sapply(c("dplyr","tibble","tidyr","ggplot2","formattable","ggthemes","readr","readxl","xlsx","ggpubr","formattable", "ggstance","vcd"), require, character.only = TRUE)
gereklikütüphaneler

Örnek: 10 Numara şans oyununda haznede 80 top bulunmaktadır. İçerisinden iadesiz seçilen 22 toptan sırasıyla hiç bilmeyene (0 bilen), 6, 7, 8, 9 ve 10 bilene ikramiye verilmektedir.

İstenenler

  1. 10 Numara şans oyunu olasılık fonksiyonunu bulunuz.
  2. 10 Numara şans oyununda sırasıyla hiç bilmeme (0 bilme), 6, 7, 8, 9 ve 10 olasılıklarını sırasıyla hesaplayınız.

Bilinenler

  • N= 80 (Anakütledeki eleman sayısı)
  • x=0 ve 6’dan 10’a kadar (dahil) (Örneklemdeki başarı sayısı)
  • m=10 (Popülasyondaki başarı sayısı)
  • n= 22 (Örneklem hacmi)

Çözüm

  1. Bilinenleri Hipergeometrik kütle olasılık fonksiyonunda yerine koyarsak 10 Numara şans oyunu olasılık fonksiyonu aşağıdaki gibi olacaktır. Parantez içindeki eşitlikler tekrarsız kombinasyonları göstermektedir.

2. 10 numara şans oyununda sırasıyla hiç bilmeme (0 bilme), 6, 7, 8, 9 ve 10 olasılıkları aşağıda yazılan R kod bloğunda hesaplanmıştır.

#bilinenler
N=80#Anakütledeki eleman sayısı (N) 80'dir.
x=c(0, 6:10)#Örneklemdeki başarı sayısı (x) 0 ve 6'dan 10'a kadar (dahil). Burada kazanma olasılıklarının vektör içerisinde tanımlanmasının nedeni aşağıda for döngüsü işlevi görmesinin sağlanarak birden fazla olasılık fonksiyonu yazılmamak istenmemesidir. Böylece işlem süresi kısaltılmış ve işlem yükü de azaltılmıştır.
m=10#Popülasyondaki başarı sayısı (m) 10'dur.
n=22#Örneklem hacmi (n) 22'dir.

#Tablo oluşturma
tablo<-tibble(Kategori=c("Sıfır", "Altı", "Yedi", "Sekiz", "Dokuz", "On"),Kazanma_Olasılığı=as.numeric(choose(m,x)*choose(N-m,n-x)/choose(N,n))) %>% mutate(Tersine_Olasılık=1/Kazanma_Olasılığı) %>% mutate_if(is.numeric, round, 10) 
tablo
#formatlanmış tablo
formattable(tablo,
            align =rep("r",3), 
            list(formatter(
              "span", style = ~ style(color = "grey",font.weight = "bold")),
`Kazanma_Olasılığı` = color_bar("#FA614B"),
`Tersine_Olasılık` = color_bar("#B0C4DE")
))

Yukarıdaki R kod bloğunun çalıştırılmasından sonra 10 Numara şans oyununda sırasıyla hiç bilmeme (0 bilme), 6, 7, 8, 9 ve 10 olasılıkları aşağıdaki tabloda verilmiştir. Aynı zamanda daha kolay anlayabilmeniz için hesaplanan olasılıkların çarpmaya göre tersi (1/Olasılık) alınmış ve tabloya yansıtılmıştır. Ortaya konulan bulgulara göre 10 numara şans oyununda

  • Hiç bilmediğinizde kazanma olasılığınız yaklaşık 31,55’te 1’dir.
  • 6 bildiğinizde kazanma olasılığınız yaklaşık 52,01’de 1’dir.
  • 7 bildiğinizde kazanma olasılığınız yaklaşık 312,88’de 1’dir.
  • 8 bildiğinizde kazanma olasılığınız yaklaşık 3.114,94’te 1’dir.
  • 9 bildiğinizde kazanma olasılığınız yaklaşık 57.070,07’de 1’dir.
  • 10 bildiğinizde kazanma olasılığınız yaklaşık 2.546.203,19’da 1’dir.

Yukarıda R’da hesapladığım 10 Numara kazanma olasılıklarını aynı zamanda aşağıda R’da yazdığım for döngüsü kullanarak da yapabiliriz.

N=80#Anakütledeki eleman sayısı (N) 80'dir.
x=c(0, 6:10)#Örneklemdeki başarı sayısı (x) 0 ve 6'dan 10'a kadar (dahil)
m=10#Popülasyondaki başarı sayısı (m) 10'dur.
n=22#Örneklem hacmi (n) 22'dir.

for (i in seq_along(x)) {
  x[i] <-choose(m,x[i])*choose(N-m,n-x[i])/choose(N,n)
  x[i]<-1/x[i]
}
print(paste(c(0, 6:10),"kazanma olasılığı:", round(x,5),"'de 1'dir."))

Yukarıdaki R kod bloğunun çalıştırılmasından sonra elde edilen 10 Numara kazanma olasılıkları kazanma kategorilerine göre aşağıda verilmiştir.

[1] "0 kazanma olasılığı: 31.5544 'de 1'dir."       
[2] "6 kazanma olasılığı: 52.01191 'de 1'dir."      
[3] "7 kazanma olasılığı: 312.88416 'de 1'dir."     
[4] "8 kazanma olasılığı: 3114.93568 'de 1'dir."    
[5] "9 kazanma olasılığı: 57070.07157 'de 1'dir."   
[6] "10 kazanma olasılığı: 2546203.19328 'de 1'dir."

Yukarıda hesaplanan 10 numara şans oyununda sırasıyla hiç bilmeme (0 bilme), 6, 7, 8, 9 ve 10 olasılıkları R bilmeyenler için ayrıca Microsoft Office Excel ortamında da hesaplanmıştır. Excel ortamında ilk olarak bilinenler tablosunu aşağıda verelim.

Yukarıdaki bilinenler tablosuna göre excel ortamında hesaplanan 10 Numara şans oyunu kazanma olasılıkları kategorilere göre aşağıda verilmiştir.

Şimdi yapılan bu işlemleri excel ortamında kullanılan fonksiyonları da görebilmeniz adına aşağıda xlsx formatında paylaşıyorum.

Özetle R’da ve Microsoft Excel’de yapılan bu çalışmayla olasılık teorisinde yer alan Hipergeometrik olasılık dağılımı kullanılarak şans oyunları özelinde olasılık teorisine dikkat çekilmeye çalışılmıştır.

Daha önce Şans oyunları özelinde örnek uygulama yaptığım çalışmaların linklerini de aşağıda paylaşıyorum ilgilenenler için.

Şans Oyunları Perspektifinden Olasılık

Şans Oyunları Perspektifinden Olasılık II

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