数学建模社区-数学中国
标题:
数学建模方法(一)预测与预报
[打印本页]
作者:
杨利霞
时间:
2020-3-15 15:57
标题:
数学建模方法(一)预测与预报
数学建模方法(一)预测与预报
5 y H8 B% Q4 I+ }6 g( `- o
(一)预测与预报
5 y. _+ H, ^- J+ _
1 d# Y: }' |2 S' w; [
灰色预测模型(必须掌握)
: H( ?1 k! b8 C, X4 f. p
& ^; _! H* V8 [2 D- k5 r' e. p
满足两个条件可用:
' |7 ^ m# H8 \0 w
①数据样本点个数少,6-15个
0 a( q) V3 `7 f( @
②数据呈现指数或者曲线的形式
& ~: y/ z4 b* h0 f) {# D: Y
' p7 Q+ W/ u6 H
概述
5 j1 O8 k1 ?3 T! N; `3 u, T- f* Y. `
关于所谓的“颜色”预测或者检测等,大致分为三色:黑、白、灰,在此以预测为例阐述。
6 |$ {1 l, ~" B) L$ |
其中,白色预测是指系统的内部特征完全已知,系统信息完全充分;黑色预测指系统的内部特征一无所知,只能通过观测其与外界的联系来进行研究;灰色预测则是介于黑、白两者之间的一种预测,一部分已知,一部分未知,系统因素间有不确定的关系。细致度比较:白>黑>灰。
6 Y! S z" C+ b8 h
% g: i8 h2 B& s H1 y: \
原理
8 ]" ?$ Z& i" {* m3 `/ E
灰色预测是通过计算各因素之间的关联度,鉴别系统各因素之间发展趋势的相异程度。其核心体系是灰色模型(Grey Model,GM),即对原始数据做累加生成(或者累减、均值等方法)生成近似的指数规律在进行建模的方法。
) n4 G/ Y2 f8 y6 X% b$ q5 t
# Y) E. Q" j+ q; B$ x7 p
分类及求解步骤
; X1 _) [$ }7 C' {/ {2 p" O
1、GM(1,1)与GM(2,1)、DGM、Verhulst模型的分类比较:
4 h% s) [$ l+ J, K, @
! W& G% j5 r0 T+ ?2 j' R
# S, P+ m# n# t, e* w% z9 A' j6 ?. }
8 I/ k" a, A( @. T6 R( y
2.求解步骤思维导图:
* _! o; O2 J' R D3 q& E
2020-3-15 15:54 上传
下载附件
(178.35 KB)
8 v2 L- m/ [( ~; N% V% g- ^! o. |
% i% h" }4 s4 P2 \! X
实例
" [. R% U- F7 ~3 ^& ~# _" |
1.使用GM(1,1)的预测检验“北方某城市1986年-1992年道路噪声交通 平均声级数据:”
' J j; I. _; [
见下图:
! M; E( U3 | J+ T$ }* p! ^5 t4 ~! }
$ t6 O1 H/ X$ S$ B- R# l$ R3 B
2020-3-15 15:55 上传
下载附件
(42.81 KB)
, } n9 o9 f! M$ d. ^7 z
2.使用GM(2,1)的MATLAB实例:
, ]+ u* ?4 J& Q. e
2020-3-15 15:56 上传
下载附件
(122.96 KB)
; ?- T7 W! |, I J: z: g( D& ?
3.灰色预测模型GM(1,1)
/ `" W" {; c& ?
GM(1,1).m
! ^( y. x: P' N
* S( w# N {' ~( y6 i. p4 E
%建立符号变量a(发展系数)和b(灰作用量)
- K. x$ f: X# C% h N7 u( K
syms a b;
+ s8 a5 ?- b: O; S/ Q$ ?, D
c = [a b]';
$ }6 Z6 V9 j, v+ V
+ U0 ?/ m; l9 j! I
%原始数列 A
# X9 d# w# N0 Y6 a" G
A = [174, 179, 183, 189, 207, 234, 220.5, 256, 270, 285];%填入已有的数据列!
* Q* T5 V8 v/ K% g
n = length(A);
% a9 O1 D) j. f+ J* z9 O
. y. A" N( y6 V6 H
%对原始数列 A 做累加得到数列 B
7 P% J9 u$ ~+ Y* G! b; }
B = cumsum(A);
: |- o4 Q) G7 g: \. ]. b8 m
7 `5 j3 P9 |8 I+ O1 g/ a7 }, A
%对数列 B 做紧邻均值生成
D( L* a+ d6 `2 h% y. J
for i = 2:n
3 a7 @. a/ u. `
C(i) = (B(i) + B(i - 1))/2;
9 ~' ~5 M6 R8 z! C" ?9 B
end
4 ?1 x1 v. j; x1 `
C(1) = [];
+ V4 z) I: h u% F0 {: a9 I
8 L! Z( ~9 ~/ v }8 M, [7 A# s
%构造数据矩阵
[ H. J1 i- S$ ]: i: S
B = [-C;ones(1,n-1)];
! x% _ o* x' x$ Q. k
Y = A; Y(1) = []; Y = Y';
2 ]) y1 |% S( @. K7 T. a9 P
; b! M% G. u$ H8 D/ G- D# p; i4 k
%使用最小二乘法计算参数 a(发展系数)和b(灰作用量)
4 L' p5 T4 K( t- V% R
c = inv(B*B')*B*Y;
( i8 r& o2 @. e& {8 q& R1 S3 S: K
c = c';
0 G8 }" L! J. k/ P8 ~
a = c(1); b = c(2);
8 {1 k4 I/ _( `) g
2 N; f2 @& Q0 f! x
%预测后续数据
9 S% [ ^% ?' j( ^, `' V
F = []; F(1) = A(1);
( ~3 Y' J$ y& n4 ^7 }% H2 q
for i = 2:(n+10) %这里10代表向后预测的数目,如果只预测一个的话为1
, }$ Y7 a3 v" _+ m* o1 {( X
F(i) = (A(1)-b/a)/exp(a*(i-1))+ b/a;
5 i/ L+ T$ |, l6 V/ Z
end
, d- @* L0 n/ s1 W# Z2 N' ]* a
. B g& p6 Z. i
%对数列 F 累减还原,得到预测出的数据
9 S2 b' `$ F6 K \2 G
G = []; G(1) = A(1);
, U) ]4 h- _, Z/ \1 I- {7 \
for i = 2:(n+10) %10同上
. l5 X9 h9 ^- A$ M4 j" N! _
G(i) = F(i) - F(i-1); %得到预测出来的数据
1 C- F# e* ~5 d2 m/ d
end
' z( t$ E( t7 f+ J3 R: p3 ]9 u, ~
/ p8 w7 s( O- n/ S; V; e" l; a
disp('预测数据为:');
4 h$ }1 a5 T# f! C% v# T& Q
G
" Y+ |( ~4 H( Q) |
+ T8 V* W& R8 ?7 ? J
%模型检验
, \0 @, [! D5 k
& |& J+ V; Z- m* e6 s5 Z& g% r
H = G(1:10); %这里的10是已有数据的个数
8 _3 Y% W6 J' x1 v- \3 g
%计算残差序列
5 y7 Q0 b2 B. L+ m" m
epsilon = A - H;
# D- ]7 d- H& g# i B" \
: U9 K& Q7 }) R6 [
%法一:相对残差Q检验
" Z' C* T& I5 H5 k; Y% S
%计算相对误差序列
$ ]1 E1 h$ }5 k: G! ]9 M: A: j
delta = abs(epsilon./A);
{2 n$ c/ x# }7 z
%计算相对误差Q
8 N1 `2 H4 ~& _) f" D
disp('相对残差Q检验:')
# {" f1 I# y% u8 D- I: H
Q = mean(delta)
6 m* O: K* [6 N& u; N
) M7 R6 c. [$ r X
%法二:方差比C检验
% O& W! `% y6 n
disp('方差比C检验:')
) _9 |& Z% u. S: c
C = std(epsilon, 1)/std(A, 1)
1 Z& P8 v& R$ j4 E8 r
1 i- ]- B/ T4 y5 X# H
%法三:小误差概率P检验
, b5 W. S. P; N3 X7 o- x
S1 = std(A, 1);
- W, a) z* z5 e9 [
tmp = find(abs(epsilon - mean(epsilon))< 0.6745 * S1);
5 E2 c. U0 D5 {2 m2 K3 J$ V3 V
disp('小误差概率P检验:')
7 t* [3 H0 Q# Q; \& m+ C- p
P = length(tmp)/n
: @# v+ s2 Z9 e% z/ D
2 [# z2 V. P6 J. u' Y& `4 i! e
%绘制曲线图
$ I2 O/ Y9 p8 `( S
t1 = 1995:2004;%用自己的,如1 2 3 4 5...
; G4 s* _- e5 A3 X0 S4 w
t2 = 1995:2014;%用自己的,如1 2 3 4 5...
6 N# y( Z- P; }- D8 P" L& q4 R
: ~3 G/ e4 m8 |( y
plot(t1, A,'ro'); hold on;
- ?0 G }! |- P. [2 l( w+ \/ d
plot(t2, G, 'g-');
3 N& k$ G* [) ]/ Q- [
xlabel('年份'); ylabel('污水量/亿吨');
/ F8 P6 \; I2 M
legend('实际污水排放量','预测污水排放量');
( [* a* F+ H R
title('长江污水排放量增长曲线'); %都用自己的
0 n8 Z; c4 T4 x$ _% H
grid on;
5 x8 p5 [" w, \6 J2 @: Y9 x
, u0 [0 V7 W5 U4 ^
! J0 U4 O5 C8 ?9 T x% \! @, C
9 U7 o' G% i, K2 L0 t8 {
# K9 q" ]0 k* }# b9 B
+ d" v- b+ c& Y
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5