本帖最后由 2336426014 于 2018-8-5 22:20 编辑
7 @5 e% t% O" h8 O# q
. P: s/ W7 i. |; G; i* F/ P: _9 a 可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。% G- A" T% j; F6 C
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。, N2 s. f& L' `# ^, K
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...4 z! n! |& ^( a2 i
首先介绍一下灰色预测:
7 [$ C! g: ^' I2 {4 I% o# Y. b 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。) F* X! |1 d6 Y( [( u
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:
4 n% L5 J1 \5 ^" r# Y& Q (1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
2 s9 f1 g# P' a9 ~% M x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
* e" _. i5 {" N$ f x(1)=(x1(1),x1(2),….x1(n))
! q/ }8 d/ A. ~4 B7 x8 {& k5 X$ a' V
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b 4 a/ ]( J) J' B/ l
* v; A2 }9 b$ s! l! j! y4 s I& O1 f
6 f. F7 {, g, D- W. X2 {(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
) W W( Z* H3 w1 c) F c=[ab]=(BTB)−1BTY
' l# S: x% y& W* ?4 A: x(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 0 ^; w* t+ g4 b- i- z4 y
(6)对函数表达式进行离散将二者做差来还原原序列
, y9 L/ ? J- R8 b2 h2 v$ B x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1
% `7 c8 E+ Z: @: j (7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q" Q/ b6 C6 r" S3 I0 O
2. 求原始序列的均值和方差S1
5 n/ o; G0 Y5 u: Z# P. b% Q6 ~3.区域残差 e 的均值及方差S25 u8 c7 ~( q5 m; u2 B
4.计算方差比 C=S2/S1
2 h$ d5 f. i9 L7 D, ]% J+ B) r5.求小误差概率 P
" e) M" _# f! g0 p' ^2 B6.精度检验表如下:
# h0 a- {/ v+ z* ]% H' _/ ?3 l. C& f
4 c9 T$ N3 \+ T
" o: @/ M% u* v. |9 B
6 l. @1 H/ c- x- m6 t( }( {- E5 m8 @& w5 L, o
代码的话百度我也帮你们准备好了: ?5 b/ V( o5 s s5 D7 ]7 }
图片格式,自己抄去2 q( q% r# e" ?' V2 a% s, T3 g
7 r; }! e3 M# v. s9 Y1 N
c3 P. W1 _$ ~* t _' e9 v1 O& ^
1 v( ]; m' i; h) ^3 o% j {$ T& e8 r) `- I/ p# U( F: O
5 r- h/ a7 G; \5 Q) o; E$ b7 E
: ]& n. A; ~/ o6 p |