本帖最后由 2336426014 于 2018-8-5 22:20 编辑
2 j* d2 D$ g& U6 j: f8 ]4 _) f, s3 G6 S+ T. B* L& N
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。1 @9 l9 t& }0 Q- Z a0 _: t9 u' j
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。
& k9 W3 j* @. n8 G6 w, A8 c3 X3 K 但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
4 l0 u4 `& e4 I# q: _9 a) H0 b 首先介绍一下灰色预测:: `, }" p! \, z1 a" M8 ]
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。' V4 a% ~5 U0 G. v* p
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:3 Q) M9 @" E; J' `6 B( [5 _& E |
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
, A' c) s$ O! C8 Z2 Q0 a x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
" c$ g( U2 a$ ~( l( [ x(1)=(x1(1),x1(2),….x1(n)) " Y @9 J6 n' z8 d* | @2 u
+ `5 s0 A$ P3 n; k/ z" t- t4 Q
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b
1 |* a, F) a' L7 R* q
4 T |# p! O9 j8 b( o. d1 I" q" B" e1 k
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
- `4 V( B9 Y* } A c=[ab]=(BTB)−1BTY
8 A( z$ Q) n2 S* J$ o G! ?(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1
' k, S2 R- C2 m- S0 W(6)对函数表达式进行离散将二者做差来还原原序列
) k/ e7 J& y' q/ E x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 % Q3 p, L3 p( o% A$ q# B
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
/ m8 J# {( x$ C2. 求原始序列的均值和方差S1
1 p: l( q5 E% n3.区域残差 e 的均值及方差S2
5 \' p/ f- G! a9 o4.计算方差比 C=S2/S1
$ ^2 l/ E& Z C2 ~. i, W) x$ h" u: E5.求小误差概率 P
! B4 r# K$ P m# J# O A7 d6.精度检验表如下:7 p9 @9 x/ t* t/ x$ |: k
: k Y& T+ U2 w7 `, J
) t0 t7 B) S6 J$ L* x; H7 j+ K2 v# ~& e3 o" ?; j/ Q
% o6 X3 y8 P. }8 q* ~8 v
6 Z+ c! `) b, o$ y T3 i3 x$ n代码的话百度我也帮你们准备好了:
- L( a2 o) ?$ |( V2 V图片格式,自己抄去
; V) ?4 R( Q% w0 n2 O* i1 s' M
/ ]. y% F6 @% `+ |4 B
1 j2 k8 B( I# [, r% v0 E
+ h3 f5 X9 W" p8 Q/ i. k5 h2 m w' \1 y7 S
' e8 O3 U/ p+ [5 F% d0 x% m2 e; t: B6 F$ S6 s7 X$ D
|