灰色预测模型
灰色预测的主要特点是模型使用的不是原始数据序列,而是生成的数据序列。核心体系是灰色模型,即对原始数据作累加生成(或其他方法生成)得到近似的指数规律再进行建模的方法,优点是不需要很多的数据,一般只需要 4 个数据,就能解决历史数据少、序列的完整性及可靠性低的问题;能利用微分方程来充分挖掘系统本质,精度高;能将无规律的原始数据进行生成得到规律性较强的生成序列,运算简便,易于检验,不考虑分布规律,不考虑变化趋势。缺点是只适用于中短期的预测,只适合指数增长的预测。
GM(1,1)预测模型
G M ( 1 , 1 ) GM(1,1) GM(1,1)表示的是一阶微分方程,且只含有一个变量的灰色模型。
- G M ( 1 , 1 ) GM(1,1) GM(1,1)模型预测方法
定义: 已知参考数据列
x
(
0
)
=
(
x
(
0
)
(
1
)
,
x
(
0
)
(
2
)
,
…
,
x
(
0
)
(
n
)
)
x^{(0)} = (x^{(0)}(1), x^{(0)}(2), \dots, x^{(0)}(n))
x(0)=(x(0)(1),x(0)(2),…,x(0)(n))
1
1
1次累加生成序列
(
1
−
A
G
O
)
(1 - AGO)
(1−AGO)
x
(
1
)
=
(
x
(
1
)
(
1
)
,
x
(
1
)
(
2
)
,
…
,
x
(
1
)
(
n
)
)
=
(
x
(
0
)
(
1
)
,
x
(
0
)
(
1
)
+
x
(
0
)
(
2
)
,
…
,
x
(
0
)
(
1
)
+
⋯
+
x
(
0
)
(
n
)
)
,
\begin{align*} x^{(1)} &= (x^{(1)}(1), x^{(1)}(2), \dots, x^{(1)}(n)) \\ &= (x^{(0)}(1), x^{(0)}(1) + x^{(0)}(2), \dots, x^{(0)}(1) + \cdots + x^{(0)}(n)), \end{align*}
x(1)=(x(1)(1),x(1)(2),…,x(1)(n))=(x(0)(1),x(0)(1)+x(0)(2),…,x(0)(1)+⋯+x(0)(n)),
式中:
x
(
1
)
(
k
)
=
∑
i
=
1
k
x
(
0
)
(
i
)
x^{(1)}(k) = \sum\limits_{i=1}^{k} x^{(0)}(i)
x(1)(k)=i=1∑kx(0)(i),
k
=
1
,
2
,
…
,
n
k = 1,2,\dots,n
k=1,2,…,n。
x
(
1
)
x^{(1)}
x(1)的均值生成序列
z
(
1
)
=
(
z
(
1
)
(
2
)
,
z
(
1
)
(
3
)
,
…
,
z
(
1
)
(
n
)
)
,
z^{(1)} = (z^{(1)}(2), z^{(1)}(3), \dots, z^{(1)}(n)),
z(1)=(z(1)(2),z(1)(3),…,z(1)(n)),
式中:
z
(
1
)
(
k
)
=
0.5
x
(
1
)
(
k
)
+
0.5
x
(
1
)
(
k
−
1
)
z^{(1)}(k) = 0.5x^{(1)}(k) + 0.5x^{(1)}(k - 1)
z(1)(k)=0.5x(1)(k)+0.5x(1)(k−1),
k
=
2
,
3
,
…
,
n
k = 2,3,\dots,n
k=2,3,…,n。
建立灰微分方程
x
(
0
)
(
k
)
+
a
z
(
1
)
(
k
)
=
b
,
k
=
2
,
3
,
…
,
n
,
x^{(0)}(k) + az^{(1)}(k) = b, \quad k = 2,3,\dots,n,
x(0)(k)+az(1)(k)=b,k=2,3,…,n,
相应的白化微分方程为
d
x
(
1
)
d
t
+
a
x
(
1
)
(
t
)
=
b
(
1
)
.
\frac{dx^{(1)}}{dt} + ax^{(1)}(t) = b \quad (1).
dtdx(1)+ax(1)(t)=b(1).
记
u
=
[
a
,
b
]
T
u = [a, b]^T
u=[a,b]T,
Y
=
[
x
(
0
)
(
2
)
,
x
(
0
)
(
3
)
,
…
,
x
(
0
)
(
n
)
]
T
Y = [x^{(0)}(2), x^{(0)}(3), \dots, x^{(0)}(n)]^T
Y=[x(0)(2),x(0)(3),…,x(0)(n)]T,
B
=
[
−
z
(
1
)
(
2
)
1
−
z
(
1
)
(
3
)
1
⋮
⋮
−
z
(
1
)
(
n
)
1
]
B = \begin{bmatrix} -z^{(1)}(2) & 1 \\ -z^{(1)}(3) & 1 \\ \vdots & \vdots \\ -z^{(1)}(n) & 1 \end{bmatrix}
B=
−z(1)(2)−z(1)(3)⋮−z(1)(n)11⋮1
,则由最小二乘法,求得使
J
(
u
)
=
(
Y
−
B
u
)
T
(
Y
−
B
u
)
J(u) = (Y - Bu)^{\mathrm{T}}(Y - Bu)
J(u)=(Y−Bu)T(Y−Bu) 达到最小值的
u
u
u 的估计值为
u
^
=
[
a
^
,
b
^
]
T
=
(
B
T
B
)
−
1
B
T
Y
,
\hat{\boldsymbol{u}} = [\hat{a}, \hat{b}]^{\mathrm{T}} = (B^{\mathrm{T}}B)^{-1}B^{\mathrm{T}}Y,
u^=[a^,b^]T=(BTB)−1BTY,
于是求解方程(1),得 :
x
^
(
1
)
(
k
+
1
)
=
(
x
(
0
)
(
1
)
−
b
^
a
^
)
e
−
a
^
k
+
b
^
a
^
,
k
=
0
,
1
,
⋯
,
n
−
1
,
⋯
。
\hat{x}^{(1)}(k + 1) = \left( x^{(0)}(1) - \frac{\hat{b}}{\hat{a}} \right) e^{-\hat{a}k} + \frac{\hat{b}}{\hat{a}}, \quad k = 0,1,\cdots,n - 1,\cdots 。
x^(1)(k+1)=(x(0)(1)−a^b^)e−a^k+a^b^,k=0,1,⋯,n−1,⋯。
2.
G
M
(
1
,
1
)
GM(1,1)
GM(1,1)模型预测步骤
- 数据的检验与处理
为了验证建模方法的可行性,需要对已知数据列作必要的检验处理。设参考数据为
x
(
0
)
=
(
x
(
0
)
(
1
)
,
x
(
0
)
(
2
)
,
…
,
x
(
0
)
(
n
)
)
x^{(0)} = (x^{(0)}(1), x^{(0)}(2), \dots, x^{(0)}(n))
x(0)=(x(0)(1),x(0)(2),…,x(0)(n)),计算序列的级比
λ
(
k
)
=
x
(
0
)
(
k
−
1
)
x
(
0
)
(
k
)
\lambda(k) = \frac{x^{(0)}(k - 1)}{x^{(0)}(k)}
λ(k)=x(0)(k)x(0)(k−1)
k
=
2
,
3
,
…
,
n
k = 2,3,\dots,n
k=2,3,…,n。如果所有的级比
λ
(
k
)
\lambda(k)
λ(k) 都落在可容覆盖
Θ
=
(
e
−
2
n
+
1
,
e
2
n
+
1
)
\Theta = \left( e^{-\frac{2}{n + 1}}, e^{\frac{2}{n + 1}} \right)
Θ=(e−n+12,en+12) 内,则序列
x
(
0
)
x^{(0)}
x(0) 可以作为建模
G
M
(
1
,
1
)
GM (1,1)
GM(1,1) 的数据进行灰色预测。否则,需要对序列
x
(
0
)
x^{(0)}
x(0) 做必要的变换,使其落入可容覆盖内。如取适当常数
c
c
c,作平移变换
y
(
0
)
(
k
)
=
x
(
0
)
(
k
)
+
c
y^{(0)}(k) = x^{(0)}(k) + c
y(0)(k)=x(0)(k)+c,
k
=
1
,
2
,
…
,
n
k = 1,2,\dots,n
k=1,2,…,n,使序列
y
(
0
)
=
(
y
(
0
)
(
1
)
,
y
(
0
)
(
2
)
,
…
,
y
(
0
)
(
n
)
)
y^{(0)} = (y^{(0)}(1), y^{(0)}(2), \dots, y^{(0)}(n))
y(0)=(y(0)(1),y(0)(2),…,y(0)(n)) 的级比
λ
y
(
k
)
=
y
(
0
)
(
k
−
1
)
y
(
0
)
(
k
)
∈
Θ
\lambda_y(k) = \frac{y^{(0)}(k - 1)}{y^{(0)}(k)} \in \Theta
λy(k)=y(0)(k)y(0)(k−1)∈Θ,
k
=
2
,
3
,
…
,
n
k = 2,3,\dots,n
k=2,3,…,n
- 建立模型
按式 ( 1 ) (1) (1) 建立 G M ( 1 , 1 ) GM (1,1) GM(1,1) 模型,则可以得到预测值 x ^ ( 1 ) ( k + 1 ) = ( x ( 0 ) ( 1 ) − b ^ a ^ ) e − a ^ k + b ^ a ^ \hat{x}^{(1)}(k + 1) = \left( x^{(0)}(1) - \frac{\hat{b}}{\hat{a}} \right) e^{-\hat{a}k} + \frac{\hat{b}}{\hat{a}} x^(1)(k+1)=(x(0)(1)−a^b^)e−a^k+a^b^
k = 0 , 1 , … , n − 1 , … k = 0,1,\dots,n - 1,\dots k=0,1,…,n−1,…,而且 x ^ ( 0 ) ( k + 1 ) = x ^ ( 1 ) ( k + 1 ) − x ^ ( 1 ) ( k ) \hat{x}^{(0)}(k + 1) = \hat{x}^{(1)}(k + 1) - \hat{x}^{(1)}(k) x^(0)(k+1)=x^(1)(k+1)−x^(1)(k), k = 1 , 2 , … , n − 1 , … k = 1,2,\dots,n - 1,\dots k=1,2,…,n−1,…。 - 检验预测值
- 残差检验
令残差为 ε ( k ) \varepsilon(k) ε(k),计算 ε ( k ) = x ( 0 ) ( k ) − x ^ ( 0 ) ( k ) x ( 0 ) ( k ) \varepsilon(k) = \frac{x^{(0)}(k) - \hat{x}^{(0)}(k)}{x^{(0)}(k)} ε(k)=x(0)(k)x(0)(k)−x^(0)(k), k = 1 , 2 , … , n k = 1,2,\dots,n k=1,2,…,n,这里 x ^ ( 0 ) ( 1 ) = x ( 0 ) ( 1 ) \hat{x}^{(0)}(1) = x^{(0)}(1) x^(0)(1)=x(0)(1)。如果 ε ( k ) < 0.2 \varepsilon(k) < 0.2 ε(k)<0.2,则认为达到一般要求;如果 ε ( k ) < 0.1 \varepsilon(k) < 0.1 ε(k)<0.1,则认为达到较高的要求。 - 级比偏值检验
首先由参考数据 x ( 0 ) ( k − 1 ) x ( 0 ) ( k ) \frac{x^{(0)}(k - 1)}{x^{(0)}(k)} x(0)(k)x(0)(k−1)计算出级比 λ ( k ) \lambda(k) λ(k),再用发展系数 a a a 求出相应的级比偏差 ρ ( k ) = 1 − ( 1 − 0.5 a 1 + 0.5 a ) λ ( k ) \rho(k) = 1 - \left( \frac{1 - 0.5a}{1 + 0.5a} \right) \lambda(k) ρ(k)=1−(1+0.5a1−0.5a)λ(k)。如果 ρ ( k ) < 0.2 \rho(k) < 0.2 ρ(k)<0.2 则认为达到一般要求;如果 ρ ( k ) < 0.1 \rho(k) < 0.1 ρ(k)<0.1 则认为达到较高的要求。
- 残差检验
- 预测预报
由 G M ( 1 , 1 ) GM (1,1) GM(1,1) 模型得到指定时区的预测值,根据实际问题的需要,给出相应的预测预报。