Sorunun bir Markov zinciri temsilini kullanarak belirli bir alt sekansın kesin olasılığını elde etmek mümkündür. Zincirin nasıl yapılacağına dair ayrıntılar, ilgili özel diziye bağlıdır, ancak bunun nasıl yapılacağı ile ilgili birkaç örnek vereceğim.
Markov zinciri üzerinden kesin olasılık: Sekanstaki sonuçların değiştirilebilir olduğu A,T,C,G sonuçlarının ayrı bir sekansını düşünün ve k uzunluğunun bazı alt dizileriyle ilgilendiğimizi varsayalım . Herhangi bir belirli değeri için n , izin W ilgi substring oluşur olay ve izin geçen bu olay çıktıları ilk olarak ilgi substring karakterler (ancak hiçbir bundan daha fazla). Bu olayları, olası ilgi durumlarını aşağıdaki bölümlere vermek için kullanıyoruz :Haaa<kk+1
State 0State 1State 2State 3⋮State k−1State kW¯∩H0, W¯∩H1, W¯∩H2, W¯∩H3, ⋮W¯∩Hk−1,W.
dizisinin değiştirilebilir olduğu varsayıldığından, kendi olasılıklarına bağlı olarak bağımsız sonuçlarımız vardır . İlgilenme işleminiz, ile ve ilgili belirli alt dizeye bağlı bir olasılık matrisine göre geçiş yapan ayrık zamanlı Markov zincirleri olarak temsil edilebilir . Geçiş matrisi her zaman birθA+θT+θC+θG=1State 0n=0(k+1)×(k+1)yukarıdaki durumları kullanarak geçiş olasılığını temsil eden matris. İlgilenilen alt dizeye ulaşılmadıysa, her geçiş size alt dizeye bir adım daha yaklaşabilir veya sizi belirli alt dizeye bağlı olan önceki bir duruma geri döndürebilir. Alt dize ulaşıldığında, bu, ilgili olayın meydana geldiğini temsil eden zincirin emici bir halidir.
Örneğin, ilgilenilen alt dize ise , geçiş matrisi:AAAAAA
P=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1−θA1−θA1−θA1−θA1−θA1−θA0θA0000000θA0000000θA0000000θA0000000θA0000000θA1.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Aksine, ilgilenilen alt dize ise , geçiş matrisi şöyledir:ACTAGC
P=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1−θA1−θA−θC1−θA−θT1−θA1−θA−θC−θG1−θA−θC0θAθAθA0θAθA00θC00θC0000θT0000000θA0000000θG000000θC1.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Yukarıda görülebileceği gibi, geçiş matrisinin oluşturulması belirli alt dizeye dikkat gerektirir. Yanlış bir sonuç, ilgili dize alt dizesine bağlı olarak dizede önceki bir duruma geri döndürür. Geçiş matrisi oluşturulduktan sonra, belirli bir değeri için zincirde alt sahip olma olasılığı . (Bu olasılık tüm için sıfırdır .)nP(W|n)={Pn}0,kn<k
Bunu R'de programlamak:R
Markov zinciri için geçiş matrisini ve güçlerini bir dizi istenen sayıda denemeye kadar üreten bir işlev oluşturarak bunu bir işlev olarak programlayabilirsiniz . Daha sonra ilgilenilen değeri için uygun geçiş olasılığını okuyabilirsiniz . İşte bunu yapmak için bazı kod örneği:n
#Create function to give n-step transition matrix for n = 1...N
#We will use the example of the substring of interest "AAAAAA"
#a is the probability of A
#t is the probability of T
#c is the probability of C
#g is the probability of G
#N is the last value of n
PROB <- function(N,a,t,c,g) { TOT <- a+t+c+g;
a <- a/TOT;
t <- t/TOT;
c <- c/TOT;
g <- g/TOT;
P <- matrix(c(1-a, a, 0, 0, 0, 0, 0,
1-a, 0, a, 0, 0, 0, 0,
1-a, 0, 0, a, 0, 0, 0,
1-a, 0, 0, 0, a, 0, 0,
1-a, 0, 0, 0, 0, a, 0,
1-a, 0, 0, 0, 0, 0, a,
0, 0, 0, 0, 0, 0, 1),
nrow = 7, ncol = 7,
byrow = TRUE);
PPP <- array(0, dim = c(7,7,N));
PPP[,,1] <- P;
for (n in 2:N) { PPP[,,n] <- PPP[,,n-1] %*% P; }
PPP }
#Calculate probability for N = 100 for equiprobable outcomes
N <- 100;
a <- 1/4;
t <- 1/4;
c <- 1/4;
g <- 1/4;
PROB(N,a,t,c,g)[1,7,N];
[1] 0.01732435
Bu hesaplamada da görebileceğiniz gibi, alt dize alma olasılığı içinde equiprobable sonuçlarla fırlatır olduğunu . Bu, belirli bir alt dizeyi ve belirli sayıda denemeyi kullanan sadece bir örnektir, ancak ilgilenilen diğer alt dizilere göre olasılıklar elde etmek için değiştirilebilir.AAAAAAn=1000.01732435