预测方法

小蒟蒻皮皮鱼 / 2023-07-31 / 原文

15 预测方法

15.1 微分方程模型

以 15.1 美日硫磺岛战役模型为例

微分方程如下

\[\left\{ \begin{array}{b} \frac{dA(t)}{dt}=-0.0544J(t)+u(t)\\ \frac{dJ(t)}{dt}=-0.0106A(t)\\ A(0)=0,J(0)=21500 \end{array} \right. \]

代码如下

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个变量的灰色模型

首先检验数据是否满足该模型的要求

计算数列的级比

\[\lambda (k)=\frac{x^{(0)}(k-1)}{x^{(0)}(k)},k=2,3,...,n \]

当所有的级比都落在区间 \(\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)\) 模型建立的白化形式微分方程为

\[\frac{dx^{(1)}}{dt}+ax^{(1)}=b \]

其中 \(a\) 称为发展灰数, \(b\) 称为内生控制灰数

\[B=\begin{pmatrix} -z^{(1)}(2) &1 \\ -z^{(1)}(3) &1 \\ \vdots & \vdots \\ -z^{(1)}(n) &1 \end{pmatrix} \ \ \ \ \ \ \ Y_n=\begin{pmatrix} x^{(0)}(2)\\ x^{(0)}(3)\\ \vdots \\ x^{(0)}(n) \end{pmatrix} \]

\(u\) 为待估参数向量

\[u=\begin{pmatrix} a\\ b \end{pmatrix} \]

则微分方程可以表示为

\[Y_n=Bu \]

利用最小二乘法求解得到

\[u=(B^TB)^{-1}B^TY_n \]

求解微分方程得到预测模型

\[\hat x^{(1)}(k+1)=( x^{(0)}(1) -\frac{b}{a})e^{-ak}+\frac{b}{a} \]

然后进行差分操作,得到原始序列的灰色预测模型

\[\hat x^{(0)}(k)=\hat x^{(1)}(k)-\hat x^{(1)}(k-1) \]

两个参数中, \(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)}$ 的绝对误差序列以及相对误差序列

\[\Delta^{0}(i)= | x^{(0)}(i)-\hat x^{(0)}(i)|,i=1,2,...,n\\ \Phi(i)= \frac{\Delta^{0}(i)}{ x^{(0)}(i)}\times 100\% \]

给定 \(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)=1-(\frac{1-0.5a}{1+0.5a})\lambda(k) \]

一般 \(|\rho(k)|<0.2\) 认为合格,$ \rho(k)<0.1$ 认为优秀