HMM 隐马尔可夫模型初学(一)

笔记首先总结概括HMM相关理论知识,再通过生信序列的R语言实操对HMM深入了解

1、MM,Markov model 马尔科夫模型

(1)天气举例

  • 假设只有晴、阴、雨三种天气情况。某地周一为晴天,已知若晴天后,第二天出现晴阴雨的概率分别为0.5,0.3,0.2(sum=1)。
  • 例如周二为雨天的概率即为0.2。而已知若雨天后,第二天出现晴阴雨的概率分别为0.1,0.6,0.3(sum=1),可预测周三为阴天的概率为0.2*0.3=0.06。
  • 继续预测,已知若阴天后,第二天出现晴阴雨的概率分别为0.3,0.4,0.3(sum=1),可预测周四出现晴天的概率为0.20.30.4=0.024;
  • 综上在已知假设及周一天气情况下,周一~周四天气为晴阴雨晴的概率为0.024,还可以继续预测接下来一周的天气情况概率。
(2)Markov chain马尔可夫链
  • 如上假设,即为一个简单的马尔科夫链。首先来说,它是一个离散性质的时序模型,即在顺序离散过程中,一个时间点(周几)代表一种特定的状态(天气)。
  • 其次马尔科夫链最重要的假设是:当前的状态只和上一时刻有关,与上一时刻之前的任何状态都没有关系。反映到例子中就是今天的天气情况只取决于昨天的天气情况,与前天,上周的天气都无关。
    反映到如下公式中,t+1时间点的状态可能分布只与t时间点的状态有关。


    MM
(3)Transition Matrix状态转移概率矩阵!!(划重点)
  • stata状态:马尔可夫链在状态空间内的取值称为状态,所有的取值情况称为状态空间 stata space。简单理解就是例子中的三种天气(晴阴雨);
  • 状态转移概率矩阵即是指由一种特定状态分别转移到所有状态的概率transition probability(和必然为1),假设存在n种状态,则Transition Matrix就是n*n的矩阵。γij的值就表示状态 i 转移到状态 j 的概率。


    TM

    TM
  • Transition Matrix的图形展示


    TM,from web
(4)initial probabilities of the states
  • 上述例子中是给定周一天气为晴天,更多情况下马尔科夫链的开端也是状态的概率分布π;
  • Often, the initial probabilities of the states πi are assumed to be the stationary distribution implied by the transition probability matrix。
    即趋近于无穷时刻下,三种状态的分布的概率。


    initial probabilities of the states

2、R代码实操:马尔科夫模型预测DNA序列

(1)已知条件

A:特殊的序列

For some DNA sequences, the probability of finding a particular nucleotide at a particular position in the sequence does depend on what nucleotides are found at adjacent positions in the sequence.
即符合马尔可夫链的假设

B:转移矩阵
TM
C:初始概率

可任意指定,例如T 0.3 C 0.3 G 0.2 A 0.2

(2)R实操

目的:主要根据转移矩阵预测可能的这样一段特殊序列

  • 制作TM
nucleotides         <- c("A", "C", "G", "T")
afterAprobs <- c(0.2, 0.3, 0.3, 0.2)         # Set the values of the probabilities, where the previous nucleotide was "A"
afterCprobs <- c(0.1, 0.41, 0.39, 0.1)       # Set the values of the probabilities, where the previous nucleotide was "C"
afterGprobs <- c(0.25, 0.25, 0.25, 0.25)     # Set the values of the probabilities, where the previous nucleotide was "G"
afterTprobs <- c(0.5, 0.17, 0.17, 0.17)      # Set the values of the probabilities, where the previous nucleotide was "T"
mytransitionmatrix <- matrix(c(afterAprobs, afterCprobs, afterGprobs, afterTprobs), 4, 4, byrow = TRUE) # Create a 4 x 4 matrix
rownames(mytransitionmatrix) <- nucleotides
colnames(mytransitionmatrix) <- nucleotides
mytransitionmatrix 
TM
  • 编写函数
    主要基于第一个起始碱基的概率与TM概率分布,利用sample()抽样函数进行实现序列预测
generatemarkovseq <- function(transitionmatrix, initialprobs, seqlength)
{
  nucleotides     <- c("A", "C", "G", "T") # Define the alphabet of nucleotides
  mysequence      <- character()           # Create a vector for storing the new sequence
  # Choose the nucleotide for the first position in the sequence:
  firstnucleotide <- sample(nucleotides, 1, rep=TRUE, prob=initialprobs)
  mysequence[1]   <- firstnucleotide       # Store the nucleotide for the first position of the sequence
  for (i in 2:seqlength)
  {
    prevnucleotide <- mysequence[i-1]     # Get the previous nucleotide in the new sequence
    # Get the probabilities of the current nucleotide, given previous nucleotide "prevnucleotide":
    probabilities  <- transitionmatrix[prevnucleotide,]
    # Choose the nucleotide at the current position of the sequence:
    nucleotide     <- sample(nucleotides, 1, rep=TRUE, prob=probabilities)
    mysequence[i]  <- nucleotide          # Store the nucleotide for the current position of the sequence
  }
  return(mysequence)
}
  • 运行函数
myinitialprobs <- c(0.3, 0.3, 0.2, 0.2) #对应函数体设置的"A", "C", "G", "T"顺序
generatemarkovseq(mytransitionmatrix, myinitialprobs, 30)
table(generatemarkovseq(mytransitionmatrix, myinitialprobs, 30))

result

参考文章
1、Hidden Markov Models — Bioinformatics 0.1 documentation
2、01 隐马尔可夫模型 - 马尔可夫链、HMM参数和性质 - 简书
3、Multilevel HMM tutorial
4、马尔可夫链_百度百科

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容