本帖最后由 2336426014 于 2018-8-5 22:20 编辑 + | f) u. ]) D ?4 I
% b3 H8 r q9 T& C
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
8 S/ [* X0 q' K" U6 H7 X1 i4 l 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。+ S- C0 |$ y) J, x' L- o/ o( m
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...& t/ Z& o: e: z
首先介绍一下灰色预测:& V4 C& V% m) f1 f7 x9 ?
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。5 a. R; @2 A. T# [) P: b; J
灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:! {/ f( m. {# y
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
$ T2 Z9 w! B& h' X x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n - F9 d6 u6 Z1 v$ Y6 N
x(1)=(x1(1),x1(2),….x1(n)) 7 J% e' n R- Y8 s/ k
. {- q% U A2 l+ A. V. _(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b
# M' E9 @4 y& P9 |* ] p5 b2 S {% c, F
' u; [1 ]5 b1 j: D; d) _* F! k(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
' d! u% @- U0 b4 A$ G2 d- \1 Z/ m c=[ab]=(BTB)−1BTY & d3 [# x5 L' @) `( [8 i
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 & ~: i! T- \$ ^3 a. r6 K
(6)对函数表达式进行离散将二者做差来还原原序列
2 G. V5 W. T* |- t# {/ i x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1
6 C4 m# D. L: ?. W9 Z/ Z- V0 Z (7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q. S: f; c; D3 U& a8 }. I
2. 求原始序列的均值和方差S1& b$ T! R9 ?. f) s
3.区域残差 e 的均值及方差S2
! m( [& i/ |5 K4.计算方差比 C=S2/S1; J# R* \" D& k- f1 e2 G# n! y
5.求小误差概率 P( i) c3 ]* Y( {7 Z* W) v. J5 t0 ^
6.精度检验表如下:
0 n* v8 x3 ^3 v0 F1 i$ J# i
! u5 U( Q; D, s0 \1 F1 v; a+ z6 T9 J1 K7 T6 d
0 I: N6 b& y ^8 ^% I p& E# \. w! E1 E4 U: W- ~
1 l! `$ ]' o2 p8 p/ C7 [' M t
代码的话百度我也帮你们准备好了:/ o7 E, D2 `! n, \' Y
图片格式,自己抄去, A% k* }; h# ?' ?
; z2 q5 D! l2 {6 W
]1 G/ _0 g0 J+ D+ H. \
8 @8 j2 {9 B7 p% b
2 Q! a% G4 A- w* a, m) ~
# `7 l4 s* ^* g* r4 E& c {( B5 B# U0 O2 D4 t6 A8 G$ G
|