本帖最后由 2336426014 于 2018-8-5 22:20 编辑
& N$ s: u' D2 }5 W0 l: ~/ N9 J' c3 K0 F, g* m8 D
可以好不夸张的说灰色预测是所有新人爱用的,老生也爱用的,同时也是最基本的最简单的预测算法,原理简单的没话说。
4 o: p6 n$ ]. r7 @9 e 再说一下它的作用,虽然吧...这个东西原理很简单,但是耐不住人家适用范围广啊,效果虽然不是90%的准确率,但是59%的话差不多还是可以的。! }# h$ n4 G0 k; ?1 S3 m
但是我还是觉得有必要说一下这个东西,帮助那些第一次用的时候注意一些细节问题,比如范围和结果分析别一顿还夸...
* Y- K& J3 ~4 a& b3 a3 f8 z 首先介绍一下灰色预测:, X4 j, T- q8 a" i* Q# a' S
灰色系统理论认为:系统的行为现象尽管是朦胧的,数据是复杂的,但它毕竟是有序的,是有整体功能的。建立灰色预测模型之前,需要对原始时间序列进行数据处理,进过预处理的数据系列称为生成列。对原始数据进行预处理,不是寻求它的统计规律和概率分布,而是将杂乱无章的原始数据列通过一定的方法处理,变成有规律的时间序列数据,即以数找数的规律,再建立动态模型。灰色系统常用的数据处理方式有累加和累减,通常我们用累加。
' h& O" m: d3 l; t' V, L 灰色预测通过鉴别系统因素之间发展趋势的相异性,对原始数据进行生成处理来寻求事物的未来发展趋势。诸多的灰色模型中,以单序列一阶线性微分方程模型GM(1,1)模型最为常用。下面简要的介绍一下:
% l! k6 x r9 u6 e! a3 G (1)累加生成(AGO) 设原始数列为x(0)=(x0(1),x0(2),….x0(n)),令
! A* ]/ q; b1 i- \ x(1)(k)=∑i=1kx(0)(i),k=1,2,...,n
( j# l8 ~: L; e6 }. m1 L- J x(1)=(x1(1),x1(2),….x1(n))
! N. U2 D( M a5 i& @1 C$ @3 s: _* L
(2)建立微分方程模型 dx(1)(t)dt+ax(1)(t)=b ' T7 \& B% b' u: c& `
7 p; ?' p# F. [% R
: N6 _1 \% W6 x0 W0 p(3)对累加生成数据做均值生成 B 与常数项 向量Y
(4)最小二乘法求解灰色参数
则令该参数为 c ,令k =t3 R# h- z! J' h
c=[ab]=(BTB)−1BTY " Y- W9 y5 [! q7 n, O3 O
(5)参数代入微分方程,解得 x^(1)(k+1)=(x(0)(1)−ua)e−ak+ua,k=1,2,...,n−1
0 A, {! B! I3 E(6)对函数表达式进行离散将二者做差来还原原序列$ s) q& C* B L% g9 _8 w# Y
x^(0)(k+1)=x^(1)(k+1)−x^(1)(k),k=1,2,...,n−1
7 j" ?7 a- R# ^0 ~4 t$ l" x. I" o (7)对模型进行检验1.计算原序列与预测序列的残差 e 和相对误差 q
+ b! l- n# R2 q& B/ a$ y+ T2. 求原始序列的均值和方差S1$ J' h$ h1 d4 c' e7 Q( P
3.区域残差 e 的均值及方差S2
& J+ J0 b0 ?1 F" w$ F4.计算方差比 C=S2/S15 x0 g. x' r( T; h) q
5.求小误差概率 P
: f$ ]5 v/ i5 a j- n! j0 z/ j6.精度检验表如下:6 E, q9 o9 E) X) K. ? J
# K0 U" j% @5 D( n. E. ~
* m$ b- D$ Y" D( K8 f
- ]' z: e6 H: m% _9 k
$ I. K* ^' ^; F$ w6 W, V1 Y5 _
# A0 {* F' y. b$ O
代码的话百度我也帮你们准备好了:( \2 g0 W' Z/ ]. G$ N
图片格式,自己抄去
) K7 Z7 q5 k" l8 E: B6 S0 E8 S% }
) B: |& L1 k9 Q
- c; f& F) }% d+ O# F! N/ s, T0 k, \* f3 r/ a
9 {$ L- s8 s2 J" U$ d2 Y
6 i2 c j# K) a9 Q2 d2 }$ E4 Q4 Q- w" z1 K8 S
|