预测方法
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个变量的灰色模型
首先检验数据是否满足该模型的要求
计算数列的级比
当所有的级比都落在区间 \(\Theta=(e^{-\frac{2}{n+1}},e^{\frac{2}{n+1}})\) 时,才可以作为 \(GM(1,1)\) 的数据进行灰色预测
否则,需要对 \(x^{(0)}(k)\) 进行平移变换,使得它满足这个要求
设时间序列 \(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)\) 模型
模型检验
(1)残差检验
按预测模型计算 \(\hat x^{(1)}\) ,并通过累减得到 \(\hat x^{(0)}\) ,然后计算原始序列 \(x^{(0)}\) 与 $ \hat x^{(0)}$ 的绝对误差序列以及相对误差序列
给定 \(a\) ,当 \(\overline\Phi<a\) 成立,则模型为残差合格模型,一般 \(a=0.01,0.05,0.1\) 为优,合格,勉强合格
(2)级比偏差值检验
先计算出级比 \(\lambda (k)=\frac{x^{(0)}(k-1)}{x^{(0)}(k)},k=2,3,...,n\)
然后求出级比偏差
一般 \(|\rho(k)|<0.2\) 认为合格,$ \rho(k)<0.1$ 认为优秀