Intro
Within the scope of the study, BI method, which was developed as a multi-criteria decision-making (MCDM) method, is shown to be used in R by writing the function in R. Also, it is aimed to reinforce the method by showing the use of the function on the practical example.
Giriş
Bulut Endeksi (BE) hakemli bir dergi olan Verimlilik Dergisi’nin 2017 yılı 3. sayısında yayınlanmıştır. Yöntemin daha iyi anlaşılması adına yayınlanmış makaleyle birlikte değerlendirilmesi önem arz etmektedir. Makaleyi indirmek için buraya tıklayınız: BE Yöntemi
Çalışma kapsamında çok kriterli karar verme yöntemi olarak geliştirilmiş olan Bulut Endeksi (BE) metodunun R‘da fonksiyonu yazılarak R’da kullanımı gösterilmiştir. Uygulamalı örnek üzerinde de fonksiyonun kullanımı gösterilerek yöntemin pekiştirilmesi amaçlanmıştır. R programlama dili kullanılarak Bulut Endeksi (BE)’nin fonskiyonunun oluşturulmasının nedeni, büyük veri setlerinde ayrı ayrı işleme gerek kalmaksızın çok kriterli karar verme problemlerine anlık çözümler üretebilmektir. Oluşturulan BE, ingilizce ifadeyle BI fonksiyonunda endeksin 1. aşamasına ilişkin sonuçlar elde edilmektedir. Bu sonuçlar Microsoft Excel çalışma kitabına xlsx uzantılı olarak yazdırılmaktadır. Bu sayede karar verici, 1. seviyede endeksin bütün aşamalarına ilişkin sonuçlarına ulaşarak, üzerinde düzenleme yaparak raporuna veya makalesine koyabilmektedir. Karar verici dilerse seviye 1’in bulgularından hareketle seviye 2 ve seviye 3 sonuçlarını hesaplayarak derinlemesine içgörü elde edebilir. Bu tamamen karar vericiye ve karar probleminin doğasına bağlıdır. Aşağıda açık kaynak kodlarını paylaştığım R kod bloklarını R Markdown üzerinde çalıştırarak anlık çözümler üretebilirsiniz. Burada R Markdown ve karar matrisinizi içeren xlsx uzantılı Microsoft Excel çalışma kitabı aynı klasör içerisinde olursa doğrudan fonksiyonu çalıştırarak bulguları elde edebilirsiniz.
R programlama dili bilmeyenlerin için ise Microsoft Excel üzerinde hazırlamış olduğum simülasyona ise Bulut Endeksi Simülasyonu linkinden ulaşabilirsiniz.
Endeks Metodolojisi
Bu kısımda endeksin uygulama adımlarına, R’da oluşturulmuş fonksiyonuna, fonksiyon ile örnek uygulamaya ve kullanım alanlarına yer verilmiştir.
Teorik Çerçeve
Endeksin uygulama adımları Şekil 1’de gösterilmiştir.

Şekil 1. BE Akış Diyagramı
Kaynak: Top ve Bulut, 2022
R’da Bulut Endeksi (BE) Fonksiyonu
Bu kısımda ilk olarak R fonksiyonunun çalıştırılması, elde edilen bulguların görselleştirilmesi ve Microsoft Excele xlsx uzantılı olarak yazdırılması için gerekli kütüphaneler verilmiştir.
Yüklenen Kütüphaneler
kütüphane<-c("dplyr","tibble","tidyr","ggplot2","ggthemes", "kableExtra", "forcats", "readxl", "openxlsx")
yükle<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE)
#Kütüphane yüklenme durumunu gösteren tablo
tibble(Sıra=1:length(kütüphane), Kütüphane=names(yükle), Durumu=as.logical(yükle)) %>%
mutate(Durumu=if_else(Durumu==TRUE, "Yüklendi", "Paket Kurulumu Gerekli")) %>%
kbl() %>%
kable_minimal()
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 kodu yazdım. Yukarı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 hepsi yüklenmiştir. Bu durumda aşağıdaki tabloda Yüklendi ifadesi gelecektir. Eğer ilgili kütüphane yüklenmemiş olursa “Paket Kurulumu Gerekli” ifadesi satırda yazacaktır.
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen kütüphane yüklenme durumunu gösteren tablo aşağıda verilmiştir.

Bulut Endeksi (BE) Fonksiyonu
Aşağıda yazılan kod bloğu ile BE (bi) fonksiyonu oluşturulmuştur. bi(km=km, ky=ky, ka=ka) fonksiyonunda km, karar matrisini, ky, kriterin yönünü (maksimum veya minimum olmasını), ka ise kriter ağırlıklarını göstermektedir.
bi = function(km=as.matrix(km), ky=ky, ka=ka){
colnames(km)=paste("A", 1:ncol(km), sep="") #alternatifler
rownames(km)=paste("K", 1:nrow(km), sep="") #kriterler
#karar matrisinin oluşturulması
km2 <-km
ky1=ifelse(ky=="max", 1, 0)
ky2=ky1
#2. aşama
for (r in 1:nrow(km))
for (c in 1:ncol(km))
if (ky1[r]==1)
{
km2[r,c] <- km[r,c]-apply(km[r,], 1, max)
} else
{
km2[r,c] <- apply(km[r,], 1, min)-km[r,c]
}
rownames(km2)=paste("K", 1:nrow(km), sep="") #kriterler
#3. aşama
ort=apply(km2,1,mean) # 3. aşama
ss=apply(km2,1,sd) # 3. aşama
nd=(km2-ort)/ss # 3. aşama
#4. aşama
md=nd+abs(apply(nd, 1, min))
m_new<-md
#5. aşama
for (i in 1:nrow(md))
if (ky2[i] == 0)
{
o <- order(md[i,], decreasing = T)
r <- order(md[i,], decreasing = F)
m_new[i,o] <- md[i,r]
}
else
{
md
}
rownames(m_new)=paste("K", 1:nrow(md), sep="") #kriterler
#5. aşama
wdm=as.matrix(m_new*ka) #ağırlıklandırılmış karar matrisi
erd=as.matrix(apply(wdm, 1, max))
rownames(erd)=paste("K", 1:nrow(km), sep="")
colnames(erd)=paste("Endeks Referans Değerleri")
sis=as.matrix(apply(wdm,2, sum))
colnames(sis)=c("Sınıf İçi Skor")
be=as.matrix((sis/sum(erd))*100)
k=as.matrix(be[order(be[,1],decreasing=T),])
sira=as.matrix(1:nrow(be))
be=as.matrix(cbind(k, sira))
colnames(be)=c("BE", "Sıra")
liste=list(Karar_Matrisi=as.matrix(km), Asama_2=as.matrix(km2), Asama_3=as.matrix(nd), Asama_4=as.matrix(md),Asama_5=as.matrix(m_new), ERD=erd, Sınıf_Skoru=sis, Bulut_Endeksi=be)
return(liste)
}
bi(km=km, ky=ky, ka=ka)
Sonuçların xlsx Uzantılı Microsoft Excel Çalışma Kitabına Yazdırılması
Örnek uygulamada kullanılan karar matrisini indirmek için aşağıdaki linke tıklayınız.
Uygulamada kullanılan karar matrisi (km) aşağıdaki tabloda da verilmiştir. Tablonun satırları kriterleri, sütunları ise kriterleri göstermektedir. Diğer bir ifadeyle, karar matrisimiz 9×5 (9 kriter ve 5 alternatif) boyutludur.
Tablo 1: Karar Matrisi (KM)

Aşağıda yazılan kod bloğunda 9 kritere ait belirlenen yön ise şöyledir:
ky <- c(“min”,”max”,rep(“min”,4),rep(“max”,3)) vektörü çalıştırıldığında kriter yönleri sırasıyla Tablo 2’de verilmiştir:
Tablo 2: Kriterlerin Yönleri

Burada kriter yönleri karar verici tarafından belirlenmelidir. bi fonksiyonunda kullanılmak üzere belirlenen kriter ağırlıkları (ka) eşit olarak alınmıştır. Karar verici dilerse farklı kriter ağırlıklarını kriter sayısına göre ka <- c() vektörü içerisinde tanımlayabilir. ka <- c(rep(1/nrow(km), nrow(km))) vektörü çalıştırıldığında elde edilen sonuçlar Tablo 3’te verilmiştir.
Tablo 3: Kriter Ağırlıkları

Aşağıda yazılan kod bloğu ile sonuçlar xlsx uzantılı Microsoft Excel çalışma kitabına yazıdırılmıştır. Kod bloğunda ilk olarak karar matrisi (km) tanımlanmıştır. Ardından kriterlerin yönü (maksimum mu minimum mu) ve kriter ağırlıkları (ka) vektör olarak tanımlanmıştır. y=bi(km=km, ky=ky, ka=ka) eşitliğinde y bi() fonksiyonunda elde edilen çıktıları göstermektedir. Çıktılar liste formatında R Markdown üzerinde de görülmektedir. Ancak çıktıların xlsx uzantılı Microsoft Excel’e yazdırılması daha fonksiyonel ve daha yararlı gözükmektedir. Çünkü doğrudan çıktıları alıp işleyebilirsiniz. Örneğin aşağıdaki kod bloğunda y$Karar_Matrisi yazılması Bulut Endeksi’nde kullanılan karar matrisini getir anlamı taşımaktadır. y$ şeklinde yazıldığında aşağıdaki Bulut Endeksi çıktı listesi gözükecektir. Bunlardan birini seçtiğinizde size o liste bileşeni gelecektir. Ancak bunlara tek tek bakmak yerine zaten bütün aşamalar xlsx uzantılı çalışma kitabına yazdırılmaktadır.

km <- read_excel("km.xlsx") # Karar matrisi veri seti
ky <- c("min","max",rep("min",4),rep("max",3)) #kriterlerin yönü
ka <- c(rep(1/nrow(km), nrow(km))) #Kriter ağırlıkları burada eşit alınmıştır.
y=bi(km=km, ky=ky, ka=ka)
cikti <- list('Karar Matrisi' = y$Karar_Matrisi, '2. Aşama Matrisi' = y$Asama_2, '3.Aşama Matrisi' = y$Asama_3, '4.Aşama Matrisi' = y$Asama_4,'Endeks Referans Değerleri' = y$ERD,'Sınıf İçi Skor' = y$Sınıf_Skoru,'Bulut Endeks' = y$Bulut_Endeksi)
baslik_stili <- createStyle(
textDecoration = "BOLD", fontColour = "#FFFFFF", fontSize = 12,
fontName = "Arial Narrow", fgFill = "#4F80BD", halign = "center")
#elde edilen sonuçları "sonuçlar.xlsx" excel çalışma kitabına yazdırılması
write.xlsx(cikti, file = 'bi_sonuclar.xlsx', asTable = FALSE, overwrite = TRUE, rowNames = TRUE, borders = "rows", headerStyle = baslik_stili, colWidths="auto", Widths="auto")
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen sonuçlar xlsx uzantılı Microsoft Excel çalışma kitabına yazdırılmış olup, aşağıdaki linkten indirebilirsiniz.
Sonuçların Grafik Üzerinde Gösterilmesi I
Aşağıda yazılan kod ile karar matrisi BE yani bi fonksiyonuna okutulmuş olup elde edilen sonuçlardan alternatiflerin Bulut Endeksi sonuçları grafik üzerinde verilmiştir.
a=y$Bulut_Endeksi
#erd=y$ERD*100
tibble(Alternatif=c(row.names(a)), BE=round(a[,1],3)) %>% mutate(Alternatif = fct_reorder(Alternatif, BE)) %>%
ggplot(aes(x=Alternatif, y=BE)) +
geom_point(size=3, color="red") +
geom_segment(aes(x=Alternatif,
xend=Alternatif,
y=0,
yend=BE)) +
geom_text(aes(label=BE), vjust=-0.3, size=3.5)+
labs(title="Bulut Endeks (BE) Sonuçları",
subtitle="Excel Veri Seti Üzerinde Bir Deneme",
caption="BE by Tevfik Bulut")+
ylab("BE")+
xlab("Alternatif")+
theme(axis.text.x = element_text(angle=65, vjust=0.6))+
coord_flip() +
theme_economist_white()
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen sonuçların grafiği BE skoruna göre büyükten küçüğe aşağıda verilmiştir. Grafik üzerinde alternatifler “A” olarak kodlanmıştır.

Sonuçların Grafik Üzerinde Gösterilmesi II
Bu kısımda ise alternatiflerin sınıfiçi skorunun endeks referans değerleri toplamı (ERDT)’na uzaklığı verilmiştir. Alternatiflerin sınıfiçi skoru ERDT’ye ne kadar yakınsa o alternatifin aynı zamanda BE skorunun yüksek olduğu anlaşılmalıdır.
a=y$Sınıf_Skoru
erd=sum(y$ERD)
tibble(Alternatif=c(row.names(a)), Uzaklik=round(a[,1],3)) %>% mutate(Alternatif = fct_reorder(Alternatif, Uzaklik)) %>%
ggplot(aes(x=Alternatif, y=Uzaklik)) +
geom_point(size=3, color="red") +
geom_segment(aes(x=Alternatif,
xend=Alternatif,
y=0,
yend=Uzaklik)) +
geom_text(aes(label=Uzaklik), vjust=-0.3, size=3.5, fontface = "bold")+
labs(title="Bulut Endeks (BE) Sonuçları",
subtitle="Endeks Referans Değerleri Toplamına Uzaklık",
caption="BE by Tevfik Bulut")+
ylab("BE")+
xlab("Alternatif")+
theme(axis.text.x = element_text(angle=65, vjust=0.6))+
coord_flip() +
theme_economist_white()+
geom_hline(yintercept = erd, color="red", linetype = 2, size = 1)+
scale_y_continuous(breaks = seq(0, erd, by = 5))+
geom_text(aes(0, erd, label=paste ("ERDT (",round(erd,1), ")", sep=""), hjust=-3, vjust=-0.5, angle = 90, fontface = "bold"), size=3.5)
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen sonuçlar aşağıdaki grafikte verilmiştir. Aşağıdaki grafikte, ERDT (2,4)’ye en yakın olan alternatif A2 (1,737) olup, bu alternatif en optimal alternatif olarak yorumlanır. Diğer taraftan A1 (0,804) alternatifi ERDT’ye en uzak alternatif olduğu için en düşük optimal alternatiftir.

Bütün R kod bloklarının ve çıktılarının bir arada görülmesi adına R Markdown dokümanı pdf’ye dönüştürülmüş olup, aşağıdan indirebilirsiniz.
Kullanım Alanları
Dinamik bir nitelik de taşıyan Endeks açık uçlu ve tek yönlü eşitsizlikleri (standart değeri olan ya da hesaplanan) içeren;
- Sıralama (ranking)
- Seçim (selection)
- Etkinlik ve verimlilik ölçümleri (measurements of efficiency and productivity)
- Performans değenlendirme (performance evaluation)
- Risk tahmini (risk estimation)
- Optimal çözüm (optimal solution)
problemlerinin çözümünde sektör ayrımı gözetmeksizin rahatlıkla uygulanabilir. Kamu kurum ya da kuruluşları ile birlikte özel sektör oluşturacağı endekslerde ve analizlerde hem genel değerlendirmeye hem de alt seviyelerde değerlendirmelere olanak tanıdığı ve aynı zamanda dinamik bir yapıya sahip olduğu için Bulut Endeksi (BE)’ni kullanabilirler. Bu noktada, kurum ya da kuruluşların yapması gereken tek şey, değerlendirmeye konu kriterlerin ve gerekliyse bu kriterlerin ağırlıklarının belirlenmesidir. BE yönteminin kullanıldığı çalışmalar:
- Kıran, Şafak. (2018). Sağlık kurumları finansal tablo analizlerinde kullanılabilecek anahtar finansal oranların belirlenmesi: Bir performans endeksi önerisi, Kahramanmaraş Sütçü İmam Üniversitesi, Sosyal Bilimler Enstitüsü, Sağlık Yönetimi Ana Bilim Dalı. Yüksek Lisans Tezi. YÖK Tez No: 524092. BE’nin 1. ve 2. seviyelerinde yapılan örneklem büyüklüğü (n) geniş kapsamlı bir çalışmadır.
- Güden, Merve.(2021). “Metal Eşya Endeksine Kayıtlı Şirketlerin Finansal Performanslarının Bulut Endeks Performans Yöntemiyle Değerlendirilmesi” , Yüksek Lisans Tezi, Adnan Menderes Üniversitesi, İşletme Anabilim Dalı, Muhasebe ve Finansman Yüksek Lisans Programı. YÖK Tez No: 659934. BE’nin 1, 2 ve 3. seviyelerinde yapılan bir çalışmadır.
- Aslan, Ş. & Bolukçu, F. (2022). COVİD 19 Hastalığıyla Mücadele Sürecinde OECD Ülkelerinin Performanslarını Bulut Performans Endeksiyle Değerlendirme. Sağlık ve Sosyal Refah Araştırmaları Dergisi, 4 (1):75-96. Retrieved from https://dergipark.org.tr/en/pub/sarad/issue/67389/1031578. BE’nin 1. seviyesinde yapılan bir çalışmadır.
- Top, M. & Bulut, T. (2022). Yeni Bir Çok Kriterli Karar Verme Yöntemi: Bulut Endeks-Beta (BE-β). Verimlilik Dergisi , (3) , 393-414 . DOI: 10.51551/verimlilik.1031366. BE’nin 1. seviyesinde yapılan bir çalışmadır.
Sonuç
Özetle, bu çalışmayla çok kriterli karar verme (ÇKKV) yöntemi olarak geliştirilen Bulut Endeks (BE) metodunun R programlama dilinde oluşturulan bi() fonksiyonu ile örnek uygulamasına yer verilerek bu yöntemi kullanacak akademi ve saha çalışanlarına önemli bir katkı sunulması amaçlanmıştır.
Faydalı olması dileğiyle.
Bilimle ve teknolojiyle kalınız.
Bu çalışmaya atıf yapmak için aşağıdaki çalışmaları örnek alabilirsiniz.
- Bulut, T. (2022). Bulut Endeksi (BE)’nin R’da Fonksiyonu ve Grafiği. https://tevfikbulut.net/bulut-endeksi-benin-rda-fonksiyonu-ve-grafigi/.
- Bulut, T . (2017). Organize Sanayi Bölgeleri (OSB’ler) Tüzel Kişiliklerinin Finansal Performans Analizine Yönelik Endeks Önerisi: Bulut Performans Endeksi . Verimlilik Dergisi, 3:29-57. Retrieved from https://dergipark.org.tr/en/pub/verimlilik/issue/30386/328150.
- Top, M. & Bulut, T. (2022). Yeni Bir Çok Kriterli Karar Verme Yöntemi: Bulut Endeks-Beta (BE-β). Verimlilik Dergisi , (3) , 393-414 . DOI: 10.51551/verimlilik.1031366.
Not/Note
- Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
- It can not be cited or copied without referencing.
Yararlanılan Kaynaklar
- Bulut, T . (2017). Organize Sanayi Bölgeleri (OSB’ler) Tüzel Kişiliklerinin Finansal Performans Analizine Yönelik Endeks Önerisi: Bulut Performans Endeksi . Verimlilik Dergisi, 3:29-57. Retrieved from https://dergipark.org.tr/en/pub/verimlilik/issue/30386/328150
- Microsoft Office Excel 2010. Microsoft Corporation.
- Kıran, Şafak. (2018). Sağlık kurumları finansal tablo analizlerinde kullanılabilecek anahtar finansal oranların belirlenmesi: Bir performans endeksi önerisi. Kahramanmaraş Sütçü İmam Üniversitesi, Sosyal Bilimler Enstitüsü, Sağlık Yönetimi Ana Bilim Dalı, Yüksek Lisans Tezi
- Merve Güden, “Metal Eşya Endeksine Kayıtlı Şirketlerin Finansal Performanslarının Bulut Endeks Performans Yöntemiyle Değerlendirilmesi” , Yüksek Lisans Tezi, 2021. Adnan Menderes Üniversitesi, İşletme Anabilim Dalı, Muhasebe ve Finansman Yüksek Lisans Programı. YÖK Tez No: 659934.
- Aslan, Ş. & Bolukçu, F. (2022). COVİD 19 Hastalığıyla Mücadele Sürecinde OECD Ülkelerinin Performanslarını Bulut Performans Endeksiyle Değerlendirme . Sağlık ve Sosyal Refah Araştırmaları Dergisi, 4 (1):75-96. Retrieved from https://dergipark.org.tr/en/pub/sarad/issue/67389/1031578.
- R Core Team (2017). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL: https://www.R-project.org/.
- JJ Allaire and Yihui Xie and Jonathan McPherson and Javier Luraschi and Kevin Ushey and Aron Atkins and Hadley Wickham and Joe Cheng and Winston Chang and Richard Iannone (2021). rmarkdown: Dynamic Documents for R. R package version 2.11. URL https://rmarkdown.rstudio.com.
- Hadley Wickham, Romain François, Lionel Henry and Kirill Müller (2022). dplyr: A Grammar of Data Manipulation. R package version 1.0.9. https://CRAN.R-project.org/package=dplyr.
- Kirill Müller and Hadley Wickham (2022). tibble: Simple Data Frames. R package version 3.1.7. https://CRAN.R-project.org/package=tibble.
- Hadley Wickham and Maximilian Girlich (2022). tidyr: Tidy Messy Data. R package version 1.2.0. https://CRAN.R-project.org/package=tidyr
- H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016.
- Jeffrey B. Arnold (2021). ggthemes: Extra Themes, Scales and Geoms for ‘ggplot2’. R package version 4.2.4. https://CRAN.R-project.org/package=ggthemes.
- Hao Zhu (2021). kableExtra: Construct Complex Table with ‘kable’ and Pipe Syntax. R package version 1.3.4. https://CRAN.R-project.org/package=kableExtra.
- Hadley Wickham (2021). forcats: Tools for Working with Categorical Variables (Factors). R package version 0.5.1. https://CRAN.R-project.org/package=forcats.
- Hadley Wickham and Jennifer Bryan (2022). readxl: Read Excel Files. R package version 1.4.0. https://CRAN.R-project.org/package=readxl.
- Philipp Schauberger and Alexander Walker (2021). openxlsx: Read, Write and Edit xlsx Files. R package version 4.2.5. https://CRAN.R-project.org/package=openxlsx.
- Bulut Endeksi [BE] Simülasyonu, https://rpubs.com/tevfik1461/bulutendeksi.
- Top, M. & Bulut, T. (2022). Yeni Bir Çok Kriterli Karar Verme Yöntemi: Bulut Endeks-Beta (BE-β). Verimlilik Dergisi , (3) , 393-414 . DOI: 10.51551/verimlilik.1031366.
- Bulut, T. (2022). Bulut Endeksi [BE] Simülasyonu, https://tevfikbulut.net/bulut-endeksi-be-simulasyonu/.