本帖最后由 2336426014 于 2018-8-5 22:20 编辑
! \- ]4 J2 t; |- {& Z: A3 E( K4 p3 h4 B( s* x1 T# H0 ~
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
" p9 J7 y0 y2 p2 ^; ~& |. ?: H 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。
( h' x3 r0 I! e- F9 x* e3 f6 u 但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
8 k0 X+ i# ~+ @) {$ w% O 首先介绍一下灰色预测:
4 _8 i/ a1 @# I8 a! ?' F/ |" p 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。" T( V( T _) @; q
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:
6 P( F8 V+ A+ }$ A, _ (1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
$ }! \2 b4 A) }, ` x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
6 }& I ^' s' j( M6 O x(1)=(x1(1),x1(2),….x1(n))
( M5 i" }6 f2 B) O. f4 D
4 n5 E# U0 ~9 J" F" |" K: A6 e9 k8 Q(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b 5 u1 e7 e# m% W
) c1 W* Q4 ~# P: H/ K
. Z4 h& K/ l7 }" G+ ?, ^2 X6 k
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t. J2 c* g: Q- F4 g, B( W
c=[ab]=(BTB)−1BTY
2 o# ~; X# |4 N(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1
0 L8 H" q# o" ^& V1 y) o(6)对函数表达式进行离散将二者做差来还原原序列
% o0 Q3 x* K) ^0 B5 v9 |0 W x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 ; |0 P$ ~0 G7 p* T& W- a3 P
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q$ F- T9 h1 _: N9 o
2. 求原始序列的均值和方差S1
& ?8 v& I0 r5 u$ z& H3 ^3.区域残差 e 的均值及方差S2' T7 f' P1 r/ r
4.计算方差比 C=S2/S1+ _& E! H# [" f$ Q# i: j7 Y; g
5.求小误差概率 P
9 |" m' G- f3 }& ?% U1 F% C6.精度检验表如下:
" M0 I" P, U: a! X; m# I4 T' q, C! J$ {: O/ a
, f+ o1 ^6 S; K3 [# t, A6 w( [7 _
8 u; R* c! V% r7 }; q1 i
. ^) ]# S1 m7 D' Z9 _2 E6 G% p+ ]5 m C5 g0 r& B1 W2 K+ ]' I) q
代码的话百度我也帮你们准备好了:( r( t! M/ A3 N9 ]
图片格式,自己抄去8 q. {( t' v2 X5 X" X
( I [0 o& a, J8 `3 n
; j0 U, ~! _1 }
, V- _/ f3 k, T1 o, K
3 o, G+ ^: i, a. C- H6 z# ]; h, h' C. {0 k
. f3 ]. X9 S% }* C9 ?$ A4 E
|