Es ist möglich, die genaue Wahrscheinlichkeit einer bestimmten Teilsequenz unter Verwendung einer Markov-Ketten-Darstellung des Problems zu erhalten. Die Einzelheiten zum Aufbau der Kette hängen von der jeweiligen interessierenden Teilsequenz ab, aber ich werde einige Beispiele dafür geben.
Genaue Wahrscheinlichkeit über die Markov-Kette: Betrachten Sie eine diskrete Folge von Ergebnissen von bei der die Ergebnisse in der Folge austauschbar sind, und nehmen Sie an, dass wir an einem Teilstring der Länge interessiert sind . Für jeden gegebenen Wert von sei das Ereignis, bei dem der interessierende Teilstring auftritt, und sei das Ereignis, dass die letzten Ergebnisse die ersten Zeichen im Teilstring von sind Interesse (aber nicht mehr als das). Wir verwenden diese Ereignisse, um die folgende Aufteilung von möglichen interessierenden Zuständen anzugeben: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.
Da angenommen wird, dass die Folge von Ergebnissen austauschbar ist, haben wir unabhängige Ergebnisse, die von ihren jeweiligen Wahrscheinlichkeiten . Ihr interessierender Prozess kann als zeitdiskrete Markov-Kette dargestellt werden, die in bei beginnt und gemäß einer Wahrscheinlichkeitsmatrix übergeht, die von der jeweiligen interessierenden Teilzeichenfolge abhängt. Die Übergangsmatrix ist immer einθA+θT+θC+θG=1State 0n=0(k+1)×(k+1)Matrix, die die Übergangswahrscheinlichkeiten unter Verwendung der obigen Zustände darstellt. Wenn der interessierende Teilstring nicht erreicht wurde, kann jeder Übergang Sie entweder einen Schritt näher an den Teilstring bringen oder Sie in einen vorherigen Zustand zurückversetzen, der von dem jeweiligen Teilstring abhängt. Sobald der Teilstring erreicht ist, ist dies ein absorbierender Zustand der Kette, der die Tatsache darstellt, dass das Ereignis von Interesse aufgetreten ist.
Wenn der interessierende Teilstring beispielsweise ist, die Übergangsmatrix:AAAAAA
P=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1−θA1−θA1−θA1−θA1−θA1−θA0θA0000000θA0000000θA0000000θA0000000θA0000000θA1.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Wenn der interessierende Teilstring ist, die Übergangsmatrix im Gegensatz dazu :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.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Wie oben zu sehen ist, erfordert die Konstruktion der Übergangsmatrix die Beachtung des jeweiligen Teilstrings. Ein falsches Ergebnis versetzt Sie in einen vorherigen Status in der Zeichenfolge zurück, der von der jeweiligen interessierenden Teilzeichenfolge abhängt. Sobald die Übergangsmatrix erstellt ist, ist für einen gegebenen Wert von die Wahrscheinlichkeit, dass sich der Teilstring in der Kette befindet, . (Diese Wahrscheinlichkeit ist für alle Null .)nP(W|n)={Pn}0,kn<k
Programmieren in R: Sie können dies als Funktion in programmieren, indem Sie eine Funktion R
erstellen, die die Übergangsmatrix für die Markov-Kette und ein Array ihrer Potenzen bis zu einer gewünschten Anzahl von Versuchen generiert. Sie können dann die entsprechende Übergangswahrscheinlichkeit für den Wert von lesen, der von Interesse ist. Hier ist ein Beispiel für einen Code, um dies zu tun: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
Wie Sie dieser Berechnung entnehmen können, beträgt die Wahrscheinlichkeit, den Teilstring in Würfen mit gleichwahrscheinlichen Ergebnissen zu erhalten, . Dies ist nur ein Beispiel unter Verwendung eines bestimmten Teilstrings und einer gegebenen Anzahl von Versuchen, es kann jedoch variiert werden, um Wahrscheinlichkeiten in Bezug auf andere interessierende Teilstrings zu erhalten.AAAAAAn=1000.01732435