数学建模社区-数学中国

标题: 时间序列模型 (五): 趋势外推预测方法 [打印本页]

作者: 浅夏110    时间: 2020-5-31 14:34
标题: 时间序列模型 (五): 趋势外推预测方法
趋势外推法是根据事物的历史和现时资料,寻求事物发展规律,从而推测出事物 未来状况的一种比较常用的预测方法。利用趋势外推法进行预测,主要包括六个阶段:! a* J4 R( E8 g/ T. Z* K0 U0 H

; d9 Q) b1 ]) g(a)选择应预测的参数; (b)收集必要的数据;   (c)利用数据拟合曲线;  : z# P1 G& L" ]

: L1 i2 e6 s: T/ A3 ^(d)趋势外 推;(e)预测说明;(f)研究预测结果在进行决策中应用的可能性。
! z1 N( u! W( X) |
. u4 g$ |' s. w3 @& _, o趋势外推法常用的典型数学模型有:指数曲线、修正指数曲线、生长曲线、包络 曲线等。
6 P& T; M9 G# N% T6 H5 H0 V/ f
" J7 Y7 R9 p4 o$ e
7 h% F( n3 O" p- {" f; [) f 指数曲线法
( ~3 r& i* A; m; s8 v一般来说,技术的进步和生产的增长,在其未达饱和之前的新生时期是遵循指数 曲线增长规律的,因此可以用指数曲线对发展中的事物进行预测。 / @% d6 I. W2 Q) z- ^: Z5 Y3 m

4 a1 I. @" }/ ]$ G+ k1 j) ^" X3 k# Y1 L& J- ^$ Y7 T1 ^8 o& G6 z

" }- H0 s' [1 s6 {0 p1 I  \
( v3 O, y( q0 d# `6 J4 \9 P' `# V9 J8 X; l$ Z

4 G* F3 ]. i  ~9 l. A
3 f2 i8 l3 D% l1 P' v/ | 修正指数曲线法 1 u% W% w# k4 n  y# W
利用指数曲线外推来进行预测时,存在着预测值随着时间的推移会无限增大的情 况。这是不符合客观规律的。因为任何事物的发展都是有一定限度的。例如某种畅销产 品,在其占有市场的初期是呈指数曲线增长的,但随着产品销售量的增加,产品总量接 近于社会饱和量时。这时的预测模型应改用修正指数曲线。   r3 `: G+ v& H% ^6 R

. M3 ^6 M8 V6 ^9 x+ P+ R) E2 t5 ~: M' G
: ?/ i  s/ f9 ]7 V! K4 n) \
三和法# k- G5 n& K1 I
" S+ {" H* i: g

) S1 m) z- ~3 O1 j% i" l5 w* R2 {; _" a5 C. O

/ h) l/ e6 G% k
  V/ z/ w( C- _5 f9 F: W( Z( O, B/ J: S. Q+ g- M" r) O: a
例 8  根据统计资料,某厂收音机连续 15 年的销售量如表 11。 试用修正指数曲线预测 1986 年的销售量。 8 H5 R& T! _0 H7 P+ c/ j; i
& f  Y7 ~, G0 p, l# W$ E* _

8 v; i9 C: o7 I% E8 \
$ Q* {6 r; }( {4 h3 V
( j; M0 _5 Y3 L6 }9 j
! M9 @0 n# }7 N% u# t2 ?3 r& i* z# b$ E( R8 ?9 m
计算的 MATLAB 程序如下:
  h) }( b; p* D9 B& h+ `
) V% c9 K) @/ U& w, Dfunction chanliang
2 P7 w; J8 I/ C4 \clc,clear
+ N. p( k# L: c' E. `& s$ {global a b k " k, R8 F# Y' A+ d  X( o
load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中 ! H  y# T" X# m: @5 Y
yt=xsh; n=length(yt);m=n/3
4 R/ f8 _2 d7 D# g; V) l1 b2 Kcf=diff(yt);
( R' x) d) l( ~; ?1 Q3 M! W7 afor i=1:n-2     , m, l6 c5 O* r& W' T' a
    bzh(i)=cf(i+1)/cf(i);
3 e+ \+ t& |, t, u- p) x: Q5 pend
2 D- p5 G0 X2 l. Y) W& T% urange=minmax(bzh)
- }7 ]& v$ Z9 M  zs1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) 2 R4 Y% n2 {! \
b=((s3-s2)/(s2-s1))^(1/m) a=(s2-s1)*(b-1)/(b*(b^m-1)^2) ; Q9 r5 u3 v( G' z1 C5 \) |
k=(s1-a*b*(b^m-1)/(b-1))/m . L% p, s3 m9 Y* f4 X$ W5 P
y=yuce(1:18) ) l- v8 e4 V& M, R0 f
%************************************
$ P9 Q7 q# {* o) x%定义预测函数 ) D& L! x! {+ y5 v" r% K
%************************************
6 }; }' {( T' A9 h0 d% F% Z( efunction
2 Z% ~% h& b) J( d* ^1 k% R, p/ \$ zy=yuce(t)
( t9 f- _! x5 ]4 s* vglobal a b k   W, n% z% j1 }+ E2 T
y=k+a*b.^t;  # W& f2 I  N* P# z" c
5 q) O8 H9 N" z8 x& M: \6 g

5 a# ]* i6 T* _" n2 eCompertz 曲线

. R% x/ s9 k" w5 w0 F$ {  _

例 9(续例 8)  根据表 11 的数据,试确定收音机销售量的 Gompertz 曲线方程, 求出各年收音机销售量的趋势值,并预测 1986 年的销售量。

计算的 MATLAB 程序如下:

function chanliang2
( O" K1 H0 c! \% Qclc,clear 1 y: c( M* t7 C5 U3 H2 h
global a b k
9 T. `0 f  Y& H( q: j5 O8 ^load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中 / }! F, o3 o. q6 K$ f: z
yt=log(xsh); n=length(yt);m=n/3; 6 e5 G8 Q( l: T7 G% V: t
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) 6 t3 W( Z& `+ r- d
b=((s3-s2)/(s2-s1))^(1/m) ' |, R9 e9 b1 T
a=(s2-s1)*(b-1)/(b*(b^m-1)^2) 6 R; Z, b& A; t
k=(s1-a*b*(b^m-1)/(b-1))/m a=exp(a)
* J9 j' N; m, X9 a9 w' p4 q. Uk=exp(k) 5 ^" _" E: x- ]) x. A( ^
y=yuce(1:18)
& ?% h6 T5 g. ~0 H! U! C%************************************ %定义预测函数 %************************************ function y=yuce(t); $ [; N3 s4 `# z* X: V
global a b k
* B& k% w4 z; T& p  _# i( Iy=k*a.^(b.^t); 0 X3 D  O* {) V# Q$ M/ L
' f/ c8 p$ g) Q/ o
Logistic 曲线(生长曲线)
$ q. o' k( n% ^) }7 X0 v生物的生长过程经历发生、发展到成熟三个阶段,在三个阶段生物的生长速度是不 一样的,例如南瓜的重量增长速度,在第一阶段增长的较慢,在发展时期则突然加快, 而到了成熟期又趋减慢,形成一条 S 形曲线,这就是有名的 Logistic 曲线(生长曲线),很多事物,如技术和产品发展进程都有类似的发展过程,因此 Logistic 曲线在预测中有 相当广泛的应用。 2 d; w: e+ h2 e* Q2 R/ Y

9 }8 \2 u' R1 F+ ?. x6 [6 i  f1 J/ ^3 ]

) Q6 m; w: V6 X) i5 B# H1 b$ k' B# Z: P
5 [+ z/ u9 Y: v1 f1 J* m7 t
1 N% F+ ]0 d1 a. }9 G! W
2 ]0 C, F3 l+ Q$ s1 p- w8 w
例 10(续例 8)  根据表 10 的数据,试确定收音机销售量的 Logistic 曲线方程, 求出各年收音机销售量的趋势值,并预测 1986 年的销售量。 9 s8 \  L/ d2 g* q7 A7 z" t: t, ?7 h
% p; d* d" w1 {; H7 X' E* v

2 Y' p% |# d5 Z7 p
. h1 L9 Z, D+ w. o. q" P. w" q2 l& A0 B3 N5 _' a

& t9 j7 `" ?5 o4 u! \计算的 MATLAB 程序如下: : v: s5 `3 g- z2 B' J

  r) `+ A3 o. Z. w8 N! ]4 \+ |function chanliang3 + Y& N' V# g0 E$ x3 [
clc,clear 8 \) M- w" O! c5 {  \
global a b k
$ f( A6 c" p% D& z0 A7 Vload xsh.txt %原始数据存放在纯文本文件 xsh.txt 中
9 g' Q6 {. X7 p7 L8 pyt=1./xsh; n=length(yt);m=n/3;
0 [& e) G: s/ is1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) + q0 ?! j) b$ L: [
b=((s3-s2)/(s2-s1))^(1/m)
7 l" Z5 x" W8 s. [/ Z2 P! oa=(s2-s1)*(b-1)/(b*(b^m-1)^2)
2 p% b2 }+ {: `" |, H- ]k=(s1-a*b*(b^m-1)/(b-1))/m 0 o2 W: L6 u9 d8 O  d
y=yuce(1:18) $ @8 Z: X3 O, y% h' s( v
%************************************ %定义预测函数 %************************************ function y=yuce(t); 0 }; G9 b0 v! q4 E3 L
global a b k
! v4 J$ f( M9 n6 e2 {* M" ny=1./(k+a*b.^t);
: `+ e$ J* u( _# c% J4 y8 U8 A3 U! [' k, k$ ~% p

- [9 P' i0 w% v* a0 _, H5 N/ C. f% \) E+ E  Y
趋势线的选择

趋势线的选择有以下几种方式

当有几种趋势线可供选择时,应选择S 小的趋势线。


7 U' C/ Y; \( b% d8 F' @' F# R* W) E! A, x* q3 X* A
5 a, v. j3 n9 j' K% |3 R2 h) C- a) F
————————————————" U7 Y+ {" [- F3 S1 _9 }
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。2 w3 {9 Z+ E$ W
原文链接:https://blog.csdn.net/qq_29831163/article/details/894482704 x4 d7 O+ B: D# F" K+ l
" b1 s4 Q: X& A4 E
- |; I; Q% K5 f* i





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5