本帖最后由 2336426014 于 2018-8-5 22:20 编辑
$ b3 N/ c+ a9 L+ @) u8 D5 J: B$ I& x) C" a
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
7 F+ b5 M- L; D$ e 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。
) k$ t N) l+ F4 G ?0 @/ E 但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
. P- c* T& I5 z9 h, B+ n 首先介绍一下灰色预测:
$ q E3 z0 j" |/ W G3 u 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。
' \/ T0 [! u" s6 G1 d 灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:4 p1 ?2 d* G3 g$ y0 m# m
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令 6 Y8 |4 J- h( c
x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n 6 K; e; l8 }! ~1 X
x(1)=(x1(1),x1(2),….x1(n))
3 J# E, g/ F8 I
" Z4 `7 r0 v& \& Z( e+ V8 s7 b(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b : s8 c5 t* F# N$ o x% g9 E* |
5 N8 G2 u: u0 @/ t2 g$ M
7 i) z; T% n+ _$ Z
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t7 y3 k! h' J7 L% m+ S
c=[ab]=(BTB)−1BTY
/ R- J, w3 h; P% T' m/ l(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1
. c5 A8 ]6 @$ B9 f: y6 B(6)对函数表达式进行离散将二者做差来还原原序列7 x" W( W* B( @- f0 a o! n- p' I) ]
x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 9 t; T* e; V% W }
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
* T8 O. p' z t/ l( Q. P9 W2. 求原始序列的均值和方差S1+ R5 T- \# e" a; r
3.区域残差 e 的均值及方差S2. b3 t; T* B% I4 r) ]& B: Q( v
4.计算方差比 C=S2/S1; s' t! v+ L2 w8 R$ d5 \) M3 S" T
5.求小误差概率 P
4 u2 B+ Y! Y- t! i" @% X- v9 k- a- C6.精度检验表如下:! Y1 }9 O1 v% W; y1 r* `
: n4 F# o1 l4 P) n
) `4 _( [1 m2 X, g& \* o. A5 N' B6 k+ b
0 H# V. b. F( V7 b* b" x% @5 \/ J0 J; z+ x
代码的话百度我也帮你们准备好了:
8 o1 H* t; T+ G0 v3 F p图片格式,自己抄去! s* O' b6 q9 q5 f. n$ c0 e
6 ~; c6 p2 X9 b5 l6 }. P
$ o( } {4 G, ^
" t0 m$ D; ]* S `: t- X: F, F3 Q) _
. x* U6 M k5 @# ?( q' r
( f( M+ u0 M& r% J0 U6 s* s( }0 B |