一、基于绝对分布的马尔可夫链预测

步骤1、对历史数据进行分组

步骤2、确定观测值的状态,写出频数矩阵(niji,j∈E和一步转移概率矩阵(fij)i,j∈E,其中fij=nij/(n-1),其中n为样本容量,当n→∞时,可用频数估计概率

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_数据


从而得到一步转移概率矩阵

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_数据_02


步骤3、“马氏性”检验;马尔可夫性的统计检验(马氏性检验) 步骤4、已知时刻 l 时系统取各个状态的概率可视为马尔可夫链的初始分布,比如xl取状态2,m=5,则初始分布P(0)=(0,1,0,0,0),于是 l+1 时的绝对分布

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_03


可认为时刻 l+1 时系统所取的状态 j 满足

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_04


从而预测 l+t 时刻的状态:

可先求

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_数据_05


然后再依据时刻 l+t 时刻的状态 j 满足

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_06


来预测系统应取的状态;

步骤5、还可以用马氏链的平稳性,遍历性对系统分析。

二、叠加马氏链预测

步骤1、对历史数据进行分组;

步骤2、“马氏性”检验;马尔可夫性的统计检验(马氏性检验) 步骤3、计算各阶的一步转移概率矩阵P1,P2,……,Pk,I={1,2,……,k},其中P2=(fij(2))i,j∈E,其中fij(2)=nij(2)/(n-2),其他类推;

步骤4、如果要预测时刻 l+1 的状态,可分别利用 l,l-1,……,l-k+1作为初始状态,列表分析:

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_概率论_07


l+1 时所处的状态 j 满足

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_08


步骤6、进行平稳性,遍历性及其他分析。

三、加权马氏链预测

步骤1、对历史数据进行分组;

步骤2、“马氏性”检验;马尔可夫性的统计检验(马氏性检验) 步骤3、计算各阶的一步转移概率矩阵P1,P2,……,Pk,I={1,2,……,k},其中P2=(fij(2))i,j∈E,其中fij(2)=nij(2)/(n-2),其他类推;

步骤4、计算各阶相关系数:

计算各阶自相关系数rk

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_09


式中rk表示第k阶(滞时为k个时期)的自相关系数。

计算规范的相关系数:

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_概率论_10


易知

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_11


步骤5、预测n+1时段的状态:不妨设 I={1,2,……,5},列表分析(见下表加权马氏链预测分析表):

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_12


其中

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_13


时刻 n+1 时所处状态 j 满足

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_状态转移_14


步骤6、重复1-5,预测 n+2 时的状态,其余类推。

步骤7、讨论其他性质。

四、马尔可夫链预测方法(绝对分布+叠加+加权)的实例应用

本文以 1951 年到 2004 年共 53 年的温州地区的台风诱发日最大降雨量历史资料为研究对象,使用马尔可夫链预测方法进行预测分析。温州地区台风诱发的日最大降雨量历史资料见表 4-1:

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_状态转移_15


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_数据_16

4.1 基于绝对分布的马尔可夫链预测方法(应用例子)

使用基于绝对分布的马尔可夫链预测方法对 2005 年台风诱发的日最大降水量进行预测。

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_17


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_概率论_18


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_概率论_19


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_机器学习_20


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_机器学习_21


(5)2004 年的台风诱发日最大降雨量处于状态 4,则可认为初始分布为P(0) =(0, 0, 0, 1, 0),2005 年的预测向量为 P(1) = P(0)*Pij =(0.3, 0.3, 0, 0.2, 0.2)。由此可知 2005 年台风诱发日最大降水量处于状态 1 或 2,考虑灾情影响,取为 [85.43,98.75] 范围。而 2005 年实际的台风诱发日最大降水量为 297.8mm,可见预测结果出现较大偏差。使用基于绝对分布的马尔可夫链预测方法对 1956-2004 年温州地区台风诱发的日最大降水量进行预测,结果见表 4-4。

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_概率论_22


由上表可以看出,基于绝对分布的马尔可夫链预测方法精度不是很高,预测状态差别在 2 个状态以上的年份达到 8 个。原因主要有以下两点:第一,状态的划分通常是人为定义界限,需要不断调整,以取得较为满意的结果,有一定的随意性。在此方法中,若将各年台风诱发日最大降雨量划分为 3 个状态,3 状态界限分别为

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_状态转移_23


2005 年的预测结果符合实际,但界定范围偏差比较大,即大于 118.74mm 的降雨量都考虑在内,对灾害的预测分析意义不大。第二,基于绝对分布的马尔可夫链预测方法主要依赖于一步转移概率计算,没有考虑多阶转移概率矩阵,对系统的把握程度不高。

4.2 叠加马尔可夫链预测方法 (应用例子)

使用叠加马尔可夫链预测方法对 2005 年台风诱发的日最大降水量进行预测。

(1)(2)(3)均与 4.1 中前三个步骤相同。

(4)不同滞时(步长)的马尔可夫链的转移概率矩阵如下:

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_24


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_概率论_25


不同滞时(步长)的马尔可夫链的转移概率矩阵,它决定了指标值状态转移过程的概率法则。

(5)按照 2000、2001、2002、2003、2004 年的年日最大降雨量及其相应的状态转移概率矩阵对 2005 年台风诱发的日最大降雨量所处状态进行预测,结果如表 4-5 所示。

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_机器学习_26


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_数据_27


max{Pi,i=1, 2, 3, 4, 5} = P5,即 2005 年台风诱发的日最大降雨量处于状态 5,即在[165.38,300]范围内。2005 年实际的台风诱发日最大降水量为 297.8mm,处于此范围内,可见预测结果准确。

使用叠加马尔可夫链预测方法对 1956-2004 年温州地区台风诱发的日最大降水量进行预测,结果见表 4-6。

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_28


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_算法_29


由上表可以看出,虽然预测状态差别在 2 个状态以上的年份也为 8 个,但是实际状态比预测状态高的年份,也就是预测灾害出现失误(考虑实际状态比预测状态大 2 以上)的年份(5 年)比使用基于绝对分布的马尔可夫链预测方法要少(7 年)。叠加马尔可夫链预测方法精度要比基于绝对分布的马尔可夫链预测方法高。如果能更好的对状态进行划分,预测结果会更好一些。

4.3 加权马尔可夫链法预测方法(应用例子)

使用加权马尔可夫链预测方法对 2005 年日最大降水量进行预测步骤如下:

(1)(2)(3)均与 4.3.1 节中前三个步骤相同。

(4)计算各阶自相关系数和各种步长的马尔可夫链的权重,见表 4-7。

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_概率论_30


(5)不同滞时(步长)的马尔可夫链的转移概率矩阵与 4.3.2 节步骤(4)相同。

(6)按照 2000、2001、2002、2003、2004 年的年日最大降雨量及其相应的状态转移概率矩阵对 2005 年台风诱发的年日最大降雨量所处状态进行预测,结果见表 4-8。

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_机器学习_31


由表 4-8 可知, max{Pi,i ∈ E}=2444.0,此时 i=5 即 2005 年的预测状态为 5,即 2005年台风诱发的日最大降雨量在以下区间内:

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_概率论_32


2005年台风诱发的实际日最大降雨量为 297.8mm,在预测范围之内。2005 年的强台风“海棠”使浙江南部地区普降特大暴雨。温州地区的日最大降雨量也创建国以来的新高。可见,用加权马尔可夫链预报每年日最大降雨量的趋势正确。

使用加权马尔可夫链预测方法对 1956-2004 年温州地区台风诱发的日最大降水量进行预测,结果见表 4-9。

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_数据_33


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_数据_34


由上表可以看出,预测状态差别在 2 个状态以上的年份也和预测灾害出现失误的年份(3 年)数量明显减少,精度相比绝对分布的马尔可夫链预测方法和叠加马尔可夫链预测方法要高。叠加马尔可夫链预测方法没有考虑各阶(各种步长)马尔可夫链的绝对概率在叠加中所起的作用,即认为各阶(各种步长)马尔可夫链的绝对概率所起的作用是相同的,而加权马尔可夫链预测方法考虑到这一点。如果能更好的对状态进行划分,预测精度要比叠加马尔可夫链预测方法高许多。

4.4 基于“新陈代谢”思想改进的马尔可夫链(应用例子)

改进的应用的原理:
在灰色模型中,考虑改变初始条件可以改进模型的精度。将此种思想应用到马尔可夫链,也可以改进模型的预测精度。一般的马尔可夫链模型采用一步或两步转移概率矩阵,转移矩阵的数据来源固定不变。由于预测较远时刻对象所处的状态时,很久以前的数据对预测的影响可以视为很小,考虑将新陈代谢的方法应用到马尔可夫链模型中,去掉旧的数据并补充新的数据。对于状态序列,去掉第一个状态值并加上已预测对象所处的状态值,得出新的一步转移概率矩阵,再以已预测对象所处状态分布作为初始分布,求新的预测值所处状态。即将已预测对象的各种状态值视为权重,对新的预测对象进行所处状态预测。

采用改进的马尔可夫链方法,对 2004 年台风诱发的年日最大降雨量所处状态进行预测。

去掉 1951 年数据,将 2003 年使用基于绝对分布的马尔可夫链预测方法的预测数据代入,构成新的数据。因 2003 年有 3/9 的概率处于状态 1,2/9 的概率处于状态 2,4,5,对此求出各自新的一步转移矩阵:

使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_状态转移_35


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_机器学习_36


使用马尔可夫链预测发病趋势的python代码实现过程 马尔可夫链预测法_机器学习_37


由此可见,2004 年的台风诱发的年日最大降雨量处于状态 4,与实际相符合。此种改进可以对马尔可夫链方法进行有效的修正。同时也可以显著缩小状态区间,使得预测值更有目的性。

对于台风频繁影响地区,每年日最大降雨量均与台风诱发降雨有关。应用马尔可夫链对每年台风诱发的日最大降雨量进行预测,可以在一定程度上对台风诱发降雨量的强度进行评估,对于防洪、防降雨诱发的滑坡、泥石流等次生灾害有一定的指导作用。

五、基于灰色系统的马尔可夫链预测模型