本帖最后由 2336426014 于 2018-8-5 22:20 编辑
& o6 f/ O* }% w, \7 b' Z& F* T6 V4 J1 Q1 K. x4 D8 [
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。) t8 @5 @2 `* ? {, Y+ J
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。+ l) ~! Q/ u$ `, l# W
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
V; C# C: t6 [" Q& ^+ v 首先介绍一下灰色预测:
+ g0 F/ c+ g& O 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。8 G7 C4 Q( g) | _4 T' L: C7 A
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:0 r$ j; i9 |- Z* @3 N: ~. n/ ?8 p2 y
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令 9 ]: W; f% N: p$ O
x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
, t; C# A. |2 P1 F, x) F4 G x(1)=(x1(1),x1(2),….x1(n))
# x, Y+ x" h: q* {1 @5 ^4 C' P, y! R& f: |. E8 k
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b % G+ D" Z7 a: M1 W1 \
) b0 }6 h% C4 d! ^- c3 I- y. Z4 W# a0 R% y
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
9 u$ v& |! ~8 k1 t- F c=[ab]=(BTB)−1BTY * M9 Y1 P% @* p
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1
1 U( Q6 C; W, j5 d$ d; `! R9 ^(6)对函数表达式进行离散将二者做差来还原原序列
9 w) P+ k: m# K1 J8 a: q# M, J x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 - j4 _. P2 T! q. n0 [; D# K7 b
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q R- l5 v0 _: q+ [
2. 求原始序列的均值和方差S1
2 P: s( `* v! i6 i s5 z3.区域残差 e 的均值及方差S2
3 H/ p8 Q7 d- `- C$ `4.计算方差比 C=S2/S1( G1 D m- K; \ v; }; i- A6 w
5.求小误差概率 P1 t, A+ @7 N. ~# Q
6.精度检验表如下:5 E) _5 u* v* c
$ @- c, | i$ w3 \' K$ D3 z
# K$ R3 J0 U f# z+ s, }- Z
+ U8 n7 f6 Q J0 A2 z" [ T) r# C9 y7 A# ?* t. F, ~& h7 {7 t
, O1 I6 R S' Z# Z6 Q代码的话百度我也帮你们准备好了:
- [2 c" N5 V" m: G( t图片格式,自己抄去9 X4 e9 v9 C+ l V$ W3 A8 l
4 ?" {2 ^& c# t& F, `/ v
( R3 A) r) `$ V
7 z T8 i2 E; W# {8 \# h2 Y/ b1 @
8 q& O( y6 Y! V* Z( j0 N3 D6 p% D" r
' t! J0 E' |& Q7 t
|