本帖最后由 2336426014 于 2018-8-5 22:20 编辑 # g. o! k9 O V1 v# [
* l- |: a w3 `/ s) I 可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
& j0 H x! L1 ^! W2 S2 v4 s+ q 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。
- c5 w7 M7 t# k* \3 N 但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...( K0 R! B0 ?7 C# t, G A Y; ^
首先介绍一下灰色预测:; C& j3 m0 `- w$ n
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。% v' k( k" n, i
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:
8 E4 |9 I% Q, o: E. t. E0 o3 A (1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令 + ?/ o# v3 v7 s
x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n 9 B" u5 m* y# i; ~2 C8 O
x(1)=(x1(1),x1(2),….x1(n)) " L1 `5 G Q u3 M* l2 f5 v
" k5 F" c% @* T(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b
4 `- v2 H0 d5 x9 z n1 q5 B5 h5 R2 [' E" [% ?
# k! \& u% ?4 f/ l1 J" ?. M+ [+ p
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t- ?) G4 S | v! r8 r2 O- x
c=[ab]=(BTB)−1BTY
4 M$ H" L0 l' R7 c( `* U6 y(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 5 i' }2 f+ j& ^9 Q
(6)对函数表达式进行离散将二者做差来还原原序列. l% h3 `+ x. S$ B0 X2 L
x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 ' [0 h8 u( j9 C$ Q% b" @* ?% g
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
; P" X; I4 U! P; g% I2. 求原始序列的均值和方差S1
k5 ?6 U: ?* Z* V E. z3.区域残差 e 的均值及方差S26 t% Q* J: C7 H6 V$ a' H
4.计算方差比 C=S2/S1' @& k# s. A6 ^, `8 p
5.求小误差概率 P
, U' C& x- G3 j/ f6.精度检验表如下:
L& `, r: i% t
! }+ Q0 q( F& Y1 d7 \* o1 n& ^- N: l% a: |# N
/ T- N5 P: C$ I! ^/ _
4 P1 I! u( K* u; [) v6 G( o* z
6 E" o1 O9 m6 p代码的话百度我也帮你们准备好了:
5 b. u0 S# o! o' U+ Z3 z图片格式,自己抄去& Q* F0 M6 S1 G+ K2 O) c) ^
* a7 y' w% a3 F% c! T
! P2 d) j6 e6 I9 ]
6 B: Q$ L" ^+ J$ R7 [+ }6 o. G
: s6 t- G: t4 p1 A/ `0 F
# ~7 N- ^2 c: l* f6 F- G; K, B" {; |/ [( D9 h0 c: I
|