15 预测方法
15.1 微分方程模型
以 15.1 美日硫磺岛战役模型为例
微分方程如下
代码如下
dxy=@(t,x)[-0.0544*x(2)+54000*(t>=0&t<1)+6000*(t>=2&t<3)+13000*(t>=5&t<6);-0.0106*x(1)];
[t,xy]=ode45(dxy,[0:36],[0,21500])
subplot(211);
plot(t,xy(:,1),'r*',t,xy(:,2),'gD');
subplot(212);
plot(xy(:,1),xy(:,2));
其中 dxy=@(t,x)[] 是构造了一个具有 \(t,x\) 的函数表达式。方括号内用分号隔开了两个式子,分别表示两个微分方程(注意微分形式一定要在左边,方程个数和微分方程个数相同)
ode45是用于求微分方程数值解的函数
\([t,x]=ode45(Fun,tspan,x0)\) ,其中 \(Fun\) 表示函数名, \(tspan\) 表示求解区间(例中就是 \(t\) 的取值), \(x0\) 表示初始值(例中就是0和21500),它返回的 \(x\) 是一个 \(t\times2\) 的矩阵,用于存放不同 \(t\) 对应的两个变量。
由解出的 \(x\) ,就可以画出微分方程组的轨线。
15.2 灰色预测模型
灰色模型 \(Grey Model,GM\) ,根据较少的数据得到近似指数规律再进行建模的方法,但是只适用于中短期并且满足指数增长的预测。
累加生成:
令 \(x^{(0)}=(x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(n))\) 为原始序列
其生成序列为\(x^{(1)}=(x^{(1)}(1),x^{(1)}(2),...,x^{(1)}(n))\)
其中 \(x^{(1)}(k)=\sum_{i=1}^{k}x^{(0)}(i)\) ,也就是 \(x^{(1)}\) 是 \(x^{(0)}\) 的一个前缀和序列
\(r\) 次累加生成则有 \(x^{(r)}(k)=\sum_{i=1}^{k}x^{(r-1)}(i)\)
累加生成可以让非负数据变成连续单增的序列。如果有负数,可以进行移轴操作。
累减生成:
令 \(x^{(r)}\) 表示 \(r\) 次生成序列
有 \(x^{(r-1)}(k)=x^{(r)}(k)-x^{(r)}(k-1)\)
其实就是累加的逆运算,也可以叫做差分
可以用于生成序列求原序列
均值生成:
记 \(z^{(1)}=(z^{(1)}(2),z^{(1)}(3),...,z^{(1)}(n))\) 为 \(x^{(1)}\) 的均值生成序列
当 \(z^{(1)}(k)=0.5x^{(1)}(k)+0.5x^{(1)}(k-1),k=2,3,...,n\)
GM(1,1)模型
即一阶微分方程且含有1个变量的灰色模型
设时间序列 \(x^{(0)}=(x^{(0)}(1),x^{(0)}(2),...,x^{(0)}(n))\) 有 \(n\) 个观察值,通过累加生成新序列\(x^{(1)}=(x^{(1)}(1),x^{(1)}(2),...,x^{(1)}(n))\)
则 \(GM(1,1)\) 模型建立的白化形式微分方程为
其中 \(a\) 称为发展灰数, \(b\) 称为内生控制灰数
令
设 \(u\) 为待估参数向量
则微分方程可以表示为
利用最小二乘法求解得到
求解微分方程得到预测模型
然后进行差分操作,得到原始序列的灰色预测模型
两个参数中, \(a\) 主要控制系统发展态势的大小,其中
①当 \(-a<0.3\) 时, \(GM(1,1)\) 模型可用于中长期预测
②当 \(0.3<-a<0.5\) 时, \(GM(1,1)\) 模型可用于短期预测
③当 \(0.5<-a<0.1\) 时, 应该使用 \(GM(1,1)\) 改进模型,包括 \(GM(1,1)\) 残差修正模型
④当 $-a>1 $ 时,不宜采用 \(GM(1,1)\) 模型