数学建模社区-数学中国
标题:
数学建模方法(一)预测与预报
[打印本页]
作者:
杨利霞
时间:
2020-3-15 15:57
标题:
数学建模方法(一)预测与预报
数学建模方法(一)预测与预报
( ^/ {3 z5 C1 C0 p0 B: \$ y1 I' O4 k
(一)预测与预报
@/ P' }4 w! q6 Z0 n
( a4 {2 C: J5 R4 v0 ]3 T6 f
灰色预测模型(必须掌握)
0 ~! Z7 q0 R# K+ Q: [5 p" `
Z1 G% l. F: S2 C/ _+ z- n
满足两个条件可用:
- ^9 `& r( b3 ?/ l
①数据样本点个数少,6-15个
8 N2 I9 I" r( y+ k" J. v
②数据呈现指数或者曲线的形式
?. ~0 v2 f% j
+ E: d; A% l: ^
概述
# m5 Q! ]6 y E& ^
关于所谓的“颜色”预测或者检测等,大致分为三色:黑、白、灰,在此以预测为例阐述。
2 l. U) X+ W2 K0 K
其中,白色预测是指系统的内部特征完全已知,系统信息完全充分;黑色预测指系统的内部特征一无所知,只能通过观测其与外界的联系来进行研究;灰色预测则是介于黑、白两者之间的一种预测,一部分已知,一部分未知,系统因素间有不确定的关系。细致度比较:白>黑>灰。
. Q9 y: s6 ?7 J2 y" `
; Y9 M" {- F& W/ S+ [* u$ e" b3 v
原理
8 j3 D$ H& \" D
灰色预测是通过计算各因素之间的关联度,鉴别系统各因素之间发展趋势的相异程度。其核心体系是灰色模型(Grey Model,GM),即对原始数据做累加生成(或者累减、均值等方法)生成近似的指数规律在进行建模的方法。
% F1 [* h* d" K) e
" |3 }& r ~7 F2 l+ ?
分类及求解步骤
- w5 F" L) m+ s( k) i$ X
1、GM(1,1)与GM(2,1)、DGM、Verhulst模型的分类比较:
y# ]5 u( }1 N3 ^9 ]) c# m0 i
$ x# W( S" r& Q4 Y/ C4 M$ X0 s
* `/ f% l$ j/ x5 w) d
0 J) V! A9 ~) [
2.求解步骤思维导图:
, S9 d) S: z3 ]7 q* F: i& Z& B
2020-3-15 15:54 上传
下载附件
(178.35 KB)
) v4 x' u' K; o3 T
4 v2 G2 s$ b' C
实例
2 K5 i+ ~) G& }4 B% \0 j, m
1.使用GM(1,1)的预测检验“北方某城市1986年-1992年道路噪声交通 平均声级数据:”
* o+ w1 D) j( g1 r: b
见下图:
# Z, S1 P; d& u2 [. N
5 G, S; h( z9 n A( f8 t
2020-3-15 15:55 上传
下载附件
(42.81 KB)
" G6 q! z5 r& [( k" @2 [+ o, w# }
2.使用GM(2,1)的MATLAB实例:
! q, q7 q& z' q! x. e) i
2020-3-15 15:56 上传
下载附件
(122.96 KB)
# j0 h* [2 K0 V1 i& k
3.灰色预测模型GM(1,1)
9 K7 v& s/ O" e$ I( L3 z+ o
GM(1,1).m
/ Z. z" {6 N5 L1 Q
& |8 `% J' p, o% D
%建立符号变量a(发展系数)和b(灰作用量)
( E" Q D$ c v F9 e# S$ s( z% F
syms a b;
6 a/ `' r( m& ]# r* p
c = [a b]';
k+ W! H. L' j; W i
1 j4 V# p: G& m- T
%原始数列 A
; U2 `* X6 J+ [4 @
A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];%填入已有的数据列!
# H* q3 B0 D- |6 C
n = length(A);
8 u. H: u6 l0 c L1 P
9 N# |/ Q1 O- D. F
%对原始数列 A 做累加得到数列 B
: p( Y, B" z& h4 A' l
B = cumsum(A);
" x" }5 n/ b& q$ a: z' l# Q+ y
) N) q) s; I) Y7 _9 _
%对数列 B 做紧邻均值生成
! O# W: D/ i3 f! z5 s6 f
for i = 2:n
0 p3 [, c5 R' A8 ~
C(i) = (B(i) + B(i - 1))/2;
+ Z$ S! f! k" ^
end
& G+ p2 T: I# Y: S+ F+ P/ {& X+ R
C(1) = [];
' t9 |" I8 R8 t& G8 |
. M% K# j* G! ~, X9 s
%构造数据矩阵
) \, x8 ]+ f0 u( T) k
B = [-C;ones(1,n-1)];
2 R0 {. ] d- i l
Y = A; Y(1) = []; Y = Y';
. Q% P Z# d% c( L6 r8 [
1 U2 g+ \! g2 s8 H0 M+ ^
%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
8 m! P0 G6 I0 D, D
c = inv(B*B')*B*Y;
' d$ e9 v( L( i6 U8 _$ H9 a2 ?) K0 `& L
c = c';
7 X+ q1 E, d( M* y/ _# K0 F% V# }
a = c(1); b = c(2);
1 l0 b, q: c6 M* S& j
5 n" U( i: S% C! N D/ e% U
%预测后续数据
/ Y7 n% T/ O5 {" b X( Y0 v
F = []; F(1) = A(1);
6 a. k+ H$ o8 J# O
for i = 2:(n+10) %这里10代表向后预测的数目,如果只预测一个的话为1
8 z; O$ q$ K9 s) e: p! U: P
F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
! ~5 f6 S2 m* H6 N& r
end
: C9 D4 \1 v- n% i( Y0 l: L
: L; O1 T) f! K4 E# B! \/ x
%对数列 F 累减还原,得到预测出的数据
8 K5 y; r; s; p7 z6 f. x% A) B
G = []; G(1) = A(1);
7 V, \' e) I) [& w
for i = 2:(n+10) %10同上
1 C2 G: b6 W) D6 a
G(i) = F(i) - F(i-1); %得到预测出来的数据
1 E5 |3 [4 s3 S
end
, a s! L$ @0 y- P% g' G
% [: }6 }0 u" p3 C* e& i, e/ L# v
disp('预测数据为:');
/ m5 l+ @1 }; O: F _( s( p) _
G
7 }# o: E6 C0 Q; F- D
, P% ~5 N. t$ M4 C. Z; Q- K
%模型检验
% p' Z7 k1 V( i5 p$ g( {9 X9 I
. O, p" H! N0 i, q, i
H = G(1:10); %这里的10是已有数据的个数
" e0 g; ] F. y) K# m3 c
%计算残差序列
' G& s H( e2 ]6 P4 Y' F
epsilon = A - H;
* c- L: p5 s$ L. Z) w7 p# x
; ?0 `' z+ ?0 V: z; X% U
%法一:相对残差Q检验
6 a) S6 P3 q& @6 D4 o
%计算相对误差序列
. U8 h+ o l' n2 C
delta = abs(epsilon./A);
3 ^( C* Y) R6 u7 k* U7 v
%计算相对误差Q
3 f2 D, N# h* z8 C- Q
disp('相对残差Q检验:')
- K. @' X) u/ r: r6 G6 O5 W! j, t3 T
Q = mean(delta)
1 E! M- n) {3 b, f8 `& i5 m1 \
6 S! A% P }" w9 G9 [
%法二:方差比C检验
: P I, z9 @5 T2 N+ B. K" {
disp('方差比C检验:')
# D) F0 q5 y+ d! z% O
C = std(epsilon, 1)/std(A, 1)
6 P* C8 y I. ]0 H+ k; n* U
. X3 _% v# Q* _) }/ c% t* g
%法三:小误差概率P检验
0 F9 V# A o6 K1 D2 p2 {0 T; q. n
S1 = std(A, 1);
* {0 O) X7 I7 Q3 n* ?
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
1 R: j0 I2 E7 W. W3 ^+ g6 N/ `
disp('小误差概率P检验:')
, C+ i' } g2 Y/ A0 N8 ?9 k ^
P = length(tmp)/n
. c2 b" |+ V T N S: r F a
* Y T2 Q. E1 \- ^) U0 e$ H
%绘制曲线图
4 p* m5 ~) f8 _1 g. }
t1 = 1995:2004;%用自己的,如1 2 3 4 5...
( v) H9 u# k4 A
t2 = 1995:2014;%用自己的,如1 2 3 4 5...
2 w4 r6 r a) Q8 c% u* w/ {) i% E
* N2 u& t4 C# |; Q# A
plot(t1, A,'ro'); hold on;
; U3 W- z1 ^, @# O
plot(t2, G, 'g-');
/ e" D7 D; ?$ g/ I2 V: t6 n3 f
xlabel('年份'); ylabel('污水量/亿吨');
6 p4 v+ E4 a* F
legend('实际污水排放量','预测污水排放量');
4 q, Y) k. Q7 }2 v. n% d
title('长江污水排放量增长曲线'); %都用自己的
- k! |9 m- d2 J- @$ d
grid on;
a( a3 D& ]' N( P! y& Q/ B2 d
3 C/ ?4 U& ^; W; J- d
' o6 f. ?: ~, z
, h# d, ~0 V1 c7 ?% h$ y$ ?- Z
; L0 T* d+ q$ h4 \
?+ E) W0 C7 p Q! p
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5