Có thể có được xác suất chính xác của một chuỗi cụ thể bằng cách sử dụng biểu diễn chuỗi Markov của vấn đề. Các chi tiết cụ thể về cách xây dựng chuỗi phụ thuộc vào mức độ quan tâm cụ thể, nhưng tôi sẽ đưa ra một vài ví dụ về cách thực hiện việc này.
Xác suất chính xác thông qua chuỗi Markov: Xem xét một chuỗi kết quả riêng biệt của trong đó các kết quả trong chuỗi có thể trao đổi và giả sử chúng ta quan tâm đến một số chuỗi con có độ dài . Đối với bất kỳ giá trị nhất định của , chúng ta hãy là sự kiện mà các chuỗi quan tâm xảy ra, và để cho là sự kiện mà người cuối cùng kết quả là người đầu tiên ký tự trong chuỗi con của quan tâm (nhưng không nhiều hơn thế này). Chúng tôi sử dụng các sự kiện này để đưa ra phân vùng sau đây của trạng thái quan tâm có thể có:A,T,C,GknWHaaa<kk+1
State 0State 1State 2State 3⋮State k−1State kW¯∩H0, W¯∩H1, W¯∩H2, W¯∩H3, ⋮W¯∩Hk−1,W.
Vì chuỗi kết quả được giả định là có thể trao đổi, chúng tôi có kết quả độc lập có điều kiện dựa trên xác suất tương ứng của họ . Quá trình quan tâm của bạn có thể được biểu diễn dưới dạng chuỗi Markov thời gian rời rạc bắt đầu bằng tại và chuyển đổi theo ma trận xác suất phụ thuộc vào chuỗi con quan tâm cụ thể. Ma trận chuyển tiếp sẽ luôn làθA+θT+θC+θG=1State 0n=0(k+1)×(k+1)ma trận đại diện cho xác suất của quá trình chuyển đổi bằng cách sử dụng các trạng thái trên. Nếu chưa đạt được chuỗi con quan tâm thì mỗi lần chuyển đổi có thể đưa bạn đến một bước gần hơn với chuỗi con hoặc nó có thể đưa bạn trở lại trạng thái trước đó phụ thuộc vào chuỗi con cụ thể. Khi đạt được chuỗi con, đây là trạng thái hấp thụ của chuỗi, đại diện cho thực tế là sự kiện quan tâm đã xảy ra.
Ví dụ: nếu chuỗi con quan tâm là thì ma trận chuyển tiếp là:AAAAAA
P=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1−θA1−θA1−θA1−θA1−θA1−θA0θA0000000θA0000000θA0000000θA0000000θA0000000θA1.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Ngược lại, nếu chuỗi con quan tâm là thì ma trận chuyển tiếp là: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.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Như có thể thấy ở trên, việc xây dựng ma trận chuyển tiếp đòi hỏi phải chú ý đến chuỗi con cụ thể. Một kết quả không chính xác sẽ đưa bạn trở lại trạng thái trước đó trong chuỗi phụ thuộc vào chuỗi con quan tâm cụ thể. Khi ma trận chuyển tiếp được xây dựng, với giá trị đã cho là xác suất có chuỗi con trong chuỗi là . (Xác suất này bằng 0 cho tất cả .)nP(W|n)={Pn}0,kn<k
Lập trình điều này trong R: Bạn có thể lập trình điều này như một hàm R
bằng cách tạo một hàm tạo ma trận chuyển tiếp cho chuỗi Markov và một mảng sức mạnh của nó lên đến một số thử nghiệm mong muốn. Sau đó, bạn có thể đọc xác suất chuyển tiếp phù hợp cho giá trị của đáng quan tâm. Dưới đây là một ví dụ về một số mã để làm điều này: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
Như bạn có thể thấy từ tính toán này, xác suất để có được chuỗi con trong tung với kết quả có thể trang bị là . Đây chỉ là một ví dụ sử dụng một chuỗi con cụ thể và một số thử nghiệm nhất định, nhưng nó có thể được thay đổi để có được xác suất liên quan đến các chuỗi con quan tâm khác.AAAAAAn=1000.01732435