马尔科夫链(一)
文章目录
- 马尔科夫链(一)
- @[toc]
- 1 马尔可夫链
- 2 转移概率
- 2.1 一步转移
- 2.2 多步转移
- 3 C-K方程
- 4 矩阵运算方法
文章目录
- 马尔科夫链(一)
- @[toc]
- 1 马尔可夫链
- 2 转移概率
- 2.1 一步转移
- 2.2 多步转移
- 3 C-K方程
- 4 矩阵运算方法
1 马尔可夫链
定义:设随机过程 X n ( n = 0 , 1 , 2 … ) X_n(n=0,1,2\dots) Xn(n=0,1,2…)在有限集合内取值, X n X_n Xn的所有可能取值称为状态。定义转移概率
p n + 1 ( i , j ) = P ( X n + 1 = j ∣ X n = i , X n − 1 = i n − 1 , … X 0 = i 0 ) p_{n+1}(i,j)=\mathbb{P}(X_{n+1}=j|X_n=i,X_{n-1}=i_{n-1},\dots X_0=i_0) pn+1(i,j)=P(Xn+1=j∣Xn=i,Xn−1=in−1,…X0=i0)
即在随机过程 X n X_n Xn的所有历史状态下, X n + 1 X_{n+1} Xn+1的条件概率为 p n + 1 ( i , j ) p_{n+1}(i,j) pn+1(i,j)。如果 n + 1 n+1 n+1期的状态只与本期 X n X_n Xn有关,而与历史状态 X n − k ( k = 1 , 2 , … n ) X_{n-k}(k=1,2,\dots n) Xn−k(k=1,2,…n)无关,则称随机过程 X n X_n Xn具有马氏性,即
p n + 1 ( i , j ) = P ( X n + 1 = j ∣ X n = i ) p_{n+1}(i,j)=\mathbb{P}(X_{n+1}=j|X_n=i) pn+1(i,j)=P(Xn+1=j∣Xn=i)
对于任意时期 n n n,若
p n + 1 ( i , j ) = p n + 2 ( i , j ) = p n + 3 ( i , j ) = … p_{n+1}(i,j)=p_{n+2}(i,j)=p_{n+3}(i,j)=\dots pn+1(i,j)=pn+2(i,j)=pn+3(i,j)=…
P ( X n + 1 = j ∣ X n = i ) = P ( X n + 2 = j ∣ X n + 1 = i ) = … \mathbb{P}(X_{n+1}=j|X_n=i) =\mathbb{P}(X_{n+2}=j|X_{n+1}=i)=\dots P(Xn+1=j∣Xn=i)=P(Xn+2=j∣Xn+1=i)=…
即条件概率与初始时点无关,则称 X n X_n Xn为具有时间齐次性的马尔可夫链,简称时齐性马尔可夫链。后文默认的马尔科夫链都是时齐性的。关于马尔科夫链的链的理解:
X n + 1 ← X n ← X n − 1 ← X n − 2 … X_{n+1}\gets X_{n}\gets X_{n-1}\gets X_{n-2}\dots Xn+1←Xn←Xn−1←Xn−2…
即 X n + 1 X_{n+1} Xn+1只与 X n X_{n} Xn有关, X n X_{n} Xn只与 X n − 1 X_{n-1} Xn−1有关……就如同一个链条,将相邻时期的随机过程 X n X_{n} Xn串联起来。
2 转移概率
2.1 一步转移
例:在抽奖试验中,试验结果只有2元与0元,且抽奖成本为1元。设抽中的概率为0.4,为抽中的概率为0.6。某人退出试验的条件是要么身无分文,要么达到一定金额 N N N离开。
设 X n X_n Xn表示某人 n n n次抽奖后的金额, X n + 1 X_{n+1} Xn+1只与 X n X_n Xn有关,而与之前的状态 X n − 1 , X n − 2 … X 0 X_{n-1},X_{n-2}\dots X_0 Xn−1,Xn−2…X0无关,则 X n X_{n} Xn具有马氏性,即
p n + 1 ( i , j ) = P ( X n + 1 = j ∣ X n = i , X n − 1 = i n − 1 , … X 0 = i 0 ) = P ( X n + 1 = j ∣ X n = i ) \begin{aligned} p_{n+1}(i,j)=&\mathbb{P}(X_{n+1}=j|X_n=i,X_{n-1}=i_{n-1},\dots X_0=i_0)\\ \\ =&\mathbb{P}(X_{n+1}=j|X_n=i) \end{aligned} pn+1(i,j)==P(Xn+1=j∣Xn=i,Xn−1=in−1,…X0=i0)P(Xn+1=j∣Xn=i)
其中转移概率 p ( i , j ) p(i,j) p(i,j)满足
p n + 1 ( i , j ) = P ( X n + 1 = j ∣ X n = i ) p_{n+1}(i,j)=\mathbb{P}(X_{n+1}=j|X_n=i) pn+1(i,j)=P(Xn+1=j∣Xn=i)
在 n n n次抽奖过程中,有第 i i i元变为 i − 1 i-1 i−1元的概率为
p ( i , i − 1 ) = P ( X n + 1 = i − 1 ∣ X n = i ) = 0.6 p(i,i-1)=\mathbb{P}(X_{n+1}=i-1|X_n=i)=0.6 p(i,i−1)=P(Xn+1=i−1∣Xn=i)=0.6
在 n n n次抽奖过程中,有第 i i i元变为 i + 1 i+1 i+1元的概率为
p ( i , i + 1 ) = P ( X n + 1 = i − 1 ∣ X n = i ) = 0.4 p(i,i+1)=\mathbb{P}(X_{n+1}=i-1|X_n=i)=0.4 p(i,i+1)=P(Xn+1=i−1∣Xn=i)=0.4
则转移概率与停止条件
p ( i , i + 1 ) = 0.4 , p ( i , i − 1 ) = 0.6 , i ∈ ( 0 , N ) p ( 0 , 0 ) = p ( N , N ) = 1 \begin{aligned} &p(i,i+1)=0.4,\\ \\ &p(i,i-1)=0.6,i\in(0,N)\\ \\ &p(0,0)=p(N,N)=1 \end{aligned} p(i,i+1)=0.4,p(i,i−1)=0.6,i∈(0,N)p(0,0)=p(N,N)=1
转移概率矩阵为
P = [ p ( 0 , 0 ) p ( 0 , 1 ) … p ( 0 , N ) p ( 1 , 0 ) p ( 1 , 1 ) … p ( 1 , N ) ⋮ ⋮ ⋮ p ( N , 0 ) p ( N , 1 ) … p ( N , N ) ] \boldsymbol P= \left[\begin{array}{cccc} p(0,0)&p(0,1)&\dots& p(0,N)\\ p(1,0)&p(1,1)&\dots& p(1,N)\\ \vdots&\vdots&&\vdots \\ p(N,0)&p(N,1)&\dots& p(N,N)\\ \end{array}\right] P= p(0,0)p(1,0)⋮p(N,0)p(0,1)p(1,1)⋮p(N,1)………p(0,N)p(1,N)⋮p(N,N)
具体地,当 N = 5 N=5 N=5时,
P = [ 1 0 0 0 0 0 0.6 0 0.4 0 0 0 0 0.6 0 0.4 0 0 0 0 0.6 0 0.4 0 0 0 0 0.6 0 0.4 0 0 0 0 0 1 ] \boldsymbol P= \left[\begin{array}{cccccc} 1&0&0&0&0&0\\ 0.6&0&0.4&0&0&0\\ 0&0.6&0&0.4&0&0\\ 0&0&0.6&0&0.4&0\\ 0&0&0&0.6&0&0.4\\ 0&0&0&0&0&1\\ \end{array}\right] P= 10.60000000.600000.400.600000.400.600000.40000000.41
其中 p ( i , j ) p(i,j) p(i,j)表示 i i i状态转移到 j j j状态的概率。根据概率的完备性,我们有
p ( i , j ) ≥ 0 ∑ j p ( i , j ) = 1 \begin{aligned} &p(i,j)\ge0 \quad \sum_jp(i,j)=1 \end{aligned} p(i,j)≥0j∑p(i,j)=1
2.2 多步转移
定义从状态 i i i到 j j j的 m m m步转移概率为
p m ( i , j ) = P ( X n + m = j ∣ X n = i ) p^m(i,j)=\mathbb{P}(X_{n+m}=j|X_n=i) pm(i,j)=P(Xn+m=j∣Xn=i)
其中 p m ( i , j ) p^m(i,j) pm(i,j)表示 m m m步转移矩阵 P m \mathbb{P}^m Pm矩阵的 i i i行 j j j列。事实上, m m m步转移矩阵就是一步转移矩阵 P \mathbb{P} P的 m m m次幂,即 P m \mathbb{P}^m Pm
proof:以两步转移概率为例,设样本空间 Ω \Omega Ω的总状态数为 n n n,初始状态 X 0 = i X_0=i X0=i,则一步转移状态为$X_1=k,k=1,2,3\dots n 。最后状态 。最后状态 。最后状态X_2=j 。这里 。这里 。这里X_1=k$为中间状态。因为
p 2 ( i , j ) = P ( X 2 = j ∣ X 0 = i ) = ∑ k = 1 n P ( X 2 = j , X 1 = k ∣ X 0 = i ) = ∑ k = 1 n P ( X 2 = j , X 1 = k , X 0 = i ) P ( X 0 = i ) = ∑ k = 1 n P ( X 2 = j , X 1 = k , X 0 = i ) P ( X 1 = k , X 0 = i ) P ( X 1 = k , X 0 = i ) P ( X 0 = i ) = ∑ k = 1 n P ( X 2 = j ∣ X 1 = k , X 0 = i ) P ( X 1 = k ∣ X 0 = i ) = ∑ k = 1 n P ( X 2 = j ∣ X 1 = k ) P ( X 1 = k ∣ X 0 = i ) = ∑ k = 1 n p ( i , k ) p ( k , j ) \begin{aligned} p^2(i,j)=&\mathbb{P}(X_2=j|X_0=i)\\ \\ =&\sum_{k=1}^n\mathbb{P}(X_2=j,X_1=k|X_0=i)\\ \\ =&\sum_{k=1}^n\frac{\mathbb{P}(X_2=j,X_1=k,X_0=i)}{\mathbb{P}(X_0=i)}\\ \\ =&\sum_{k=1}^n\frac{\mathbb{P}(X_2=j,X_1=k,X_0=i)}{\mathbb{P}(X_1=k,X_0=i)} \frac{\mathbb{P}(X_1=k,X_0=i)}{\mathbb{P}(X_0=i)}\\ \\ =&\sum_{k=1}^n\mathbb{P}(X_2=j|X_1=k,X_0=i)\mathbb{P}(X_1=k|X_0=i)\\ \\ =&\sum_{k=1}^n\mathbb{P}(X_2=j|X_1=k)\mathbb{P}(X_1=k|X_0=i)\\ \\ =&\sum_{k=1}^np(i,k)p(k,j) \end{aligned} p2(i,j)=======P(X2=j∣X0=i)k=1∑nP(X2=j,X1=k∣X0=i)k=1∑nP(X0=i)P(X2=j,X1=k,X0=i)k=1∑nP(X1=k,X0=i)P(X2=j,X1=k,X0=i)P(X0=i)P(X1=k,X0=i)k=1∑nP(X2=j∣X1=k,X0=i)P(X1=k∣X0=i)k=1∑nP(X2=j∣X1=k)P(X1=k∣X0=i)k=1∑np(i,k)p(k,j)
于是得到
p 2 ( i , j ) = ∑ k = 1 n p ( i , k ) p ( k , j ) = p ( i , 1 ) p ( 1 , j ) + p ( i , 2 ) p ( 2 , j ) + ⋯ + p ( i , n ) p ( n , j ) \begin{aligned} p^2(i,j)&=\sum_{k=1}^np(i,k)p(k,j)\\ \\ &=p(i,1)p(1,j)+p(i,2)p(2,j)+\dots +p(i,n)p(n,j) \end{aligned} p2(i,j)=k=1∑np(i,k)p(k,j)=p(i,1)p(1,j)+p(i,2)p(2,j)+⋯+p(i,n)p(n,j)
即一步转移概率矩阵 P \mathbb{P} P自己与自己相乘。
3 C-K方程
C-K(chapman-kolmogorov)方程将任意 n + m n+m n+m步转移概率分解为 m m m步转移概率矩阵与 n n n步转移概率矩阵的乘积,即
P m + n ( i , j ) = P ( X m + n = j ∣ X 0 = i ) = ∑ k p n ( i , k ) p m ( k , j ) \mathbb{P}^{m+n}(i,j)=\mathbb{P}(X_{m+n}=j|X_0=i)=\sum_kp^n(i,k)p^m(k,j) Pm+n(i,j)=P(Xm+n=j∣X0=i)=k∑pn(i,k)pm(k,j)
证明略参考相关随机过程书籍。事实上,两步转移是C-K方程的特例,令 m = n = 1 m=n=1 m=n=1得
p 2 ( i , j ) = ∑ k = 1 n p ( i , k ) p ( k , j ) p^2(i,j)=\sum_{k=1}^np(i,k)p(k,j) p2(i,j)=k=1∑np(i,k)p(k,j)
4 矩阵运算方法
由于多步转移概率矩阵计算需要用到矩阵乘法,现介绍以下几种方法:
- 软件计算(Matlab/Python/R/Stata/Octave/Mathmatical等)
大部分软件基本支持数值计算,这也是最快捷的方式。
- 暴力计算
不管运算量级多大,按照运算法则干就完事。但这种方法有些“莽夫”。不推荐
- 相似变换
参考本科教程任意一本线性代数的内容,将需要运算的矩阵作相似变换,相对暴力计算法,将大大提高矩阵的幂运算的效率。
参考文献:
刘次华 . 随机过程(第五版) [M]. 华中科技大学出版社,2014