本帖最后由 2336426014 于 2018-8-5 22:20 编辑 - m5 o& D* D' [8 w
( E$ I% j5 |6 j3 [
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。/ S5 V- z( f: T; l6 s) `4 c2 @$ ]0 Y
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。
0 t- `( v( E' Q 但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...7 F! m, _/ _' ]6 N X5 U
首先介绍一下灰色预测:
P2 j7 \. _) B+ D/ T 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。
2 M3 P9 z0 {5 X$ }( Q. s9 C. _& C 灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:8 Y% l" U/ V. d( \
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
! m3 e. B. V8 I9 W0 N; ?4 P5 X8 J x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
# T" E$ V# _3 V x(1)=(x1(1),x1(2),….x1(n)) ; H: |! c. |: }
3 ?* w( H& ~* J; ](2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b
3 }+ b2 _2 G/ j/ [3 l5 l
1 c+ Q1 _, w* o7 ^, {8 q; h5 v
8 G3 _9 E$ C! p2 `(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
! [3 q4 C2 B& ?' D" t c=[ab]=(BTB)−1BTY
8 o7 r* b R- C3 E a(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 " Z4 ^7 q7 ~3 F
(6)对函数表达式进行离散将二者做差来还原原序列
! g9 X6 o7 S+ _ x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 ! y$ F* }$ X4 L3 R& _+ Q
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
5 ?; v) C2 |( V* _2. 求原始序列的均值和方差S1" t: A" ^/ ^: e
3.区域残差 e 的均值及方差S2
1 X1 U2 w n8 {8 ^8 t4.计算方差比 C=S2/S1
* c5 ]2 T: j7 f# V ^5.求小误差概率 P! [( E& U! _$ t I
6.精度检验表如下:+ j; L8 n5 O0 l' ~$ ~
T" q8 A. h5 o8 n% c, E3 c
6 Q# d0 r1 b! L, k) f" F
. d- f! }6 o2 D" O
/ h1 h: Z# e$ j x) b" M1 Z. L0 v* K9 v; |! w
代码的话百度我也帮你们准备好了:
+ `! q! j% t4 H8 p6 D图片格式,自己抄去
( o2 P2 w! \0 M3 g8 K
$ T) S* a4 L9 ?8 }: @* I
4 F( _2 S( z$ t& Q( Y) C* d i
, B5 ^$ P' H$ e n) ~4 o9 h* c0 F& c: a3 E
) y4 l8 C/ q6 s( ~, X
; ` Q$ x+ L* L |