数学建模社区-数学中国
标题:
数学建模方法(一)预测与预报
[打印本页]
作者:
杨利霞
时间:
2020-3-15 15:57
标题:
数学建模方法(一)预测与预报
数学建模方法(一)预测与预报
$ G( J* ]. g- j6 @2 I8 ^
(一)预测与预报
* C/ R) |6 Q: S/ k
( s5 w: ^/ e, y) ~3 L5 V
灰色预测模型(必须掌握)
/ `% B# ^- E6 H0 \8 p; u8 F9 _1 n8 H7 L
$ V9 o7 H' _+ }$ k
满足两个条件可用:
4 U# U8 c) O8 V5 t* I8 e
①数据样本点个数少,6-15个
, L0 m7 @) f1 u: G- q) K
②数据呈现指数或者曲线的形式
2 _3 F: k: G' s+ {, ~
7 D, }* J% b$ _$ |# D
概述
$ t& N; q" K% _. k
关于所谓的“颜色”预测或者检测等,大致分为三色:黑、白、灰,在此以预测为例阐述。
/ X6 R4 N# ^, R/ b: p( C
其中,白色预测是指系统的内部特征完全已知,系统信息完全充分;黑色预测指系统的内部特征一无所知,只能通过观测其与外界的联系来进行研究;灰色预测则是介于黑、白两者之间的一种预测,一部分已知,一部分未知,系统因素间有不确定的关系。细致度比较:白>黑>灰。
: r5 n" h k c
1 `) V! h) u& F0 q+ N. F9 V6 S
原理
! q( U9 P% f" x' [% l
灰色预测是通过计算各因素之间的关联度,鉴别系统各因素之间发展趋势的相异程度。其核心体系是灰色模型(Grey Model,GM),即对原始数据做累加生成(或者累减、均值等方法)生成近似的指数规律在进行建模的方法。
4 f7 Y( a9 `; d& u. F( G& w
. z( W- P! Y. O$ e# d) y0 @, m
分类及求解步骤
+ b/ O% L! m" d1 g2 Q0 R, b
1、GM(1,1)与GM(2,1)、DGM、Verhulst模型的分类比较:
1 l5 @7 B8 a( j, D U
( o7 h5 n5 B& R1 ]9 v
( g. t" X% A) P0 l* O) i
7 p6 D% U2 n t. K' H
2.求解步骤思维导图:
0 L' \9 P0 e" S" W
2020-3-15 15:54 上传
下载附件
(178.35 KB)
* d, R6 e F0 T" r/ L
. F7 J$ u @! {. ^
实例
# p- n& }/ I/ z0 _
1.使用GM(1,1)的预测检验“北方某城市1986年-1992年道路噪声交通 平均声级数据:”
2 `# `. G; d, `
见下图:
5 z# V) {( }% U
: G6 C4 Z7 x. N& q) }6 {& Y4 @
2020-3-15 15:55 上传
下载附件
(42.81 KB)
4 u; A; C( R4 R
2.使用GM(2,1)的MATLAB实例:
+ `! e9 N. f$ u! O4 ?
2020-3-15 15:56 上传
下载附件
(122.96 KB)
0 P* n4 g: ~% I/ f3 t+ H: H d, L
3.灰色预测模型GM(1,1)
4 |, d1 M; O4 |4 P+ E- N( x: m
GM(1,1).m
: U" d U. G4 R- [ M! }
8 t. U) o0 W$ p+ p
%建立符号变量a(发展系数)和b(灰作用量)
4 z$ \6 l% z5 u# r
syms a b;
7 `2 @/ d7 O6 ^* l" f
c = [a b]';
, y, b" A$ N5 Y2 a6 u& C o
' m' W- x- c$ Q% }
%原始数列 A
" [9 r" l/ G/ ?+ d1 v
A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];%填入已有的数据列!
G4 @2 y7 F, R. e0 E# Y) m6 N
n = length(A);
$ {. ~/ U! W% ?& E& F! |$ a! E9 H
) O4 f* e. M$ i# A- b1 A+ ~0 d2 J
%对原始数列 A 做累加得到数列 B
. m% t @1 | |0 z5 W5 \
B = cumsum(A);
' m4 [& L, d* @: C0 B+ H9 h6 T
( e! ]1 y$ A7 r) R! M
%对数列 B 做紧邻均值生成
' t/ O3 G8 T: g K; W( f A
for i = 2:n
# ]4 G0 ^' t! c6 b# ?4 _
C(i) = (B(i) + B(i - 1))/2;
3 w: i- N! P9 |( m3 I: [1 c
end
2 S% k- @! T8 O6 z7 E
C(1) = [];
2 o5 `: v2 K& t; \+ v* B; \
8 D9 V( X# H4 S; k" k: m# M
%构造数据矩阵
' ?; O# D( z: I2 X
B = [-C;ones(1,n-1)];
$ u9 J- Q* Q) K) _. x( c# u! ^
Y = A; Y(1) = []; Y = Y';
$ `; v$ b3 k! k1 _: ~' v, r- l
8 u- ~2 Q- @0 ?
%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
# o- x8 m$ u" ]# ^9 U
c = inv(B*B')*B*Y;
. a) s6 P( g+ }, u
c = c';
7 ^& a& X$ e0 ~
a = c(1); b = c(2);
0 Z8 k" X* }, l( l& L
! I; N3 O- w: j2 t% s% A/ @, K( H: c! R
%预测后续数据
" X$ `& {, V4 ^/ L/ V
F = []; F(1) = A(1);
% }( x+ ~2 J' t# P" _0 P7 H
for i = 2:(n+10) %这里10代表向后预测的数目,如果只预测一个的话为1
# m# g3 o( O- A( m) f( [8 w
F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
& Z: F2 A! e& @3 d7 E0 T
end
4 @5 @) ?0 f2 j% s9 ~7 D% v5 j
% f+ w0 Q( c- }) v6 @) Y% ~
%对数列 F 累减还原,得到预测出的数据
! l# O {: P8 }: _
G = []; G(1) = A(1);
. d, s6 |2 p+ t, r, g: ]. F$ c' b
for i = 2:(n+10) %10同上
: \. g( R( K t# b7 X U
G(i) = F(i) - F(i-1); %得到预测出来的数据
6 u+ q0 O! h' ~' t; ^
end
- M" S- K4 K U0 O
9 X v e8 v3 w% X6 e
disp('预测数据为:');
6 C. ~" v* f v
G
( y8 e6 k$ ~* H6 k& f# v* a
; |% X& q, N! g& C, r& D# Q, f# F
%模型检验
8 @8 I8 r c, z+ G
4 f7 V- P# n$ }' D
H = G(1:10); %这里的10是已有数据的个数
5 V; U$ y2 K4 t2 I1 e5 `# {
%计算残差序列
9 ?: ~5 S4 O* J. {/ U* d i
epsilon = A - H;
8 }: Q* Y2 G: g% t/ ^
& o3 Z7 l7 ?3 f$ Z3 v6 O
%法一:相对残差Q检验
' x9 ?! x0 d' e U
%计算相对误差序列
( L9 d- P0 g$ `9 u) i6 _9 C! a/ r
delta = abs(epsilon./A);
4 d/ p0 _. h! R! k* J; E' f
%计算相对误差Q
8 ~! ^3 ~6 E7 E, |1 b0 c
disp('相对残差Q检验:')
, e: N2 i5 r! z& @& Z
Q = mean(delta)
7 s6 ?) Y [( f9 |2 e
" C+ n5 B, m$ N, u6 F
%法二:方差比C检验
/ Z+ y) m$ u% d
disp('方差比C检验:')
3 h* i. b2 G& p) H
C = std(epsilon, 1)/std(A, 1)
( g: T! {' l6 }. t
# d; U+ U0 D0 P* a# ]
%法三:小误差概率P检验
" i4 a X" v7 o5 a9 m1 x; l
S1 = std(A, 1);
6 x! d7 B5 i& A
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
# g7 h. w$ w: o5 \
disp('小误差概率P检验:')
2 _+ I8 X& H8 Q! J" [
P = length(tmp)/n
+ M' o. ~# \. Q4 U& b
# m$ f, F4 R7 Z( X
%绘制曲线图
6 h g) Z1 q% O# z
t1 = 1995:2004;%用自己的,如1 2 3 4 5...
$ ]' c, z) Y3 k2 n) d( X
t2 = 1995:2014;%用自己的,如1 2 3 4 5...
* }& Q; ^4 a; U; J8 W+ H
+ ?# Z6 Z$ g* {2 Q
plot(t1, A,'ro'); hold on;
" @: W# o3 O5 ~7 X4 @% q# n9 D0 }
plot(t2, G, 'g-');
. N$ G2 ]& q8 J1 Z! s7 e1 d( H
xlabel('年份'); ylabel('污水量/亿吨');
5 U% ?/ x- E, p: A' H2 z* N7 p
legend('实际污水排放量','预测污水排放量');
6 ]! w% k' ?8 A* G) k
title('长江污水排放量增长曲线'); %都用自己的
2 L) R, r$ }% k- n* N
grid on;
5 P) | ~; q# R! h
8 v: m/ ?$ E1 }7 Y5 W
; G; R2 w' j, U& _$ X. [
# D w7 Q) z) z% u: i( \% B
% ?0 j. G4 V! f& s& E% n
/ }7 x- s% x* K: {1 ~
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5