John

Tevfik Bulut

Data Scientist

Web Site

Linkedin

RPubs

Contact

Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn’t really do it, they just saw something. It seemed obvious to them after a while. That’s because they were able to connect experiences they’ve had and synthesize new things. Steve Jobs

İçindekiler

1.Intro

In this study, it is aimed to raise awareness by showing Markov chain terminology, which has an important place in data science, and its applications in R.

2.Giriş

Not! Markov zinciri, belirli olasılık kurallarına göre bir durumdan diğerine geçişleri deneyimleyen matematiksel bir sistemdir. Bir Markov zincirinin tanımlayıcı özelliği, süreç şimdiki durumuna nasıl ulaşırsa ulaşsın, gelecekteki olası durumların sabit olmasıdır. Başka bir deyişle, herhangi bir belirli duruma geçme olasılığı, yalnızca mevcut duruma ve geçen zamana bağlıdır. Durum uzayı veya tüm olası durumlar kümesi herhangi bir şey olabilir: harfler, sayılar, hava koşulları, sağlık durumu, satış hacmi veya hisse senedi verileri.

Markov zinciri stokastik bir süreçtir, ancak genel bir stokastik süreçten farklıdır. Çünkü bir Markov zinciri “hafızasız” yani “memory-less” olmalıdır. Yani, gelecekteki eylemlerin (olasılığı) mevcut duruma yol açan adımlara bağlı değildir. Buna Markov özelliği denir. Markov zincirleri teorisi kesinlikle çok sayıda “günlük” süreç Markov özelliğini sağladığı için önemli olsa da Markov özelliğini karşılamayan birçok yaygın stokastik özellik örneği vardır.

Olasılık teorisinde en yakın örnek, herhangi bir durum geçişi olasılığının zamandan bağımsız olduğu, zamana bağlı homojen bir Markov zinciridir. Böyle bir süreç, herhangi bir düğümden uzayan kenar etiketlerinin toplamının 1 olduğu etiketli bir yönlendirilmiş grafik ile görselleştirilebilir. Bu süreç aşağıda yazılan R kod bloğu ile görselleştirilmiştir. Kod bloğunda Heemod kütüphanesi matrisin oluşturulması, diyagramın çizimi için ise diagram kütüphanesi kullanılarak geçiş olasılığı grafiği çizilmiştir.

Not! Genellikle geçiş olasılıklarını bir matris içerisinde gösteririr. Geçiş olasılıklarının gösterildiği bu matris durum geçiş matrisi veya geçiş olasılık matrisi olarak adlandırılmaktadır.Genellikle geçiş olasılık matrisi \(P\) ile gösterilmektedir. Durumlar \(1,2,3,4,...,r\) şeklinde gösterilmektedir. Durum matrisini aşağıdaki eşitlikte yer alan matris ile gösterebiliriz.

\[P = \begin{vmatrix} P_{11} & P_{12}&...&P_{1r}\\ P_{21} & P_{22}&...&P_{2r}\\ . & .&.&.\\ . & .&.&.\\ . & .&.&.\\ P_{r1} & P_{r2}&...&P_{rr} \end{vmatrix}\]

Matriste \(P_{ij}\ge0\) olduğu için \(\sum_{k=1}^{r} P_{ik}=\sum_{k=1}^{r} P(X_{m+1=k}|X_{m=i})\) eşittir. Eşitlikte i durumları göstermektedir. Eşitliğimizin 1’e eşit olmasının nedeni ise olasılık kuramının doğal gereği bütün durum olasılıklarının toplamının 1’e eşit olmasıdır.Yani, herhangi bir durum geçiş matrisinin satırlarının toplamı bir olmalıdır.

Bir Markov zinciri genellikle bir durum geçiş diyagramı ile gösterilir. Üç olası durumumuz ölümcül hastalık grubunda kabul edilen Kanser, AIDS ve SMA hastalıkları olsun ve aşağıdaki geçiş olasılıklarına sahip bir Markov zinciri düşünelim. Örneğimizde bu hastalıklardan ölümlerin durum geçiş olasılıkları varsayımsal olarak aşağıdaki matristeki gibi olsun.

\[P = \begin{vmatrix} \displaystyle\frac{4}{8} & \displaystyle\frac{2}{8}&\displaystyle\frac{2}{8}\\ \displaystyle\frac{2}{8} & \displaystyle\frac{3}{8}&\displaystyle\frac{3}{8}\\ \displaystyle\frac{6}{8} & \displaystyle\frac{1}{8}&\displaystyle\frac{1}{8} \end{vmatrix}\]

2.1.Yüklenen Kütüphaneler

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

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

2.2.Durum geçiş diyagramı oluşturma I

Yukarıda durumlara ilişkin durum geçiş matrisinin diyagramını aşağıda yazılan kod bloğu ile çizebiliriz.Burada durum geçiş diyagramını oluştururken diagram kütüphanesi altyapısı kullanılmıştır.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

durum <- c("Kanser", "AIDS", "SMA")
row.names(m) <- durum 
colnames(m) <- durum
m %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Kanser AIDS SMA
Kanser 0.50 0.250 0.250
AIDS 0.25 0.375 0.375
SMA 0.75 0.125 0.125
plotmat(m,
        lwd = 1, pos = c(1,2),box.lwd = 2, 
        cex.txt = 0.8, 
        box.size = 0.1, 
        box.type = "circle", 
        box.prop = 0.5,
        box.col = "light green",
        arr.length=.2,
        arr.width=.2,
        self.cex = .6,
        self.shifty = -.01,
        self.shiftx = .14,
        main = "Durum Geçiş Diyagramı")

2.3.Durum geçiş diyagramı oluşturma II

Yukarıda çizilen geçiş diyagramını dilersek aşağıda yazılan kod bloğu ile de alternatif olarak çizebiliriz. Burada da bir önceki diyagram örneğinde olduğu gibi diagram kütüphanesi altyapısı kullanılmıştır. Tek fark, burada heemod kütüphanesi ile diagram kütüphanesinin birlikte kullanılmış olmasıdır.

vektor=c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8)

dm= define_transition(state_names = c("Kanser", "AIDS", "SMA"), 
                      0.500, 0.250, 0.250, 
                      0.250, 0.375, 0.375, 
                      0.750, 0.125, 0.125)
plot(dm, relsize = 0.75)

2.4.Durum geçiş diyagramı oluşturma III

Yukarıda çizilen geçiş diyagramını dilersek aşağıda yazılan kod bloğu ile bir diğer alternatif olarak çizebiliriz. Burada markovchain kütüphanesi durum geçiş diyagramını oluştururken igraph kütüphanesi altyapısını kullanmaktadır.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')

plot(dm, main = "Durum Geçiş Diyagramı",
       vertex.size = 60,
       vertex.color="light green",
       vertex.frame.color= "white",
       vertex.label.color = "black",
       edge.width=2, edge.arrow.size=.5)

2.4.Durum geçiş matrisinin elemanlarına ulaşma I

Burada durumlar arasındaki geçiş olasılıkları tablo düzeninde verilmiştir.

library(tibble)
m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')

# Durumlar

d=c("Kanserden AIDS'e geçiş olasılığı","Kanserden SMA'ya geçiş olasılığı","AIDS'ten SMA'ya geçiş olasılığı")

# Geçiş olasılıkları

o1=transitionProbability(dm, "Kanser", "AIDS")
o2=transitionProbability(dm, "Kanser", "SMA")
o3=transitionProbability(dm, "AIDS", "SMA")
tibble(Durumlar=d, "Olasılık Değeri"=c(o1,02,03))%>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Durumlar Olasılık Değeri
Kanserden AIDS’e geçiş olasılığı 0.25
Kanserden SMA’ya geçiş olasılığı 2.00
AIDS’ten SMA’ya geçiş olasılığı 3.00

2.5.Durum geçiş matrisinin elemanlarına ulaşma II

Bu başlık altında ise durum geçiş olasılık matrisinin adı ve başta ele aldığımız durumlar vektör düzeninde verilmiştir.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')

paste("Durum ",1:3,":", states(dm),sep = "", collapse = ", ") %>% as_tibble() %>% rename("Durumların Adları"=value) %>% kable() %>% kable_styling(bootstrap_options = c("striped", "hover"))# durumların adları
Durumların Adları
Durum 1:Kanser, Durum 2:AIDS, Durum 3:SMA
# Alternatif

paste("Durum ",1:3,":", names(dm),sep = "", collapse = ", ")  %>% as_tibble() %>% rename("Durumların Adları"=value) %>% kable() %>% kable_styling(bootstrap_options = c("striped", "hover"))# durumların adları
Durumların Adları
Durum 1:Kanser, Durum 2:AIDS, Durum 3:SMA
tibble("Marcov Zincirinin Adı"=name(dm))%>% kable() %>% kable_styling(bootstrap_options = c("striped", "hover"))# markov zincirinin adı
Marcov Zincirinin Adı
3 Boyutlu Durum Geçiş Matrisi

2.6.Koşullu olasılık

Not! Mevcut durum göz önüne alındığında, sonraki durumun koşullu dağılımı aşağıda yazılan conditionalDistribution() fonksiyonu ile yazılır. Koşullu olasılıktan bahsetmiş iken olasılık teorisindeki yerinden kısaca bahsedelim. Koşullu olasılık dağılımları sürekli ve kesikli rassal değişkenler için ele alınmaktadır.Koşullu olasılık dağılımı, bir alt popülasyon için bir olasılık dağılımıdır. Yani, koşullu olasılık dağılımı, bir alt popülasyondan rastgele seçilen bir kişi veya nesnenin ilgilenilen tek özelliğe sahip olma olasılığını tanımlar.Koşullu olasılığa günümüzde yaşanan COVID-19 pandemisi üzerinden örnek verebiliriz. Örneğin, rastgele seçilen bir kişi maske takmaz ise COVID-19’a yakalanma olasılığı nedir?

\(P(A|B)\) biçiminde gösterilen koşullu olasılıkta \(P(A|B)\), B gibi bir olayın gerçekleştiği bilindiğinde A olayının olasılığı ya da tam tersi olarak tanımlanır. Koşulluk olasılık \(P(A|B)=\displaystyle\frac{p(A \cap B)}{p(B)}\) şeklinde ifade edilebilir.

Aşağıda yazılan kod bloğunda Kanser, AIDS ve SMA durumlarının koşullu olasılık değerleri verilmiştir.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')

#Kanserin koşullu olasılığı
k=conditionalDistribution(dm, "Kanser")
#AIDS'in koşullu olasılığı
a=conditionalDistribution(dm, "AIDS")
#SMA'nın koşullu olasılığı
s=conditionalDistribution(dm, "SMA")
d=c("Kanserin koşullu olasılığı","AIDS'in koşullu olasılığı","SMA'nın koşullu olasılığı")
cbind(d, rbind(k,a,s))%>% 
as_tibble() %>% 
rename("Koşullu Olasılıklar"=d) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Koşullu Olasılıklar Kanser AIDS SMA
Kanserin koşullu olasılığı 0.5 0.25 0.25
AIDS’in koşullu olasılığı 0.25 0.375 0.375
SMA’nın koşullu olasılığı 0.75 0.125 0.125

2.7.Ortalama nüksetme zamanı

Not! Bir Markov zinciri için çıktısı, zincir orada başladığında ilk duruma geri dönmesi beklenen zamana sahip adlandırılmış bir vektördür. Vektörde bulunan durumlar sadece tekrarlayan durumlardır. Matris ergodik ise (yani indirgenemez), o zaman çıktıda tüm durumlar mevcuttur ve sıra Markov zinciri için durum sırası ile aynıdır.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')
meanRecurrenceTime(dm)%>% as_tibble() %>% rename("Ortalama Nüksetme Zamanı"=value)%>% add_column(Durumlar=c("Kanser", "AIDS", "SMA"), .before="Ortalama Nüksetme Zamanı")%>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Durumlar Ortalama Nüksetme Zamanı
Kanser 2
AIDS 4
SMA 4

2.8.İlk geçiş fazı

Bu kısımda ilk geçiş olasılıklarına göre dağılımı hesaplanan gözlemlerin sayısı verilmiştir.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')

firstPassage(dm, "SMA", 20)%>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Kanser AIDS SMA
0.7500000 0.1250000 0.1250000
0.1250000 0.2031250 0.2343750
0.0625000 0.1425781 0.1894531
0.0312500 0.1145020 0.1364746
0.0156250 0.0893860 0.0957336
0.0078125 0.0701790 0.0667076
0.0039063 0.0550351 0.0464025
0.0019531 0.0431693 0.0322637
0.0009766 0.0338602 0.0224304
0.0004883 0.0265588 0.0155937
0.0002441 0.0208318 0.0108407
0.0001221 0.0163397 0.0075364
0.0000610 0.0128163 0.0052392
0.0000305 0.0100526 0.0036423
0.0000153 0.0078849 0.0025321
0.0000076 0.0061847 0.0017603
0.0000038 0.0048510 0.0012237
0.0000019 0.0038050 0.0008507
0.0000010 0.0029845 0.0005914
0.0000005 0.0023409 0.0004112

2.9.Sonraki adımlar

Not! Bu kısımda varsayımsal olarak şu anki durum olasılıkları ortaya konularak 6 ay sonraki durum olasılıkları ortaya konulmuştur.Aşağıdaki sonuçlardan bireyin 3 ay sonra Kanserden ölme olasığının \(\%50\), AIDS’ten ölme olasılığının ise \(\%25\) olduğu olduğu görülmektedir.Aşağıda yapılan işlem, mevcut durum vektörünün \([0.35, 0.15, 0.5]\) ve geçiş matrisiyle çarpılmasını gerektirir. Yani matrislerde çarpım kuralını işletiyoruz.Ardından ise elde ettiğimiz sonucun adım olarak kuvvetini yani üssünü alıyoruz. Bahsedilenler aşağıdaki eşitlikte özetlenmiştir.

\[[0.35, 0.15, 0.5]x\begin{vmatrix} \displaystyle\frac{4}{8} & \displaystyle\frac{2}{8}&\displaystyle\frac{2}{8}\\ \displaystyle\frac{2}{8} & \displaystyle\frac{3}{8}&\displaystyle\frac{3}{8}\\ \displaystyle\frac{6}{8} & \displaystyle\frac{1}{8}&\displaystyle\frac{1}{8} \end{vmatrix}^{6}=[0.5, 0.25, 0.25]\]

set.seed(61)

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')


suan=c(0.35, 0.15, 0.5)

adım=6

sondurum<-suan*dm^adım

sondurum %>% 
as_tibble() %>% 
mutate_if(is.numeric, round,2)%>%
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Kanser AIDS SMA
0.5 0.25 0.25

2.10.Zincir dizisi ve sıklık matrisi

Not! Temelde ilk durum geçiş olasılıkları dağılımından gelen bir dizi durum oluşturulmuştur. Burada ilk durumdaki geçiş olasılıkları esas alınarak n=500 büyüklüğünde örneklem çekilmiştir. Ardından ise sıklık matrisi oluşturulmuştur.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')

dm <- markovchainSequence(n = 500, markovchain = dm)

createSequenceMatrix(dm) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
AIDS Kanser SMA
AIDS 47 29 46
Kanser 58 120 69
SMA 18 97 15

3.Modelin kurulması

3.1.Kararlı durumlar

Not! Kararlı durumlar, özdeş özdeğerlere karşılık gelen özvektörlerden başlayarak tanımlanır.Kararlı durumlarda matriste negatif değerler bulunduğunda özvektör çıkarımı, yinelenen sınıflar alt matrisi üzerinde gerçekleştirilir.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')  
steadyStates(dm) %>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Kanser AIDS SMA
0.5 0.25 0.25

3.2.Kararlı durum matrisinin oluşturulması

Burada kararlı durum olalsıkları kullanılarak tekrarlı 100 örneklem çekilmiştir. Ardından ise sıklık matrisi oluşturulmuştur.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')  

v=steadyStates(dm)# istikrarlı durum olasılıkları

olasilik=as.vector(v)

gozlem = sample(c("Kanser", "AIDS", "SMA"), 100, olasilik, replace = TRUE)

createSequenceMatrix(gozlem)%>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover")) #istikarlı durum matrisi
AIDS Kanser SMA
AIDS 12 8 5
Kanser 11 27 12
SMA 3 15 6

3.3.Marcov zinciri model uyumları

Not! Burada kurulan modelin Marcov zincirine uyumunu değerlendirmek için maksimum olasılık tahmini, ingilizce ifadeyle maximum likelihood estimation (mle), bootstrap örnekleme ve laplace yöntemleri kullanılmıştır. Karar vermek için ise parametre olarak log olabilirlik yöntemi kullanılmıştır. Log olabilirlik yöntemi belirli bir modelin verilere ne kadar iyi uyduğunun bir ölçüsüdür.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')  

v=steadyStates(dm)# istikrarlı durum olasılıkları

olasilik=as.vector(v)

gozlem = sample(c("Kanser", "AIDS", "SMA"), 100, olasilik, replace = TRUE)


mle=markovchainFit(gozlem, method = "mle", name="MLE Marcov Zinciri")

bootstrap=markovchainFit(gozlem, method="bootstrap",nboot=5, name="Bootstrap Marcov Zinciri")

laplace=markovchainFit(gozlem, method="laplace", name="Laplace Marcov Zinciri")


tibble("Değerlendirme Yöntemleri"=c("mle", "bootstrap","laplace"), "Log Olabilirlik Değeri"=c(laplace$logLikelihood, bootstrap$logLikelihood, mle$logLikelihood))%>% 
mutate_if(is.numeric, round,2)%>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Değerlendirme Yöntemleri Log Olabilirlik Değeri
mle -98.82
bootstrap -99.55
laplace -98.82

3.4.Zincir büyüklüğü belirlenen matrisin model uyumu

Burada Marcov zincirinin büyüklüğü \(n=350\) olarak blirlenmiştir.

m = matrix(c(4/8, 2/8, 2/8, 2/8, 3/8, 3/8, 6/8, 1/8, 1/8), nrow  = 3, byrow = TRUE)

dm = new('markovchain', transitionMatrix = m, states = c("Kanser", "AIDS", "SMA"), name = '3 Boyutlu Durum Geçiş Matrisi')

dm <- markovchainSequence(n = 350, markovchain = dm)


mle=markovchainFit(dm, method = "mle", name="MLE Marcov Zinciri")

bootstrap=markovchainFit(dm, method="bootstrap",nboot=5, name="Bootstrap Marcov Zinciri")

laplace=markovchainFit(dm, method="laplace", name="Laplace Marcov Zinciri")

tibble("Değerlendirme Yöntemleri"=c("mle", "bootstrap","laplace"), "Log Olabilirlik Değeri"=c(laplace$logLikelihood, bootstrap$logLikelihood, mle$logLikelihood))%>% 
mutate_if(is.numeric, round,2)%>% 
kbl() %>%  
kable_styling(bootstrap_options = c("striped", "hover"))
Değerlendirme Yöntemleri Log Olabilirlik Değeri
mle -338.75
bootstrap -338.99
laplace -338.75

4.Sonuç

Özetle, veri biliminde önemli bir yere sahip Markov zincir terminolojisi ve R’daki uygulamaları gösterilerek farkındalık oluşturulması amaçlanmıştı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.

Kaynaklar