§11. 利用Matlab 编程进行马尔可夫预测
利用Matlab 和SPSS 学软件进行Markov 分析是非常方便的,只需要进行相应的矩阵乘法即可。
1. 原始数据
以下我们以教材第3章第7节中的例子,进行分析计算。
例如,考虑某地区农业收成变化的三个状态,即“丰收”、“平收”和“欠收”。记E 1为“丰收”状态,E 2为“平收”状态,E 3为“欠收”状态。表3.7.1给出了该地区1965~2004年期间农业收成的状态变化情况。试计算该地区农业收成变化的状态转移概率矩阵。
表3.7.1 某地区农业收成变化的状态转移情况
2. 马尔可夫预测的基本原理
(1)首先计算状态转移概率矩阵
假定某一个事件的发展过程有n 个可能的状态,即E 1,E 2, …,E n 。记P ij
为从状态E i 转变为状态E j 的状态转移概率,则矩阵
⎡P 11
⎢P 21
P =⎢
⎢ ⎢⎣P n 1
P 12P 22 P n 2
P 1n ⎤ P 2n ⎥⎥ ⎥
⎥
P nn ⎦
从表3.7.1中可以知道,在15个从E 1出发(转移出去)的状态中,有3个是从E 1转移到E 1的(即1→2,24→25,34→35),有7个是从E 1转移到E 2的(即2→3,9→10,12→13,15→16,29→30,35→36,39→40),有5个是从E 1转移到E 3的(即6→7,17→18,20→21,25→26,31→32)。
所以
P 11=P (E 1→E 1) =P (E 1E 1) =
3
=0. 2000 15
7
=0. 466715 5
=0. 333315
P 12=P (E 1→E 2) =P (E 2E 1) =
P 13=P (E 1→E 3) =P (E 3E 1) =
按照上述同样的办法计算可以得到
P 21=P (E 2→E 1) =P (E 1E 2) =
7
=0. 538513 2
=0. 153813
P 22=P (E 2→E 2) =P (E 2E 2) =
P 23=P (E 2→E 3) =P (E 3E 2) =
4
=0. 307713
P 31=P (E 3→E 1) =P (E 1E 3) =
4
=0. 363611 5
=0. 454511
P 32=P (E 3→E 2) =P (E 2E 3) =
P 33=P (E 3→E 3) =P (E 3E 3) =
2
=0. 181811
所以,该地区农业收成变化的状态转移概率矩阵为
⎡0. 20000. 46670. 3333⎤
⎥
0. 53850. 15380. 3077 P =⎢⎢⎥⎢⎣0. 36360. 45450. 1818⎥⎦
(2)进行预测计算
状态概率πj (k)表示事件在初始(k =0)状态为已知的条件下,经过k 次状态转移后,在第k 个时刻(时期)处于状态E j 的概率。根据概率的性质,显然有:
n
∑π
j =1
j
(k ) =1
从初始状态开始,经过k 次状态转移后到达状态E j 这一状态转移过程,可以看作是首先经过(k -1)次状态转移后到达状态E i ,然后再由E i 经过一次状态转移到达状态E j 。根据马尔可夫过程的无后效性及Bayes 条件概率公式,有:
πj (k ) =∑πj (k -1) P ij
i =1
n
(j =1, 2, , n )
若记行向量π(k ) =[π1(k ), π2(k ), , πn (k )],则由(3.7.7)式可以得到逐次计算状态概率的递推公式:
⎧π(1) =π(0) P
⎪1⎪π(2) =π(1) P =π(0) P ⎨
⎪
⎪π(k ) =π(k -1) P = =π(0) P k ⎩
式中:π(0) =[π1(0), π2(0), , πn (0)]为初始状态概率向量。
3. 利用Matlab 编程进行马尔可夫预测计算
以2004年的农业收成状态为初始状态,预测今后11年(即2005-2015)中每一年的农业收成状态。
源程序(markov.m ),如下:
clear
clc
% 读入状态转移概率矩阵
p=[0.2000 0.4667 0.3333;0.5385 0.1538 0.3077;0.3636 0.4545 0.1818]; % 读入初始状态概率向量(2004年的农业收成状态) x=[0,1,0];
% 预测今后11年(即2005-2015)的农业收成状态 for i=1:11, y=x*p^i end
程序运行后,输出结果如下: y =
0.5385 0.1538 0.3077 y =
0.3024 0.4148 0.2827 y =
0.3867 0.3334 0.2798 y =
0.3586 0.3589 0.2823 y =
0.3677 0.3509 0.2813
y =
0.3648 0.3534 0.2817 y =
0.3657 0.3526 0.2815 y =
0.3654 y =
0.3655 y =
0.3654 y =
0.3654 0.3529 0.2816 0.3528 0.2815 0.3528 0.2815 0.3528 0.2815
§11. 利用Matlab 编程进行马尔可夫预测
利用Matlab 和SPSS 学软件进行Markov 分析是非常方便的,只需要进行相应的矩阵乘法即可。
1. 原始数据
以下我们以教材第3章第7节中的例子,进行分析计算。
例如,考虑某地区农业收成变化的三个状态,即“丰收”、“平收”和“欠收”。记E 1为“丰收”状态,E 2为“平收”状态,E 3为“欠收”状态。表3.7.1给出了该地区1965~2004年期间农业收成的状态变化情况。试计算该地区农业收成变化的状态转移概率矩阵。
表3.7.1 某地区农业收成变化的状态转移情况
2. 马尔可夫预测的基本原理
(1)首先计算状态转移概率矩阵
假定某一个事件的发展过程有n 个可能的状态,即E 1,E 2, …,E n 。记P ij
为从状态E i 转变为状态E j 的状态转移概率,则矩阵
⎡P 11
⎢P 21
P =⎢
⎢ ⎢⎣P n 1
P 12P 22 P n 2
P 1n ⎤ P 2n ⎥⎥ ⎥
⎥
P nn ⎦
从表3.7.1中可以知道,在15个从E 1出发(转移出去)的状态中,有3个是从E 1转移到E 1的(即1→2,24→25,34→35),有7个是从E 1转移到E 2的(即2→3,9→10,12→13,15→16,29→30,35→36,39→40),有5个是从E 1转移到E 3的(即6→7,17→18,20→21,25→26,31→32)。
所以
P 11=P (E 1→E 1) =P (E 1E 1) =
3
=0. 2000 15
7
=0. 466715 5
=0. 333315
P 12=P (E 1→E 2) =P (E 2E 1) =
P 13=P (E 1→E 3) =P (E 3E 1) =
按照上述同样的办法计算可以得到
P 21=P (E 2→E 1) =P (E 1E 2) =
7
=0. 538513 2
=0. 153813
P 22=P (E 2→E 2) =P (E 2E 2) =
P 23=P (E 2→E 3) =P (E 3E 2) =
4
=0. 307713
P 31=P (E 3→E 1) =P (E 1E 3) =
4
=0. 363611 5
=0. 454511
P 32=P (E 3→E 2) =P (E 2E 3) =
P 33=P (E 3→E 3) =P (E 3E 3) =
2
=0. 181811
所以,该地区农业收成变化的状态转移概率矩阵为
⎡0. 20000. 46670. 3333⎤
⎥
0. 53850. 15380. 3077 P =⎢⎢⎥⎢⎣0. 36360. 45450. 1818⎥⎦
(2)进行预测计算
状态概率πj (k)表示事件在初始(k =0)状态为已知的条件下,经过k 次状态转移后,在第k 个时刻(时期)处于状态E j 的概率。根据概率的性质,显然有:
n
∑π
j =1
j
(k ) =1
从初始状态开始,经过k 次状态转移后到达状态E j 这一状态转移过程,可以看作是首先经过(k -1)次状态转移后到达状态E i ,然后再由E i 经过一次状态转移到达状态E j 。根据马尔可夫过程的无后效性及Bayes 条件概率公式,有:
πj (k ) =∑πj (k -1) P ij
i =1
n
(j =1, 2, , n )
若记行向量π(k ) =[π1(k ), π2(k ), , πn (k )],则由(3.7.7)式可以得到逐次计算状态概率的递推公式:
⎧π(1) =π(0) P
⎪1⎪π(2) =π(1) P =π(0) P ⎨
⎪
⎪π(k ) =π(k -1) P = =π(0) P k ⎩
式中:π(0) =[π1(0), π2(0), , πn (0)]为初始状态概率向量。
3. 利用Matlab 编程进行马尔可夫预测计算
以2004年的农业收成状态为初始状态,预测今后11年(即2005-2015)中每一年的农业收成状态。
源程序(markov.m ),如下:
clear
clc
% 读入状态转移概率矩阵
p=[0.2000 0.4667 0.3333;0.5385 0.1538 0.3077;0.3636 0.4545 0.1818]; % 读入初始状态概率向量(2004年的农业收成状态) x=[0,1,0];
% 预测今后11年(即2005-2015)的农业收成状态 for i=1:11, y=x*p^i end
程序运行后,输出结果如下: y =
0.5385 0.1538 0.3077 y =
0.3024 0.4148 0.2827 y =
0.3867 0.3334 0.2798 y =
0.3586 0.3589 0.2823 y =
0.3677 0.3509 0.2813
y =
0.3648 0.3534 0.2817 y =
0.3657 0.3526 0.2815 y =
0.3654 y =
0.3655 y =
0.3654 y =
0.3654 0.3529 0.2816 0.3528 0.2815 0.3528 0.2815 0.3528 0.2815