本帖最后由 2336426014 于 2018-8-5 22:20 编辑
& ~! P* \: m* T9 O' [9 i) z, z) z9 r* _- t1 b
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
" Y Q1 W3 M: I9 T8 v 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。0 j4 @+ B/ `3 e9 N0 x& ]. [
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
J$ A9 E& s# t+ ^3 h 首先介绍一下灰色预测:1 d2 u" |* E* t) u: z) k. s; _
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。
( y0 I+ R# G4 @/ e% \+ X3 B3 @ 灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:& p) V5 {( C- H) y& K( Y
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
9 l5 d$ S: c! B/ { x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
4 U8 D4 ~7 {/ W x(1)=(x1(1),x1(2),….x1(n))
2 N) ~: ?3 M7 J3 _
4 Q4 F9 J% V! j# N3 C2 A8 M8 o" T(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b 6 i) F6 B6 Z- {$ }" N4 Z
) v; c* f; y+ G" T& q
" D; l w* l! p4 L) {. N(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t- u/ S6 U4 |. j6 V$ x
c=[ab]=(BTB)−1BTY " X5 T. d6 G; _6 |" ~$ T
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1
l* }5 T; r- t' b$ E8 x(6)对函数表达式进行离散将二者做差来还原原序列
, c; R7 E6 w# S3 m9 \ x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1
7 K" `% _2 L" l$ j% Y# I. G (7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q* y4 c" M! t# i! D" x
2. 求原始序列的均值和方差S1/ P1 f- X& w5 j ? e7 e
3.区域残差 e 的均值及方差S2* U; i7 ?' ^. @3 l
4.计算方差比 C=S2/S1: f* M2 p* y& I k
5.求小误差概率 P( l3 z H8 W5 v9 H
6.精度检验表如下:# b, P) d) ]7 D! E5 S
$ q- [4 Q' d% p! p1 g9 B! d6 X) a8 j- D
- Q( u5 _( v; D8 b& F
" L/ p% m& \$ w1 r+ o( m( x" b! W: x) C
( ]! @, D5 A: I- v! v代码的话百度我也帮你们准备好了:% |# m) ^3 \" `$ J
图片格式,自己抄去3 j0 V6 q0 l% x
1 g1 D( N1 }! w. e; K5 B
- J& P! F2 g: C7 X$ Q' r" a4 ^% B0 H' b
$ i ~! r5 D2 ]+ k5 R0 q+ l( C# P% ]6 ]- K8 A) l
- K( S6 C# U* k
|