数学建模社区-数学中国
标题:
数学建模方法(一)预测与预报
[打印本页]
作者:
杨利霞
时间:
2020-3-15 15:57
标题:
数学建模方法(一)预测与预报
数学建模方法(一)预测与预报
4 @$ E( u# t2 Z! @8 F p
(一)预测与预报
L; Y9 h* G7 T/ _
; @/ y+ P3 H1 s. ]
灰色预测模型(必须掌握)
; S4 _0 {! U" C" v
' C8 H. O |0 r0 M1 k+ f
满足两个条件可用:
, o& I( z& t1 ?' r. Y' e
①数据样本点个数少,6-15个
: A1 X. S" U: y
②数据呈现指数或者曲线的形式
( T; N# t6 v: ?; f. c
0 }- p* O8 T1 ^/ d6 x
概述
6 t4 O) C3 l6 u5 v3 x- `
关于所谓的“颜色”预测或者检测等,大致分为三色:黑、白、灰,在此以预测为例阐述。
" Y' g1 V, K3 T& `4 U9 I
其中,白色预测是指系统的内部特征完全已知,系统信息完全充分;黑色预测指系统的内部特征一无所知,只能通过观测其与外界的联系来进行研究;灰色预测则是介于黑、白两者之间的一种预测,一部分已知,一部分未知,系统因素间有不确定的关系。细致度比较:白>黑>灰。
1 F. n- _* |3 q& |2 j [
- |3 X" n3 @; H/ U
原理
* f' i. \/ X/ p" ^3 e! v
灰色预测是通过计算各因素之间的关联度,鉴别系统各因素之间发展趋势的相异程度。其核心体系是灰色模型(Grey Model,GM),即对原始数据做累加生成(或者累减、均值等方法)生成近似的指数规律在进行建模的方法。
4 D+ h* N) J- k! V- X+ l1 H% M
; y3 ^/ z0 `- ]* i* D9 l8 _
分类及求解步骤
0 n, t, s# J* o% W% ]+ B$ Y
1、GM(1,1)与GM(2,1)、DGM、Verhulst模型的分类比较:
6 s- C2 X1 J# |4 b
8 b ?5 n' S' z0 |% N! ?, H, o
. j0 r( W6 b! p/ N/ N
+ A; U' v- c2 _$ H- Q+ K( x
2.求解步骤思维导图:
$ Q2 u$ h+ C, @0 ? x: B$ s
2020-3-15 15:54 上传
下载附件
(178.35 KB)
% N. H5 g% |0 E* i; h- s4 ~
. j& A5 }: t7 r/ e$ l0 H5 w
实例
6 @. O& v3 f* {. `8 a
1.使用GM(1,1)的预测检验“北方某城市1986年-1992年道路噪声交通 平均声级数据:”
, |" B! V% ]! Y- ]# ?( f
见下图:
7 Q7 g9 |) N) s+ @ x( ^
+ S8 T, s: s1 Z. o% K, I
2020-3-15 15:55 上传
下载附件
(42.81 KB)
4 E& C: q8 F. d6 p2 l5 l
2.使用GM(2,1)的MATLAB实例:
! ^% [+ r2 \+ g* t8 m
2020-3-15 15:56 上传
下载附件
(122.96 KB)
9 j. m+ q8 l( i$ I* ?
3.灰色预测模型GM(1,1)
# n, \+ R/ J0 U: H; G
GM(1,1).m
! U) ~& E/ ^9 E% x
3 {. |5 f6 ^- c h
%建立符号变量a(发展系数)和b(灰作用量)
- ]9 i* ^( l& D4 w
syms a b;
6 G) }3 i9 M: w/ H- v
c = [a b]';
' x6 t k* Y" ~1 L ~2 Q
' @ O1 n9 e" c( {( F9 v3 o
%原始数列 A
! C3 X3 h( }. z" q0 @
A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];%填入已有的数据列!
+ p% j( O1 L$ e. }* K' ~2 c
n = length(A);
, U2 k% ]% C! U% n+ j% _* r6 U
! X+ S' ?0 n% {4 A3 n. J" {
%对原始数列 A 做累加得到数列 B
! q8 e. `; s. S& v' U b
B = cumsum(A);
0 ]' @8 ?; `& l
' Z. M" s# j+ h$ l( h. f8 ?
%对数列 B 做紧邻均值生成
. U0 j" p3 l; {; W5 W* n: d7 m
for i = 2:n
5 |2 s( y! g% f
C(i) = (B(i) + B(i - 1))/2;
. `( {7 j/ S+ Y7 n# \) h+ k! W
end
* e8 z0 j8 e) ?2 w! T
C(1) = [];
$ f9 x! c; t. g/ [" X+ q. j
; v! ~ M+ F' w. ~
%构造数据矩阵
8 M9 I2 L. f5 M) x( [
B = [-C;ones(1,n-1)];
4 Q# L' L$ X( O$ I% L: C
Y = A; Y(1) = []; Y = Y';
- \" F0 a% c* g2 U
. ?4 x" P6 J$ a
%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
$ k+ c) \# f. f: h% ?
c = inv(B*B')*B*Y;
7 h7 W# f- z# |" x) G _
c = c';
/ m- B/ o% y1 z/ I, {
a = c(1); b = c(2);
3 {+ x2 T6 h! y
& @+ t: k! }% X7 S! W6 k' E9 ?8 B
%预测后续数据
e" \* G) J, i$ ^; b
F = []; F(1) = A(1);
) G! U* P& Q! }/ K6 u8 e' }! ^$ h# i9 z
for i = 2:(n+10) %这里10代表向后预测的数目,如果只预测一个的话为1
" L/ v/ O) j. t, F. y+ h
F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
( n2 \5 K: q) ]' Z- R- L
end
0 }& |+ o+ j8 O8 c
5 |. {5 k5 o, i8 u) n5 V
%对数列 F 累减还原,得到预测出的数据
7 l- S9 W6 R- x3 p- h
G = []; G(1) = A(1);
$ g e1 |1 Q. G9 r
for i = 2:(n+10) %10同上
2 u) {. G+ l; P# p- e
G(i) = F(i) - F(i-1); %得到预测出来的数据
, T( u: T0 D* F2 m6 i8 F, z1 H
end
# x! V2 `# p; P. M+ V6 v
]( J" l" V( P r# _
disp('预测数据为:');
& Q6 [# o$ }" c2 ?
G
9 G0 p$ }- b/ K5 D/ k
3 p% z3 d d6 m4 V6 e. H
%模型检验
% p7 f0 ^, N- w0 s& J& j/ O
- P; `( ~1 a2 B, N* _9 [" S
H = G(1:10); %这里的10是已有数据的个数
- D( l2 f! I1 Q
%计算残差序列
: {, C, x' E$ W6 W' T3 ]
epsilon = A - H;
" b2 {- z! w: l( ]
, n* Y$ Z+ d$ K% Q& c9 @
%法一:相对残差Q检验
% q& D( l* w% S/ [9 t
%计算相对误差序列
! Q' I8 I/ |2 q/ x: c
delta = abs(epsilon./A);
7 g: W) ]& ^, l
%计算相对误差Q
* z8 C1 C/ }. C$ p( B9 ?' O( j/ v. s
disp('相对残差Q检验:')
+ F: u% t4 C& C( T2 ~
Q = mean(delta)
# A% g3 I$ ~& U7 k: C+ B- O% n
, ^0 X, O, M: V! W! H# ?+ f" a
%法二:方差比C检验
6 j, w* E! p% T5 g
disp('方差比C检验:')
% M& M1 p9 ^3 E& Q) \' r
C = std(epsilon, 1)/std(A, 1)
5 E/ N% V( ^) S; A. x. j
8 G) t7 C; k1 u2 ^. j
%法三:小误差概率P检验
; t# t7 q2 }+ [* V
S1 = std(A, 1);
: ], i5 @3 B3 h& A" Y) Y
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
6 W( c$ ^0 _) Y. A5 ]
disp('小误差概率P检验:')
! N. [. O% b3 W2 D" ~
P = length(tmp)/n
! t- L4 d' |* }5 y+ x- S2 B/ I' s
1 K4 `! H2 g. e5 t
%绘制曲线图
+ K& z" {; {" }& F
t1 = 1995:2004;%用自己的,如1 2 3 4 5...
- Y6 |1 y" Y: f
t2 = 1995:2014;%用自己的,如1 2 3 4 5...
( |4 @2 ~6 E3 M/ m
- F! _( ^: g9 i, a. {& d$ c) Z; o
plot(t1, A,'ro'); hold on;
* X% M3 M0 v9 \6 d
plot(t2, G, 'g-');
5 j! E. K; P) L& W, x5 N
xlabel('年份'); ylabel('污水量/亿吨');
" G m$ X6 |$ H: ~ p5 K" V" M
legend('实际污水排放量','预测污水排放量');
) o% s( O" ^- x9 E
title('长江污水排放量增长曲线'); %都用自己的
; d( ?! j0 f$ g( v7 Y6 j% W. |1 t* z/ w
grid on;
" S. j) o9 k% D( \6 t# v
1 P: C7 D" |2 t9 ?
4 y9 N0 l" z H! {7 p; y" o) Q
4 a; E/ f; w/ ?1 W) b
# M9 C: a" G& G! S) s2 ]9 E* D- L6 D
6 N+ ]8 p( d% {& W. i
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5