本帖最后由 2336426014 于 2018-8-5 22:20 编辑
3 O. l* ^1 V; X7 F1 o
& h. L$ b7 Y3 j0 f5 u7 w) b1 i3 ` 可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。; V! p D$ K0 `) D0 ]
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。- B6 E+ [9 X- W
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
6 }9 D. l6 t# n1 Y, N6 C 首先介绍一下灰色预测:& P; S- H/ X6 S: I
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。
) s/ w( R( d0 g g" ~4 Y7 x 灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:+ m; ]5 D. S3 I \
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令 & ^( s S3 i0 D6 A
x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
3 D' ^. i2 ]& o* k P6 ] x(1)=(x1(1),x1(2),….x1(n)) 7 q1 R- a5 }9 k
" H+ F `4 K+ X! \" W6 b1 a. t(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b ; f( i4 {- x# F, P9 c5 k7 ?
) N: g) r5 G Q, u2 [1 A9 p
; d K$ u) Z) V$ X/ n s$ f(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t: G0 {9 `+ P+ S8 T6 M
c=[ab]=(BTB)−1BTY ' x1 o8 w$ Y! @0 T: I G# I) P" K' U
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 4 C% ^$ F3 N4 n
(6)对函数表达式进行离散将二者做差来还原原序列6 M' K) J* X2 J7 X- H
x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 * k- P7 a2 _* E: V
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
% @ k: O1 `8 C& k( D. N2 |2. 求原始序列的均值和方差S1
8 O8 Q! v1 F; d1 T3.区域残差 e 的均值及方差S2% o* t8 d4 Y: o* e `- ]
4.计算方差比 C=S2/S1
9 L% e5 v9 t; U! g4 k# D5.求小误差概率 P
n$ W; H/ t0 d6.精度检验表如下:
+ { i( [# b" {6 Q% y# Y3 m! C: d8 N( _6 Y' z; _
6 A( v r# f' M4 \& d- R6 F
5 p$ k' }0 i; ]! p# p) P6 I2 o1 J% J. T- E+ w/ v) B
, m3 ?- F) a1 R/ g1 J3 X代码的话百度我也帮你们准备好了:
0 w. ^1 f: V+ O/ q图片格式,自己抄去
$ k3 m( o# ~+ X$ @9 e
7 o" b) ?: W. L
- W0 X# P5 U3 j: z
# z- Z: v7 c9 _8 X
5 V% E) `5 u& A. C2 |4 @
1 [9 D$ h# S7 Y/ H) @1 a; O/ v* F* ?* v! }2 ~ y
|