Можно получить точную вероятность конкретной подпоследовательности, используя цепную марковскую задачу. Особенности построения цепочки зависят от конкретной интересующей подпоследовательности, но я приведу несколько примеров того, как это сделать.
Точная вероятность по цепочке Маркова. Рассмотрим дискретную последовательность результатов где результаты в последовательности являются взаимозаменяемыми, и предположим, что нас интересует некоторая подстрока длины . Для любого заданного значения , пусть будет событием, когда возникает интересующая подстрока, и пусть будет событием, когда последними результатами являются первые символов в подстроке интерес (но не более того). Мы используем эти события, чтобы дать следующий раздел возможных состояний интереса: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.
Поскольку предполагается, что последовательность результатов является у нас есть независимые результаты, зависящие от их соответствующих вероятностей . Интересующий вас процесс может быть представлен в виде цепей Маркова с дискретным временем, которые начинаются в при и переходят в соответствии с матрицей вероятности, которая зависит от конкретной интересующей подстроки. Матрица перехода всегда будетθA+θT+θC+θG=1State 0n=0(k+1)×(k+1)матрица, представляющая вероятности перехода с использованием вышеуказанных состояний. Если интересующая подстрока не была достигнута, то каждый переход может либо приблизить вас на один шаг к подстроке, либо вернуть вас в предыдущее состояние, которое зависит от конкретной подстроки. Как только подстрока достигнута, это поглощающее состояние цепи, представляющее тот факт, что произошло интересующее событие.
Например, если интересующей подстрокой является тогда матрица перехода:AAAAAA
P=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1−θA1−θA1−θA1−θA1−θA1−θA0θA0000000θA0000000θA0000000θA0000000θA0000000θA1.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
И наоборот, если интересующей подстрокой является тогда матрица перехода: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.⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
Как видно выше, построение матрицы перехода требует внимания к конкретной подстроке. Неправильный результат возвращает вас к предыдущему состоянию в строке, которое зависит от конкретной интересующей подстроки. Как только матрица перехода построена, для данного значения вероятность наличия подстроки в цепочке равна . (Эта вероятность равна нулю для всех .)nP(W|n)={Pn}0,kn<k
Программирование этого в R: Вы можете запрограммировать это как функцию 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
Как вы можете видеть из этого расчета, вероятность получения подстроки в бросков с равновероятными результатами составляет . Это всего лишь один пример, использующий конкретную подстроку и заданное количество испытаний, но его можно варьировать для получения вероятностей относительно других подстрок, представляющих интерес.AAAAAAn=1000.01732435