本帖最后由 2336426014 于 2018-8-5 22:20 编辑
& d' g1 }) S* I
; V4 N" [( O1 N( K9 E 可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。: ]$ _7 o( g, \
再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。" n0 n0 O1 E: }+ O: X6 p% {
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...+ P% G& ^* x1 f1 `& ^
首先介绍一下灰色预测:
# f& P' v2 \9 L* w4 Y 灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。
g, d$ l$ i) P- V! e* A9 o' v 灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下: h! S$ ?6 X, d# k' C" B, j. T
(1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令 3 \" z: o5 Y6 a4 A; D+ y7 D0 o: o6 t2 F
x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n 6 F" |1 e7 ^) d6 t
x(1)=(x1(1),x1(2),….x1(n))
e9 j4 ]# u; T- M a5 U5 v9 r' T G2 [2 U, f
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b
$ H; z# z5 v8 x9 t! `1 E5 i; S) G) M' j8 S. C
6 [6 i9 B; t4 \0 l- U
(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t7 w9 G" E; }, k! s6 m* ~5 i9 u
c=[ab]=(BTB)−1BTY
7 G! ]* J3 L8 J7 d- W3 d* h0 v(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1 * d" ~$ k5 ]4 d; A) S! A$ _' G
(6)对函数表达式进行离散将二者做差来还原原序列
! g; O! Z. r5 z5 C$ e% g x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1
% q% m: E- N7 E (7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q9 k9 s$ d" S# Y/ N
2. 求原始序列的均值和方差S13 o$ W( a% `0 n7 b
3.区域残差 e 的均值及方差S28 }; W* N4 [: [7 L+ Q
4.计算方差比 C=S2/S1 Q+ z Z) I5 M; c
5.求小误差概率 P/ J- a" n/ S4 K) L" Y* {" u2 k
6.精度检验表如下:4 s2 V$ Y" `! F( u
9 ]( a+ F# X& }+ O$ V; T
( {- ~5 Q. b' Z( k0 q
) U. L, h% I! j% ~" x6 a- l$ V8 C7 N( Y
9 x' E u6 F$ Q+ w# R0 h' `
代码的话百度我也帮你们准备好了:
# l0 `" Z! f* @, ^2 S图片格式,自己抄去4 V# S$ k6 i F
0 V; f7 z; B& E, L' _
0 x+ {7 a" p9 Q$ O, |/ p; k& [! l- N: S- r# _ f4 P. W
8 r" k, T7 O) O2 o9 ]" i
7 Q3 [9 M: \0 G4 p a- d$ p3 G0 ]" ~
|