本帖最后由 2336426014 于 2018-8-5 22:20 编辑 , e6 j& `+ U3 @( ^2 _/ S: ?! y
! X8 e0 O' [2 y3 e
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
0 q1 n# }6 ]4 x+ g& h 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。+ P3 T* X k* }7 m. i1 B1 s- U
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
. L( w1 Y5 Q0 B$ _ 首先介绍一下灰色预测:. @ ?* o { C2 O$ A4 Z
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。+ ?; o1 C( w$ T7 U
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:5 a& t* g# r+ X8 A) p. u8 D
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令 ! ^ Y Q% X/ w8 N1 B- }6 e
x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n 9 \% e- B& G' G8 f" M8 m6 C
x(1)=(x1(1),x1(2),….x1(n))
8 C% N/ F* Z* S0 ~( a4 d) C) }$ g! m5 S/ R* D
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b
* C. y, c& T5 M1 v6 W K4 U# s8 t Z6 c
& C; v0 l& x8 q s& g& l
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
9 B: m1 Y X! _* i; C: Q) D0 G% q c=[ab]=(BTB)−1BTY 5 l, m2 T3 \& }# |- T$ f# j/ y
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 2 T" L! X: m. O' b- \7 x
(6)对函数表达式进行离散将二者做差来还原原序列
6 r0 f2 {' i- h" j, H E x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 ) T1 u' Z( `( B8 _
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q$ z9 O" e& h6 A: n. @
2. 求原始序列的均值和方差S1+ N; t0 I& @: B+ k6 J
3.区域残差 e 的均值及方差S2& B) I! u1 W9 Y, f9 B+ |! ?
4.计算方差比 C=S2/S12 Y8 B, \7 q6 Y& b" U7 s/ O% F
5.求小误差概率 P4 v7 S5 m; N& J! B' N. D1 @
6.精度检验表如下:! k, q& L _6 X' h% ?
3 J9 B8 J I% k V, q2 @% q+ S8 v, l' I5 Z" M: X: o, T
& ^( M6 R+ v$ z" n* J$ y9 B
' c1 Q( f3 I" S/ ~8 c' Q
& r% S! \$ ^6 Y7 i- ~ c4 A. C" d) @代码的话百度我也帮你们准备好了:
( C" z8 a; ~* @8 f3 l图片格式,自己抄去
3 h. U; }3 Q, l% s; f: A2 `
# x7 y4 R0 `, Y# m7 i2 I) r! k
0 A; R7 K5 B) g x, {# Y. n) z
0 j+ A1 [1 w5 g$ h9 \
$ f c' u+ z8 o6 z# |# J
, s4 T( [( `* D
2 F$ T7 \& `. { D, S8 P |