本帖最后由 2336426014 于 2018-8-5 22:20 编辑 " @& j6 X" w1 ^* f
# ?) b1 \! k6 ^2 I) x
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
3 U2 S* J: [3 e! t0 @ 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。
; a# p. g5 W, G+ r 但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸.... H6 d4 A& L9 a. U
首先介绍一下灰色预测:0 k* t* ^& p& L4 X7 x% ?. S
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。* C2 l3 m! i- y( ]
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下: n7 m" f+ l% G/ B" ?
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
: F, p/ ]7 B8 J, E x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
; L( M8 a9 |3 p2 |' I9 v x(1)=(x1(1),x1(2),….x1(n)) " K' F. J- I+ x) }- P" z: \
1 ^' q2 w$ n% N. |$ o8 [1 B. ~(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b
) F8 x% u! {& l8 S |2 U9 o
# N% x, S! X& {; ]- U* F! p
1 n+ Y" D, d& e1 B: ~, y8 s(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t/ H) L! L- g! G1 @. p7 ? f0 A
c=[ab]=(BTB)−1BTY ) J5 o5 E3 z3 G0 M
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1
: i; c! p4 S" u0 u1 j9 `" V9 R$ x$ M(6)对函数表达式进行离散将二者做差来还原原序列) V0 z5 f* u2 D
x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 ; R' I# c: i1 D, `0 {* J$ k
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
4 T6 e* S9 [4 H1 {' D2. 求原始序列的均值和方差S1
0 K9 k+ H3 u& Z0 N( ?3.区域残差 e 的均值及方差S2
" ?, T5 e# G" A3 Z- P4.计算方差比 C=S2/S1
: O7 u) c( D6 n6 o/ c+ t5.求小误差概率 P
4 v" G4 \0 s( b6.精度检验表如下:; S0 r7 k* o: K; C" t' C. L
- |" }+ W- F6 Z0 u( ^$ P
4 H5 j$ |( a3 o1 F! ~
9 n& h4 U3 T5 e; n6 e1 s7 p O
+ X5 U7 ?- a2 M. p. B+ Y; d1 A, L8 g5 |5 H3 W! S! F
代码的话百度我也帮你们准备好了:
" }" _$ M" a5 x( b( D! i! V图片格式,自己抄去# @$ d/ C: ^/ S H8 f
- M- |- I; J2 J! o
: q* x2 U1 v% |% M1 [
e& y5 a# y. W! C. ~9 O3 q
, R* N/ `. v1 ^; u
" W4 M. q" [- G' D* _
7 l! U2 }. u+ y8 Z% q6 N& }% V |