本帖最后由 2336426014 于 2018-8-5 22:20 编辑
# S& K! Q6 B$ x& Y) K! L- Z! V
1 R% t' R1 k' O" L5 h 可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。: U# n; I \8 B! a# I% [
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。
2 O! S2 l N$ {, D b, C 但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...& Y% y; ]7 d$ f9 A: I3 d7 f
首先介绍一下灰色预测:
! d7 j6 [5 X+ K) V7 ^ 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。4 z, \2 @: W. `2 A
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:
- d- }4 a0 h7 [5 `9 y% U# O (1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
" V5 k* F8 X$ q x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
3 T1 |0 z" G3 T) f! n4 p/ a x(1)=(x1(1),x1(2),….x1(n)) 5 X" p( x3 a9 ^0 @8 D+ |+ q4 t
( f8 n. ], P) ^( B3 g+ Z
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b T; C1 i9 u1 a; R
& z; S S) Z0 ?; v
0 \9 N7 ~/ J! G7 O( M
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
' q1 v$ x, Q. P+ q2 A c=[ab]=(BTB)−1BTY 7 _. q8 \* j* u
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 " Q: F7 s, @$ H& R* i
(6)对函数表达式进行离散将二者做差来还原原序列
( C! {% X6 Y2 w8 Q% c3 { x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1 8 y" _8 k! A5 H3 i( j' M6 Q
(7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q" a1 y' B& ` A5 @2 a) e
2. 求原始序列的均值和方差S1
# u' y# |* }8 ]2 }/ C- ~3.区域残差 e 的均值及方差S2( z* |8 x5 B4 }1 r. e# C
4.计算方差比 C=S2/S14 L) C- e( z. n- \7 q1 G
5.求小误差概率 P
& U% @/ e+ f$ \# ~, a6.精度检验表如下:
) t/ ^( n7 Z% E, h
. }! v4 v. k) K! n4 q' [
' y) t2 A9 a( v9 @1 s' U3 ?* s0 D
8 z: }) W( S8 \, Q1 R
; l$ ]% A, Y& M" s! d# ?) J1 F& o! A7 L% x) X! |7 j
代码的话百度我也帮你们准备好了:
, ^& j1 T4 @% C7 p& [8 M: g, U图片格式,自己抄去5 W& h+ {) g: `7 }3 ~
+ T. j2 g5 W* t( M7 J ~+ m' ?
+ w; l+ q8 w- O9 P) |$ j
/ h: V. v: P; ^0 T. Q; V& `% N& b& J3 u! V
+ J7 }: D/ H2 ~9 S+ u) E
8 z; L. _7 G+ o4 o7 o. c |