本帖最后由 2336426014 于 2018-8-5 22:20 编辑
+ T2 x% S3 V% o7 l/ T; w) ]+ a) S# C: q2 O
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。$ `+ _0 {" K" M. I
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。
6 X& ^% v* X7 I- W 但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...: D x; {* e% w' {, z9 }+ ^* @$ Q
首先介绍一下灰色预测:! s: z0 C0 U. P$ N
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。
: [1 G% G( ?' q; o5 B# w }+ D 灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:
! e. N3 d1 k! _7 o (1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
2 N8 R, @" r) h2 F x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n / p' D) }9 d8 I6 B( i7 Y, c& J
x(1)=(x1(1),x1(2),….x1(n))
/ i m/ a' E4 k, K2 j" l5 E$ u4 _) D% j
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b 2 _* B f3 b" [0 V& b+ g5 H
3 L3 R6 n/ x4 l
( t7 `! S% G' b1 R7 f1 Y(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t
0 v W) i" [8 D: J- k! X c=[ab]=(BTB)−1BTY
: f* T- {7 x5 v- h(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1
7 a( U& |4 k2 e1 n/ n. K(6)对函数表达式进行离散将二者做差来还原原序列
. q5 E5 D+ `) h+ h H; y4 f' O x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1
& S- O9 \8 Q. X* u. k' m F% S' G (7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q5 `- ]( T X' Z+ H% l: ?' V
2. 求原始序列的均值和方差S1
" {& g( a+ Z; o% x: `3.区域残差 e 的均值及方差S2( a2 g5 |' x! |* Y2 E3 t
4.计算方差比 C=S2/S1/ u% k) Y2 B5 _* [" J' e
5.求小误差概率 P$ n$ j2 ^) }/ h
6.精度检验表如下:1 Q1 Q6 _+ R7 d" ^0 e$ b
+ J9 R8 N' y5 Z3 q; b/ L
* ?( `" J1 U* Q y9 U1 x9 F1 ~$ Y3 m6 }! e1 w, Q+ B! W9 c
, i- j4 D& I/ m8 \
, n8 ?# C9 t" F$ M/ Y: h" A1 E. d" V代码的话百度我也帮你们准备好了:6 p2 ~, p/ A7 n3 n" Q( j+ w; I
图片格式,自己抄去7 A: D, x2 Y& k w, v
( v0 i, k) Q0 M) n y$ B
& g( ?- h }2 I6 G/ h1 Z U9 j4 W
: s2 w8 q# { I# E2 Q
) F- t$ e& ^3 k" \& G2 c! e' _) [
: j2 k/ L3 I# f7 @! D, X |