本帖最后由 2336426014 于 2018-8-5 22:20 编辑 ( A+ B0 y8 Y* B6 I
' ]2 J2 h6 i9 o" g. w" H
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
! E7 K% J6 V% ~9 H 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。! B5 p: V! Y) D& n2 \
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
/ u, B! @" x1 r7 h, { T 首先介绍一下灰色预测:% I x1 d1 Q+ E+ y; P: M
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。
* y9 x' `6 z4 J. u* c; ?( ? 灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:6 g9 l# ?& l3 o- u$ h/ z
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
0 T+ g& L9 i; b5 x. w2 v x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n ( J/ N8 G& y j- l
x(1)=(x1(1),x1(2),….x1(n)) % e' S/ u- i0 _ d) h
* s. `! [! f( C `& g: F(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b - ]. e `% ?. P( Z4 j2 x; N5 v
( L( H% _& ], L. e O
+ A) k5 k/ p" O" u, d% \8 L
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t( e( i' D5 W1 K
c=[ab]=(BTB)−1BTY
8 q( T4 y2 B" q6 e# `! `(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 , U9 R- k+ I ^( ~3 `8 P1 v
(6)对函数表达式进行离散将二者做差来还原原序列3 b% j+ B7 D I2 h) f
x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 # R; p) Y. P( T8 x3 b3 A! m
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
+ _/ [% Y0 ^) K7 \3 ^2 X2. 求原始序列的均值和方差S1* L; N' Y7 g l4 ^& k8 [4 _" s0 c
3.区域残差 e 的均值及方差S2
" f7 Q/ y! y+ `' `0 V: _8 S) Y" J4.计算方差比 C=S2/S1
# E4 e& Z4 ^- I5.求小误差概率 P- L5 H F/ L( x, ~) q9 g
6.精度检验表如下:
! X5 f4 E3 U/ a! H) _! o c9 q }; ?7 ]' A6 n- P, r/ c9 o+ j
, ^5 |6 |' j' D- |( j) q2 [8 v1 D
7 A( k0 ?0 G( r: D* I5 z4 [2 j' r! p+ D
代码的话百度我也帮你们准备好了:
. w9 h5 `( T& F$ C图片格式,自己抄去
A% b7 b: n7 X7 \2 G
4 i4 N& a; ]( m( U. I
1 f( D/ n0 a' E; T2 W& m
+ R' B8 `% \9 G# C
! n( E( O/ R! }% @" B4 x9 r( q8 J/ w8 A' X
1 A; B6 Y+ C& O+ C7 u; ?
|