本帖最后由 2336426014 于 2018-8-5 22:20 编辑 1 h' c) a) Y8 S3 F2 R
) A O5 P. f! Q2 p6 F
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
4 R3 s% F* F `2 `' e/ g, L* n 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。
& w" I* M5 ]. V9 a) V; }6 b5 t! l) d 但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
4 v! S3 C. P6 E* U4 N 首先介绍一下灰色预测:
$ Z8 R( U0 I" e7 _( [ 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。# H" \/ b5 X, R
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:
4 P3 k* [/ u+ k3 h (1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令 ) c9 f% O$ X8 }$ Q
x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n 8 }. B( K- z+ L+ j9 O6 r
x(1)=(x1(1),x1(2),….x1(n))
1 r! G& A' n0 l& ]( t; a! i* X. q( k* Y
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b ! G. R" j+ P N8 C" E/ g9 V% R
* p) e) y4 i% h2 t( O6 [2 }
' S% k" S$ D' Y(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
) [* m5 S; N$ M& r7 J+ @9 o c=[ab]=(BTB)−1BTY
: n% q7 T! D+ f: A8 @9 O(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 7 u- l/ U) J- k0 _# L1 h: v
(6)对函数表达式进行离散将二者做差来还原原序列( L/ @1 `" G( ?9 z! Y
x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1
, s& F3 p" _, }! R (7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
9 S: n$ d) S- L$ S/ p" n7 M& n2. 求原始序列的均值和方差S1
1 E. P5 C E6 y' `) K) s3.区域残差 e 的均值及方差S2. q* p- z* z+ m( n
4.计算方差比 C=S2/S1- @+ k) G" p) L
5.求小误差概率 P4 A4 i) R2 i+ v: U# q
6.精度检验表如下:& e3 V4 l8 ~3 p$ {$ b2 d3 ~6 s( h$ g
$ q7 v% i/ n) r# a
4 q9 l8 i& F* U) Q8 r f7 t
/ H( J# z A9 s& d8 s7 J7 O0 J
% ^7 f, [' J' P! { X6 E) @& r' \5 g. D6 `% s- l
代码的话百度我也帮你们准备好了:
* p* G B( k- M; ~图片格式,自己抄去+ W2 x/ O# m0 t: N- v
0 L" Q+ y+ u, A/ l
; z/ V) O* j+ X- N( @8 L- O; W A/ P; j$ ?3 d# x
$ u4 W# k4 W# t2 k
! \0 I2 ]% ]. a' y9 u% ]
$ r) t1 V- ]# T+ ]! \, K |