数学建模社区-数学中国

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

作者: 浅夏110    时间: 2020-5-31 14:34
标题: 时间序列模型 (五): 趋势外推预测方法
趋势外推法是根据事物的历史和现时资料,寻求事物发展规律,从而推测出事物 未来状况的一种比较常用的预测方法。利用趋势外推法进行预测,主要包括六个阶段:1 b2 h4 R' p8 w5 R( [: L
- F2 w& @$ l4 M6 \6 r+ y
(a)选择应预测的参数; (b)收集必要的数据;   (c)利用数据拟合曲线;  
: H% G# u1 B* n# I0 j- D) y4 d) o/ ?5 q) x, a1 ]( v1 N
(d)趋势外 推;(e)预测说明;(f)研究预测结果在进行决策中应用的可能性。& b- R% f, U+ v2 c7 g

& U4 W& N' b$ M& f7 b; C  S$ G( t% N趋势外推法常用的典型数学模型有:指数曲线、修正指数曲线、生长曲线、包络 曲线等。 ' f9 f2 U% g  T' `0 s6 n: X
. N  W$ w% q  T

' a/ X) W0 G" Y' z$ O 指数曲线法
9 b9 a4 g* i. s$ O" c# v) Y一般来说,技术的进步和生产的增长,在其未达饱和之前的新生时期是遵循指数 曲线增长规律的,因此可以用指数曲线对发展中的事物进行预测。
2 [" p- S3 V" j6 r- H2 m- k0 w. r
6 l+ K8 R% D# F5 z9 Z8 u# ?* I6 J$ k( d% o

  i* ^9 M% Y1 @; U" z0 G/ a$ j, x  l7 D
  O0 K8 T4 n; o
  Z6 @+ }/ ~! B6 l  p) |; K
1 L8 o: j* b- o3 n) M0 A3 S& y! P' t% F8 x
修正指数曲线法
$ D5 P% X" b% u- v9 _4 ?利用指数曲线外推来进行预测时,存在着预测值随着时间的推移会无限增大的情 况。这是不符合客观规律的。因为任何事物的发展都是有一定限度的。例如某种畅销产 品,在其占有市场的初期是呈指数曲线增长的,但随着产品销售量的增加,产品总量接 近于社会饱和量时。这时的预测模型应改用修正指数曲线。
; b$ b0 r! v$ M- r- C5 h/ f1 S+ b0 G( x  N5 v) i
; g* B( c0 v0 O9 E
; k5 }6 g/ F5 W5 Y' d! d; E; j
三和法. Z/ `2 ]% `1 t, p& C
. B, s- V' b1 M  W, W* v

* ], R! H; z) ?; K4 q* Z: H8 V
, P6 g# G! f( Z, I- L" V# o

9 h0 J+ M- W2 g$ K
# F) ^5 t2 S! G3 U8 b; G例 8  根据统计资料,某厂收音机连续 15 年的销售量如表 11。 试用修正指数曲线预测 1986 年的销售量。 " S3 q. h+ I" G3 L! N! |
1 O/ Y( E: P4 ^+ M* Z+ L+ U( D0 m
! A0 q6 Z- ?$ ~
4 B& S/ K: W7 i7 L

) `$ i2 O( j' c/ u% k) P: O- E, X5 q# g3 X2 _
0 j) k7 v$ S7 ^1 ~( Z* C' ?: P
计算的 MATLAB 程序如下:
2 O: c* n8 \) U/ X8 {4 X8 W  q0 K: K4 I5 V
function chanliang ; j' U  [7 P' `9 s$ ?: N
clc,clear
7 [$ ?3 b% k& Y! Rglobal a b k
, A( `8 P5 T7 Y2 {* y1 Aload xsh.txt %原始数据存放在纯文本文件 xsh.txt 中
; p, a2 I3 L, T; g4 myt=xsh; n=length(yt);m=n/3 2 `# a) i, e; e+ ?% w# g5 c% ]
cf=diff(yt);
2 Z$ F, \6 f0 `) m' v( wfor i=1:n-2     9 K3 P' u) K* o: E% @8 ?
    bzh(i)=cf(i+1)/cf(i);
+ e0 \8 i: J7 Z# _/ i; N/ Uend 2 u. }* c* q; u+ k
range=minmax(bzh) % y* i& N! _% V, D
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) # {- B* W1 d9 O8 F9 f( T
b=((s3-s2)/(s2-s1))^(1/m) a=(s2-s1)*(b-1)/(b*(b^m-1)^2) ; h9 N8 |- r0 _2 I
k=(s1-a*b*(b^m-1)/(b-1))/m : E- x% f* k8 p+ v& }. {
y=yuce(1:18)
3 {1 ]. b; e/ r4 h%************************************
' a, d/ e0 A+ W# l; k%定义预测函数 - ~! o6 I  w" y  {2 B
%************************************ 0 A: s% I# h/ s$ h! z4 ]0 Y, d
function
: W$ D- a7 j& y  a  }y=yuce(t) 1 `0 C# c6 @+ N6 \8 [8 K" W
global a b k
; J. ]$ U; f/ @4 ky=k+a*b.^t;  
3 o7 }7 E& `8 _, J1 p- m% i) U  v; I+ J; i
+ n- f( N! f3 Q9 n
Compertz 曲线


4 f4 I% j( R+ m# j6 ]1 E8 }0 h

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

计算的 MATLAB 程序如下:

function chanliang2 + j5 t& d( U0 X$ n8 T. B' [( d
clc,clear $ [+ e: G% n! d5 N; @' C
global a b k 6 U) T+ p+ L+ T8 e
load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中
4 }* U' D- X4 \% ]yt=log(xsh); n=length(yt);m=n/3;   T9 }4 L7 P& y2 ]. E* ~
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end))
! g: J* }7 ?+ [3 [) ?2 s  Sb=((s3-s2)/(s2-s1))^(1/m) / @8 V! o4 a' h! Q3 c  k4 Q
a=(s2-s1)*(b-1)/(b*(b^m-1)^2) & q5 o8 p/ E3 G  c& ^8 s
k=(s1-a*b*(b^m-1)/(b-1))/m a=exp(a) : @" C2 }4 {! A( ]/ V
k=exp(k) ) _* S* V6 ~7 x* q# r! B
y=yuce(1:18) 6 G. B8 `/ ^- [3 H  T. a
%************************************ %定义预测函数 %************************************ function y=yuce(t);
/ {0 `4 v& N, j9 q$ S, X6 e! ]2 u6 Cglobal a b k : j6 D( U* o$ S
y=k*a.^(b.^t);
4 C8 c* z: D' c6 R1 B6 ~
) c7 {5 ?& i9 m6 r Logistic 曲线(生长曲线)
) q- G  @4 H! ^* C( ~: [生物的生长过程经历发生、发展到成熟三个阶段,在三个阶段生物的生长速度是不 一样的,例如南瓜的重量增长速度,在第一阶段增长的较慢,在发展时期则突然加快, 而到了成熟期又趋减慢,形成一条 S 形曲线,这就是有名的 Logistic 曲线(生长曲线),很多事物,如技术和产品发展进程都有类似的发展过程,因此 Logistic 曲线在预测中有 相当广泛的应用。 $ w1 ?/ S2 X7 j8 q2 n

  _* P4 K0 v4 K, N+ T6 z$ |: v, \7 W: \. T3 D0 z; w
" Z& z8 j3 o+ c$ R& S

7 _5 I5 ~3 b% `7 _3 z( w# Y# S9 o: B0 c# Q+ s  n( e

1 y5 F0 b% S$ L8 _( O, g, [
9 }+ ]/ L, `/ z例 10(续例 8)  根据表 10 的数据,试确定收音机销售量的 Logistic 曲线方程, 求出各年收音机销售量的趋势值,并预测 1986 年的销售量。 7 A$ {* M& Z( u* J9 O- q

% ~! ]/ U  d: I
' k9 E# h; Z- ^. C
) x! i$ t" b& `/ q3 k% l
' }0 ~) i* g& c& e; c$ J' n6 [- F1 s. j* E  r5 l" ^) `7 U% C
计算的 MATLAB 程序如下: & H1 t8 e1 _+ Y  R
$ I- o) ~* e  ]5 ^1 g
function chanliang3
  i$ y" Z) c: v7 a  kclc,clear
, K; ^5 C8 O, eglobal a b k " E. u7 k: x8 p5 O! h5 z
load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中 ( ~4 ^$ y- y+ T' t
yt=1./xsh; n=length(yt);m=n/3; 6 }! F; [) I- N9 E" i0 j
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) 7 Z+ z' _, v3 J
b=((s3-s2)/(s2-s1))^(1/m)
+ t+ q0 \- t' Sa=(s2-s1)*(b-1)/(b*(b^m-1)^2)
& P7 M6 _. M7 r8 u  S5 V/ uk=(s1-a*b*(b^m-1)/(b-1))/m
; V, h5 D5 Y- ?  E8 X1 ^% I9 Ky=yuce(1:18)
2 s3 L! c' i, \9 ~, m+ H/ A5 e%************************************ %定义预测函数 %************************************ function y=yuce(t);
9 |% n1 W4 j' M% p0 L, z! Zglobal a b k
& Y" u& b/ Y& N. iy=1./(k+a*b.^t);
0 I; l8 ]4 J- {. Z9 ]/ I6 Q; g% X6 P: Z
! T9 a. A, y" L# G. A, c7 @
/ z7 W- c# c6 {6 h5 A( x
趋势线的选择

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

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


7 W1 @: J  _) _2 I: c7 [9 X" q% P. K# u: [. a8 p! r1 q2 {
. W. V. s( H9 i2 A: Q7 S1 e
————————————————) l. U1 S! _* q$ Q: |" ~: M
版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
7 Z# o  u) a/ [8 S5 E7 R" D7 q$ p原文链接:https://blog.csdn.net/qq_29831163/article/details/89448270% b& D" A- c9 K6 f! \

% z  @1 S: `* u6 r& O7 t2 e" X' J
- ]8 P% A; X  Q8 k  [




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