本帖最后由 2336426014 于 2018-8-5 22:20 编辑
+ @+ w+ y- s6 F9 I9 W
. M# K2 j& y5 h* D! Q 可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
* ~) m, N2 ~+ Q* \ 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。9 y/ L# o) d$ ]5 W2 U3 ^
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...* ?! h5 P0 }+ q: s& }
首先介绍一下灰色预测:
0 r- c1 s" ?, ^# ^- ?- e; R( c 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。: ?# n" N- g4 E) p5 n' h
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:
9 D' U+ R) F- B (1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令 ; r, F+ G) E: x
x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
- A+ g+ d' F) }$ ~( [, K3 X x(1)=(x1(1),x1(2),….x1(n))
4 p. X1 Q8 L6 u6 }8 A! e+ c( w) s/ H. s
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b X- {$ ^* Z6 f# ]2 y% L
2 J( i u9 @$ S, l' f9 S5 J8 I3 T$ {+ A5 B! s7 N3 Q- ^3 B
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
7 C4 s9 A8 q! C+ @- {. n) d! d c=[ab]=(BTB)−1BTY & K5 w2 o: m/ N6 F: B
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1
8 J, o. S# M- f3 S. _ v(6)对函数表达式进行离散将二者做差来还原原序列
9 K* S8 G2 Q. O+ ?3 R1 i x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1
M8 g& I; f) T: i (7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
& L8 ]1 m1 G- @9 K2. 求原始序列的均值和方差S1
/ N, P! \* z% B7 b2 _3.区域残差 e 的均值及方差S2
' _5 O \; s* C: o+ N3 z4.计算方差比 C=S2/S1
U3 @3 u5 F4 p3 A% e5.求小误差概率 P8 w6 C/ G' z: e f
6.精度检验表如下:- e; s; w. D) v% o* ^! |' p
' I' t: t% I7 D% R+ z5 `+ i$ E
. T# G# G m8 x
. O& ~6 s2 b9 \8 I
( Q: z% J- n& F) P' E2 h
% F) ` D o, @0 W; _5 e代码的话百度我也帮你们准备好了:
7 @' L6 e5 l- {! M8 F图片格式,自己抄去
$ f, ?( [9 j" V0 X/ S
B/ s5 d( n$ E4 ]1 i4 J
5 E( T6 u! [7 l3 V
) w* a, x; D' V% ~/ p1 M
: n3 N" t9 H* I2 u+ g- |4 M! A
~9 c- z. o* F( m# T
* s% [2 O* j& j: \# z0 k, D7 U
|