È possibile ottenere la probabilità esatta di una sottosequenza particolare utilizzando una rappresentazione a catena di Markov del problema. I dettagli su come costruire la catena dipendono dalla particolare sottosequenza di interesse, ma fornirò un paio di esempi su come farlo.
Probabilità esatta tramite la catena di Markov: considera una sequenza discreta di esiti di A,T,C,G cui gli esiti della sequenza sono scambiabili e supponiamo che siamo interessati ad alcune sottostringhe di lunghezza k . Per un dato valore di n , lasciate W l'evento in cui si verifica la sottostringa di interesse, e sia Ha l'evento che le ultime a risultati sono i primi a<k caratteri nella stringa di interesse (ma non più di questo) . Usiamo questi eventi per dare la seguente partizione di k + 1 possibili stati di interesse:
Stato 0Stato 1Stato 2Stato 3⋮Stato k - 1Stato kW¯∩ H0, W¯∩ H1, W¯∩ H2, W¯∩ H3, ⋮W¯∩ Hk - 1,W.
Poiché si presume che la sequenza dei risultati sia scambiabile, abbiamo risultati indipendenti subordinati alle rispettive probabilità θUN+ θT+ θC+ θsol= 1 . Il tuo processo di interesse può essere rappresentato come catene di Markov a tempo discreto che iniziano nello Stato 0 con n = 0 e passano secondo una matrice di probabilità che dipende dalla particolare sottostringa di interesse. La matrice di transizione sarà sempre a ( k + 1 ) × ( k + 1 )matrice che rappresenta le probabilità di transizione utilizzando gli stati di cui sopra. Se la sottostringa di interesse non è stata raggiunta, ciascuna transizione può farti avvicinare di un passo alla sottostringa o riportarti a uno stato precedente che dipende dalla sottostringa particolare. Una volta raggiunta la sottostringa, questo è uno stato assorbente della catena, che rappresenta il fatto che si è verificato l'evento di interesse.
Ad esempio, se la sottostringa di interesse è A A A A A A la matrice di transizione è:
P = ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1 - θUN1 - θUN1 - θUN1 - θUN1 - θUN1 - θUN0θUN0000000θUN0000000θUN0000000θUN0000000θUN0000000θUN1.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Al contrario, se la sottostringa di interesse è A CTA G C la matrice di transizione è:
P = ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1 - θUN1 - θUN- θC1 - θUN- θT1 - θUN1 - θUN- θC- θsol1 - θUN- θC0θUNθUNθUN0θUNθUN00θC00θC0000θT0000000θUN0000000θsol000000θC1.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Come si può vedere sopra, la costruzione della matrice di transizione richiede attenzione alla particolare sottostringa. Un risultato errato riporta a uno stato precedente nella stringa che dipende dalla sottostringa particolare di interesse. Una volta costruita la matrice di transizione, per un dato valore di n la probabilità di avere la sottostringa nella catena è P ( W| n)={ Pn}0 , k . (Questa probabilità è zero per tutti n < k .)
R
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
A A A A A An = 1000.01732435