数学建模社区-数学中国
标题:
数学建模方法(一)预测与预报
[打印本页]
作者:
杨利霞
时间:
2020-3-15 15:57
标题:
数学建模方法(一)预测与预报
数学建模方法(一)预测与预报
" l" T& ^ U4 B1 Y6 [0 C' F2 W
(一)预测与预报
V, Q( ~1 l3 M* d3 ]' Y
$ Y" C, p8 ?( L0 o7 P" J) P7 z r: {
灰色预测模型(必须掌握)
2 F5 d% L6 Z0 G' H
7 _( m! J! r) S' Q3 e2 d
满足两个条件可用:
; s) `; H9 A" G/ _. n' w& i
①数据样本点个数少,6-15个
$ {* z6 j0 B# Y" L
②数据呈现指数或者曲线的形式
# H5 `* a1 L6 J
2 r v1 H# Y5 G3 }. ~1 h
概述
Z' N" |6 s$ j: ~7 n
关于所谓的“颜色”预测或者检测等,大致分为三色:黑、白、灰,在此以预测为例阐述。
5 M& s7 A9 u1 v- e
其中,白色预测是指系统的内部特征完全已知,系统信息完全充分;黑色预测指系统的内部特征一无所知,只能通过观测其与外界的联系来进行研究;灰色预测则是介于黑、白两者之间的一种预测,一部分已知,一部分未知,系统因素间有不确定的关系。细致度比较:白>黑>灰。
. s, U8 f; d: ^" a' ?
2 ], a9 l' |9 r1 _" f9 Y
原理
, j8 x" u9 s8 q4 O2 p+ Z& o% Z
灰色预测是通过计算各因素之间的关联度,鉴别系统各因素之间发展趋势的相异程度。其核心体系是灰色模型(Grey Model,GM),即对原始数据做累加生成(或者累减、均值等方法)生成近似的指数规律在进行建模的方法。
! e5 ^% U' N% L) m8 D
K2 G/ T1 k9 U% n
分类及求解步骤
8 R& k) Q# d" a5 x& L
1、GM(1,1)与GM(2,1)、DGM、Verhulst模型的分类比较:
* _# I- B/ t* O% f- v$ N0 [
6 x+ M, |/ K! I. Q8 m
9 w7 Z) ?7 \6 q. f; N
' k5 [! r" H3 y1 g& T
2.求解步骤思维导图:
4 }9 N/ _ j! V1 c
2020-3-15 15:54 上传
下载附件
(178.35 KB)
. f2 T( u( d8 O( J' x! G; D
% ^* p- @, J3 d6 S# {+ X! ~$ k
实例
! W9 Q6 D, B6 f
1.使用GM(1,1)的预测检验“北方某城市1986年-1992年道路噪声交通 平均声级数据:”
2 a7 J& H& ~5 W1 @% P7 \
见下图:
+ a2 Y* k1 U, _, p. L
+ O, s5 y9 r9 t! c7 E
2020-3-15 15:55 上传
下载附件
(42.81 KB)
$ w$ U: V' m7 ]9 A
2.使用GM(2,1)的MATLAB实例:
* ^# k. h$ X7 o% G$ C$ j8 r
2020-3-15 15:56 上传
下载附件
(122.96 KB)
' c Z5 E% b o0 W: I9 ~, i5 l
3.灰色预测模型GM(1,1)
0 y+ ]/ s7 B n i, E7 s
GM(1,1).m
. n8 I0 {. t0 q, g
+ g6 o3 H# H; \0 x0 @
%建立符号变量a(发展系数)和b(灰作用量)
2 t: t" }+ c# X+ ]
syms a b;
" l* D' s& ^( y( m; f5 G% {% m
c = [a b]';
1 E8 N$ [" K, g3 D9 U- L1 Q
/ k) b0 [) |1 g0 F/ b
%原始数列 A
# F' X2 B- v) O" V* h- d2 J* ^
A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];%填入已有的数据列!
3 X; w9 [# {% Q; J
n = length(A);
4 a1 F5 I' t9 i5 p
% J" s" E" l% q1 S, Q% j" u9 M- Z
%对原始数列 A 做累加得到数列 B
2 m7 ]" u# [ `- a" t5 F$ A6 g. P) a
B = cumsum(A);
( ?* e( U2 d) c' z4 ]
+ S7 A+ j, n# h- H0 r
%对数列 B 做紧邻均值生成
. j9 f! h8 C, w$ G
for i = 2:n
4 B1 |# ~+ v4 v' D
C(i) = (B(i) + B(i - 1))/2;
0 }8 \- f$ R/ E" V! E$ m
end
u4 @/ }. m; C0 q8 H. O# C+ D+ s( |. _
C(1) = [];
- k. X$ B4 x. |* {4 H3 v
5 P E6 |" Y7 ~* g
%构造数据矩阵
6 y6 G* t. a# i
B = [-C;ones(1,n-1)];
1 ~1 N U7 z3 U; W/ S/ b
Y = A; Y(1) = []; Y = Y';
! K- l8 A& V6 `) l R, \' |$ a' Y3 C
# ?+ {( z) H+ {- @4 S0 |
%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
H( Y7 X- H: [: [8 C4 G7 j+ z
c = inv(B*B')*B*Y;
1 ~0 ]( R6 f5 s. g
c = c';
9 V* g6 y; U- r9 W+ B
a = c(1); b = c(2);
) r6 F x7 @ P$ j6 y5 x
, G! O/ L+ |; o$ T
%预测后续数据
3 b* h t# r' V' X1 c0 a$ q$ g
F = []; F(1) = A(1);
: Z* e5 y5 L! S% w
for i = 2:(n+10) %这里10代表向后预测的数目,如果只预测一个的话为1
1 J- `/ o j( A! o3 A
F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
/ g% l5 g' F4 _7 e- d
end
) w' g i- f: Z$ j0 Q& C
" B1 o: A* c1 J. D* o" U4 H- B% {# E
%对数列 F 累减还原,得到预测出的数据
$ }7 C W) C2 ~, p8 I
G = []; G(1) = A(1);
% {1 ~1 t8 |1 C0 j" l. e. ?/ |* j
for i = 2:(n+10) %10同上
3 u" A! V! f* o. i: O
G(i) = F(i) - F(i-1); %得到预测出来的数据
; V1 Y/ V+ e' E, G. t
end
% P& k( g* b( k. Z. v/ Q) L6 @* F
9 l% T$ v. D2 B; R7 r, X) ]# v
disp('预测数据为:');
& Z, q7 n, W. R: j$ s3 a' q+ U: B
G
; m1 p) q8 m8 n/ ~2 S
, c5 `9 r; {4 g7 t2 H- m/ f
%模型检验
' P8 d) \7 l& F. m
6 O) P# k8 q! p, ]& b7 L
H = G(1:10); %这里的10是已有数据的个数
: A2 P$ M2 s2 W0 W
%计算残差序列
0 j- t4 _5 W" W2 c
epsilon = A - H;
# `6 y$ C/ @ _- ~% T8 I3 {
9 l: l* y9 D! u
%法一:相对残差Q检验
& t! B4 e2 l8 o1 I
%计算相对误差序列
' c6 R' |- p) O: ^
delta = abs(epsilon./A);
+ `5 j- e; a+ l1 ]8 g% S1 {, r
%计算相对误差Q
, M2 p4 V- `' U) z1 W
disp('相对残差Q检验:')
6 ?. D$ e8 u4 \4 z- d- k# s* F& c
Q = mean(delta)
$ }% u, J @ R3 N$ h
9 s. ~+ g$ U5 q& y1 S0 @1 J0 x
%法二:方差比C检验
2 r9 R+ R `8 L& ^
disp('方差比C检验:')
8 a8 I9 x9 q3 k; A2 b
C = std(epsilon, 1)/std(A, 1)
. e7 e0 |1 h5 ^, O1 q, M, ^* X5 T
# s8 E* I- u1 ]& l1 Y* R3 b
%法三:小误差概率P检验
( [ V) }! D* f; H
S1 = std(A, 1);
6 H: V7 W) h0 Q7 o. L
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
1 e. X9 \! v; w& e7 I e, w- P. {
disp('小误差概率P检验:')
2 T4 d5 w- m7 m! M) \8 y
P = length(tmp)/n
1 E% c. U# _# K: m, u: M' Y
( b ~5 |; I9 j- a$ W( Z/ H
%绘制曲线图
3 Y2 L6 J( O4 b, z U7 O
t1 = 1995:2004;%用自己的,如1 2 3 4 5...
0 l; K& B; y. E9 Z% `+ Y$ U5 N
t2 = 1995:2014;%用自己的,如1 2 3 4 5...
& X9 l* z8 S9 B8 d) Q8 l: T7 C& L
# G& z7 m2 W, O
plot(t1, A,'ro'); hold on;
' Z7 u/ |4 R: |7 O" `
plot(t2, G, 'g-');
4 B( W5 B0 C8 D, a
xlabel('年份'); ylabel('污水量/亿吨');
! G( g) a% k2 `4 j7 _: W1 o* P+ L5 N
legend('实际污水排放量','预测污水排放量');
2 K! _2 G p6 S3 q1 `- P6 `5 ?
title('长江污水排放量增长曲线'); %都用自己的
; ?$ C' }/ X: ~" K$ y# m
grid on;
+ K0 \# t3 c0 f- I4 m1 p
/ F' ?! m. n- n
. L1 |& r; Q! x A& ]& W+ K0 G9 y5 i
& g' E1 f3 F5 ^ S m( C
6 m0 p$ y7 T* ]* i1 n
+ F" ~8 A d4 @' e; m; `: h7 E$ s
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5