数学建模社区-数学中国

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

作者: 浅夏110    时间: 2020-5-31 14:34
标题: 时间序列模型 (五): 趋势外推预测方法
趋势外推法是根据事物的历史和现时资料,寻求事物发展规律,从而推测出事物 未来状况的一种比较常用的预测方法。利用趋势外推法进行预测,主要包括六个阶段:
4 P9 v: @9 g1 H+ L) q2 G1 F
4 D9 f4 z" N/ U8 B(a)选择应预测的参数; (b)收集必要的数据;   (c)利用数据拟合曲线;  
! w+ h, e+ k$ s
5 B: e0 G9 b% K(d)趋势外 推;(e)预测说明;(f)研究预测结果在进行决策中应用的可能性。
. g+ O$ T. x9 l. a' Z( [2 @( o  D9 G- F" A
趋势外推法常用的典型数学模型有:指数曲线、修正指数曲线、生长曲线、包络 曲线等。 . N0 ~! W+ P/ q' b
& C' e( {; J/ h& b6 ~$ Z- X

& S4 T) P1 |" p$ U8 c2 D 指数曲线法 , @  G1 n' E! A9 }, @8 l2 _
一般来说,技术的进步和生产的增长,在其未达饱和之前的新生时期是遵循指数 曲线增长规律的,因此可以用指数曲线对发展中的事物进行预测。 6 S$ i1 J( {& m; N( h+ t6 c" C4 L/ G
0 x0 ^; L, {! n: n& s

7 ]6 U( R% A+ U7 a, [- ]4 E$ y6 P! p( |& i$ g( M

" l/ l# D+ w$ y+ S! I$ U  W! T3 H) c: g% V8 L' G; `( ~

& f2 [( `3 C/ G, S, x7 G. a( n2 _' u/ A8 t; Q0 L
修正指数曲线法
6 _  K( R9 o) Y- h. j0 b利用指数曲线外推来进行预测时,存在着预测值随着时间的推移会无限增大的情 况。这是不符合客观规律的。因为任何事物的发展都是有一定限度的。例如某种畅销产 品,在其占有市场的初期是呈指数曲线增长的,但随着产品销售量的增加,产品总量接 近于社会饱和量时。这时的预测模型应改用修正指数曲线。 . [; z! M+ e3 c% r3 o
. Q- V5 \# {; c* a

& H! {5 I9 U* M$ E, t: M6 b
4 g2 P9 q- a8 P9 Z8 J& a' q三和法
" V0 K0 B. i- U
' |8 U( J" [0 |" F8 ]
8 v# A2 `7 j$ F  [/ S" x$ ?5 m  F1 p0 @) c9 d$ Y
3 ]. v$ H9 t, c" P& w2 w

' ^' W) D; ^4 ~0 D. p3 G% K5 m+ V! L. g& J6 ~1 `& z: F, e+ @
例 8  根据统计资料,某厂收音机连续 15 年的销售量如表 11。 试用修正指数曲线预测 1986 年的销售量。
6 z# S! a( g  B% v% K" p0 o& }+ G% L, A; I% i, [0 w- M* b8 X# y) T( ]

: i" {# ~% T% Y9 v2 ^( y. y$ W$ B0 y7 {9 S8 @( u+ d
  `! ]9 ?- a" v0 x& Z' h7 k
) t0 i! b+ B( U5 P% C9 w* t
# c9 b9 I. @6 y( A+ M
计算的 MATLAB 程序如下:8 Y3 @' b  q' |2 r% i
- g% {1 i( S, V$ v4 u
function chanliang % b4 o- w$ J: ?7 g9 B& L4 Z6 W
clc,clear 0 _/ c* R% S5 p# c
global a b k
4 F( G" j" P. a' B& Aload xsh.txt %原始数据存放在纯文本文件 xsh.txt 中
* B7 m5 m; q1 X0 O0 W- t5 Vyt=xsh; n=length(yt);m=n/3 9 k0 F/ O4 r( `- J# E; x% C/ m
cf=diff(yt);
% T! b9 s$ P' [# U" V0 X( L0 a$ _for i=1:n-2     2 o" W5 @# N5 ]4 i0 {1 j) h
    bzh(i)=cf(i+1)/cf(i);
1 c+ y) d6 k/ wend
0 t. j$ Q6 l: B( A' s; Frange=minmax(bzh) $ w+ x7 V0 q0 ^6 c& z" j
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) ) @; x" W7 N6 ^) e5 F8 k  X
b=((s3-s2)/(s2-s1))^(1/m) a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
9 ~7 V4 @* Y6 U# {3 Rk=(s1-a*b*(b^m-1)/(b-1))/m
- z, }3 p& l% [% d  _y=yuce(1:18) 4 b; x' h0 V9 X1 e
%************************************
1 N5 k$ z0 W6 L%定义预测函数 / x; Y- O. F9 ^1 f; e5 A
%************************************ 7 g7 O: }$ O4 {/ }% x
function $ G& K' u4 o+ l" U
y=yuce(t)
) \6 P) j7 Q; ~- p% |& x& Aglobal a b k
7 A  f: Z' |! A  w& N* [$ |8 ty=k+a*b.^t;  9 Y% Z9 l1 e, y! Z9 \
- m0 J% A8 C3 E6 a8 u

7 }: N+ v3 c. Q6 t$ UCompertz 曲线

# V, l- p) S# }" @

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

计算的 MATLAB 程序如下:

function chanliang2 4 g1 G" P' G' K, [0 b& W
clc,clear
& Y6 T6 q# K9 c- tglobal a b k
4 _$ D' o$ v! b) sload xsh.txt %原始数据存放在纯文本文件 xsh.txt 中
, [3 |2 L/ q" ]& H* h( _yt=log(xsh); n=length(yt);m=n/3;
. S3 U4 [* R6 r+ c: Js1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) : D5 K  U' a; g" \# ^8 y  F
b=((s3-s2)/(s2-s1))^(1/m)
' C5 k! L3 ~" T1 ^5 ba=(s2-s1)*(b-1)/(b*(b^m-1)^2)
- x: X0 b: K8 J/ K6 T# {# Fk=(s1-a*b*(b^m-1)/(b-1))/m a=exp(a)
2 O- F: ]7 ^" F8 ?, b2 ok=exp(k) : G. C+ @* R1 f2 [, V( x
y=yuce(1:18) - D: v8 u; V/ i' w" R! w4 R% w
%************************************ %定义预测函数 %************************************ function y=yuce(t); " V* o' J$ N1 W& p/ y) T: V! c
global a b k
; u* d) s$ I' r$ h3 R5 Yy=k*a.^(b.^t);
/ ?5 T0 M: d" {( S% N6 K% d) D1 B) q- q$ u* w! C
Logistic 曲线(生长曲线)
" \( }5 Z- A) y* C生物的生长过程经历发生、发展到成熟三个阶段,在三个阶段生物的生长速度是不 一样的,例如南瓜的重量增长速度,在第一阶段增长的较慢,在发展时期则突然加快, 而到了成熟期又趋减慢,形成一条 S 形曲线,这就是有名的 Logistic 曲线(生长曲线),很多事物,如技术和产品发展进程都有类似的发展过程,因此 Logistic 曲线在预测中有 相当广泛的应用。
( _8 @' @6 b5 k
4 E2 W, X' w9 t% e1 g/ g$ g
8 z/ w5 s  L. {; d; E0 q
7 F; ]5 {# E$ a2 \. ?% Y) s: t, |, P+ g( Y" y

5 e: o5 c# ^2 j; A) M; e4 c7 p- G6 y& `" b
. y. e! p* }8 d6 j4 [, t
例 10(续例 8)  根据表 10 的数据,试确定收音机销售量的 Logistic 曲线方程, 求出各年收音机销售量的趋势值,并预测 1986 年的销售量。 4 C; E/ n  e6 R  |, ]* ]& x
7 u% C8 c7 [! S9 P3 k3 k

2 }4 b% h6 u  Q1 U# l9 l' a
' _5 R; x. d( X( K, P) k# ~( [/ {6 S- Z/ k5 D

2 Q1 k2 u1 A8 B8 v6 P2 q! j计算的 MATLAB 程序如下: 3 |! M! u- U# }

; t9 A( G! @, l6 sfunction chanliang3 $ L5 P$ ]6 e& {3 q2 F# i: y
clc,clear 9 M  U; U2 d2 _+ }1 p
global a b k
6 i; t; z% r: j' `1 u1 N( |* Zload xsh.txt %原始数据存放在纯文本文件 xsh.txt 中 1 @) C' r, I4 q9 C( z9 A
yt=1./xsh; n=length(yt);m=n/3;
  d2 P0 U9 ^. [+ p0 C: ts1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end))
- E! L5 O; s. Q' Wb=((s3-s2)/(s2-s1))^(1/m) ) z: v; f9 j1 E( P" x- [5 x
a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
. [4 {5 ^% D' j/ i1 J# p& H/ f. [0 uk=(s1-a*b*(b^m-1)/(b-1))/m + N7 h1 d" {/ n1 Q7 f; v
y=yuce(1:18)
9 p0 ~9 T7 |' e& u8 ?%************************************ %定义预测函数 %************************************ function y=yuce(t);
2 i% g& x+ w& Uglobal a b k 2 |* `0 k. L7 @& q7 _4 a
y=1./(k+a*b.^t);
1 \& ~2 s3 G4 M; z& S
8 P/ [( X( j+ z3 _/ m. k5 J+ l$ s% u3 W7 [5 u' ^
- T+ H) I. q) Q, x* ~) l& Y
趋势线的选择

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

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


' H+ P& f8 v/ j, \# J! p9 F6 B2 m2 E6 z) H7 U: Y5 p

/ Y* x: u% }# Z: {6 K————————————————
; s3 Z" Y  Z! \( h& l: v版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
- ^: H1 l1 x, ?! D2 @原文链接:https://blog.csdn.net/qq_29831163/article/details/89448270
& h9 S8 F$ M1 n) k1 L5 k) {. L8 h0 _1 g* N$ i
, B$ E1 o) y" M8 T% h





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