本帖最后由 2336426014 于 2018-8-5 22:20 编辑
2 y! W$ d+ e3 _4 T* F1 N1 }% y# P! g \/ Q" S" c8 m9 c4 I, q9 u
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。( a9 I) A$ y. S3 Y K
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。- @2 R, c- H# u7 E6 T& m. w9 [; d$ C
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
' e* `: f* h. l0 A2 @) T$ H 首先介绍一下灰色预测:
" B* I/ ~) c0 x6 J. u 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。1 ~0 e1 b7 L; ?' S. _
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:" a i! y+ z t, a9 l( S
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
, o# H3 k1 _' Q x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
& y' ]* Q4 _; R; v r9 F4 Q x(1)=(x1(1),x1(2),….x1(n)) , F/ Q" p7 V5 x5 m
% k8 X9 z4 w/ c. U3 f( `0 I
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b
) d. Z: F' F) Y9 u$ w0 n q! l$ i$ v- i
/ j6 M1 t B" i4 g(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
6 M, W/ R* x1 c0 r: {% G9 ` c=[ab]=(BTB)−1BTY
* s; U' [. Q, L& l(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 ! J: R* D0 E) A# h+ }
(6)对函数表达式进行离散将二者做差来还原原序列
0 D* j) U+ f ~0 `) ~( A* I- u x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1
, [; ~, _6 r) x- x (7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
0 n% I$ j! H8 X( w0 t8 T! A2 ^5 S6 U2. 求原始序列的均值和方差S1
! t) \9 W4 P& }* [9 T' y. N3.区域残差 e 的均值及方差S2
$ A3 j/ g# e3 V; A! V4.计算方差比 C=S2/S1) M7 q6 ]6 ^) c4 m# [3 Y4 n
5.求小误差概率 P
: H; g/ O# D- U% w6.精度检验表如下:
. y% q! a+ \2 D. [8 o' ?: V- @8 }: G" S0 X3 z0 ^
. D v0 y% ]: Z$ K. A$ W/ D# ~" K
. q2 w' ^$ a9 g3 \! B2 |$ ~4 Q C) b9 ^
4 u4 w0 @9 \$ H. E# J7 E' w代码的话百度我也帮你们准备好了:! q& C& H+ s# m# n
图片格式,自己抄去7 S' B" s4 b8 W2 m
! v8 v, |; x5 K4 j0 \- q9 J( S
) \2 q( k3 U) m. ~; p6 s8 H/ B9 Y: a
8 ^' z& |' T9 J2 C& d5 W0 E
8 z4 Q4 J" X/ J( t0 E+ E) D& S' Q6 r* [* w* N; j2 M+ G) C- }6 t$ X5 j
0 ]7 \ [ q4 K; B8 \
|