使用移动平均比率法拢共分4步:1.求基准值;2.求比率;3.去噪声;4.拟合趋势线
以下使用论文《移动平均比率法预测门诊诊次》[1]中的案例进行计算讲解(后面有对案例中计算方法的个人理解)
案例展示
现有某医院2003年到2006年一共四年中每个月的门诊量(48个月),数据大致分布如下:
从数学的角度描述:我们现有包含4个周期,每个周期12个采样数据的一共48个数据的数据样本。现有输入:2003年1月起的48个月的门诊量;目标:能够预测出2007年以后每个月的门诊量
求基准值
使用平均移动的计算方法,具体计算流程如下:
由于周期=12,所以采用
上面的t是从第7个月开始的,因为当前t时间步基准值Mt的计算包括了前6个月与后6个月,所以只能计算出从第7个月开始到倒数第7个月的基准值(一共36个:(N-1)*T)。
*如果周期为奇数,则直接计算以当前时间步为中心点的周期内所有数据的平均值作为Mt
求比率St
S
t
=
y
t
/
M
t
St = yt/Mt
St=yt/Mt
*啊对,就这么朴实无华
*图片中的
y
t
/
T
t
=
S
t
∗
I
t
yt/Tt=St*It
yt/Tt=St∗It中的
I
t
It
It指的是噪声(包括高斯噪声),
T
t
=
M
t
Tt=Mt
Tt=Mt。所以接下来去噪!!
去噪声
1.同时间步平均
我们现在得到了36个St,即3个周期的比率(N个周期数据能得到N-1个周期的比率),将不同周期相同时间步的数据进行相加平均,最终得到单周期内每个时间步的比率St(案例中为12个)。
2.同周期内比率微调
单周期内St的期望应该为1(就是对周期内St求平均应该为1),而现在得到的St的期望是12.0443/12。为了达到期望为1的目标,所有St进行等比映射,得到调整系数为0.9963,而后之前得到的12个St都乘以0.9963,就得到了最终一年内每个月的比率St。
拟合趋势线
使用最小二乘法对全部的数据进行线性拟合:
得到:
y
=
14226.483
+
433.592
∗
T
y=14226.483+433.592*T
y=14226.483+433.592∗T,其中T为从2003年1月开始算起的月份序数。
所以最终预测计算方程为:
S
t
∗
(
14226.483
+
433.592
∗
T
)
St*(14226.483+433.592*T)
St∗(14226.483+433.592∗T)
OK!我们现在来算一下2007年1月的门诊量:
1月份的St=0.780516,T=49(从2003年1月开始算起)
所以
y
=
0.780516
∗
(
14226.483
+
433.592
∗
49
)
=
27686.84
y=0.780516*(14226.483+433.592*49)=27686.84
y=0.780516∗(14226.483+433.592∗49)=27686.84
*论文中好像弄错了。。。1到6月的趋势值跟7到12月的趋势值写反了,比率(季节指数)又写对了。。。
思考与分析
移动平均比率法的关键思想:
y
=
T
∗
S
∗
I
y=T*S*I
y=T∗S∗I,其中T是总趋势,S是比率即周期变动,I是噪声。
求基准值
第一步求总趋势T。
论文中求基准值的方法采用的是一种平均移动法,在其他论文中也有使用其他的方法求这个平均值,上述论文中的方法可做参考。求出的基准值最理想结果是:去除基准值后数据就能呈现周期变化,所以求基准值不一定要使用加权平均,最好是分析工程模型中的数据背景与特性,只有在确定样本数据是由周期数据与线性变化数据相加得到的时候,使用加权平均才能够完美剥离基准值与周期数据,其他时候多少有点偏差。
求比率
第二步去除T,求总趋势上的周期变动S*I。
这一步很简单,但是求比率是建立在你求解的模型符合乘法模型,即T*S,如果你的模型是加法模型:T+S,这种方法是会产生一些偏差的。
去噪声
第三步去除I,求S
这一步分两步,第一步去除不同周期的噪声,第二步去除同周期的噪声(做一些微调)。
第二步中同周期St期望为1,可以理解为保证周期数据是在基准线上下对称浮动。
求趋势线
这一步就是求总体趋势T
论文中使用最小二乘对所有数据进行拟合,但是说实话,总体趋势不是在求基准值时就得到了一种总体趋势吗?个人感觉如果对基准值进行拟合作为总体趋势结果能够更加准确,因为比率都是在基准值的基础上求来的。。。
补充
如果所求模型是加法模型(这种模型比较简单):
y
=
T
+
S
+
I
y=T+S+I
y=T+S+I
可以将求比率改为求间距,去噪声的第二步,将St的期望改为0就行了。
注意:上述移动平均比率法的周期一定是固定的
[1]王春如,卢爱玲,李薇佳,张蓉.移动平均比率法预测门诊诊次[J].中国病案,2007(12):38-40.