本帖最后由 2336426014 于 2018-8-5 22:20 编辑 # [9 D' F! U+ S4 w
, q: I& V. |3 O% f 可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。2 K/ ~& m5 e: O8 p- D1 q
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。8 g+ O4 A/ V2 b+ q. _2 u
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...2 i( \( f; @/ H' t) ~
首先介绍一下灰色预测:6 P0 B" \7 z( ^3 Z
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。
( U1 v# _1 `, ]0 v, [ 灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:
1 \7 k; l& [1 ]9 J (1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令 2 r, }. b Y7 n& y7 t7 O
x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n ) y5 L" T* ], ?% X
x(1)=(x1(1),x1(2),….x1(n)) 7 Z2 i( A" E) z" B
( h) }: v* |! n3 F |% W
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b ; @+ b/ R# i4 v% O1 a
% Z; @- r: T# f# W" o' @9 p
$ z8 t/ U8 d1 K! M9 g(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
$ G* p ?3 I" n c=[ab]=(BTB)−1BTY # S' a6 d7 V- O/ g6 ]5 A- M- D( Q, _
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 6 q O0 g+ m+ D2 x& A+ x
(6)对函数表达式进行离散将二者做差来还原原序列+ h0 {6 I9 J! l1 m* l' v
x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 % A6 [) K' s8 @: `8 l( Y2 @; v% ?
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q v. w8 X" H+ m2 C3 D
2. 求原始序列的均值和方差S1
* M- K7 h2 J" [, ~1 E3.区域残差 e 的均值及方差S2
4 x7 K: G" w3 f# X0 s' F4.计算方差比 C=S2/S11 J% D' Q) z1 e0 v, u
5.求小误差概率 P! D! F$ Q7 G- I# u: f; f( V @
6.精度检验表如下:
, i2 \$ v' ^# r
+ D0 ] T7 H* G! ?, X& d1 x& P& q! s0 E, i
+ F {, A8 l9 _* s
8 z( } ?( ]% Z9 ^5 ?8 {4 b
5 l" p( `* F9 ^$ q代码的话百度我也帮你们准备好了:
6 m0 R: a3 ~0 ]2 a图片格式,自己抄去+ e% K8 `* {& P" ~6 L2 T j
8 S- K3 j0 p5 M/ G
3 Z8 U x9 a" K" u- G
+ ~! }6 L, K9 `5 L; p+ y) L+ S8 a- H) u9 z6 y7 J* G
7 J5 Y: E F! }1 J1 j4 j' z
4 }- x4 D% R5 Z2 A( X' y |