数学建模社区-数学中国

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

作者: 浅夏110    时间: 2020-5-31 14:34
标题: 时间序列模型 (五): 趋势外推预测方法
趋势外推法是根据事物的历史和现时资料,寻求事物发展规律,从而推测出事物 未来状况的一种比较常用的预测方法。利用趋势外推法进行预测,主要包括六个阶段:
4 e; ]6 {+ U4 h
7 Q& Z! F$ \- V(a)选择应预测的参数; (b)收集必要的数据;   (c)利用数据拟合曲线;  
" @: {9 ^- `( z9 I- l6 O0 c9 |' G  J$ J7 b1 r
(d)趋势外 推;(e)预测说明;(f)研究预测结果在进行决策中应用的可能性。" V" T/ R( |' G$ h4 @- L
" ?6 {& z3 q0 y$ Y2 i$ Q
趋势外推法常用的典型数学模型有:指数曲线、修正指数曲线、生长曲线、包络 曲线等。
- D, i$ C% P; l3 j2 J+ f  ?1 r/ B7 S  e& ]9 ?' v
9 G' G* t! b. i
指数曲线法 ) d3 v- B7 y+ v
一般来说,技术的进步和生产的增长,在其未达饱和之前的新生时期是遵循指数 曲线增长规律的,因此可以用指数曲线对发展中的事物进行预测。 " y7 G" H+ `7 T! o# ^
# A% W; x0 p4 U  a" [& p- _

# ~8 g$ A9 F# T$ C: H4 H1 O
' u1 h% x0 _  g; L  v% L
3 R; a& M  z. ~0 Q/ q- W
- k( L- I9 L5 o8 V3 e% x: \
2 |; Y. c4 ?& s9 K( U- V7 b) F, c6 j7 C9 J6 M
修正指数曲线法 - {4 e: R+ q5 q4 ?* }
利用指数曲线外推来进行预测时,存在着预测值随着时间的推移会无限增大的情 况。这是不符合客观规律的。因为任何事物的发展都是有一定限度的。例如某种畅销产 品,在其占有市场的初期是呈指数曲线增长的,但随着产品销售量的增加,产品总量接 近于社会饱和量时。这时的预测模型应改用修正指数曲线。 : {  Q: [8 W# n/ r
! \# C) b/ [9 K9 [
  p6 _" ^5 [  i( n+ i

. n, S( S( a) z1 x, y三和法
$ u4 P9 P( n, Q" d
+ t  V9 [! l: h1 S" b+ m7 o5 Y0 D# i7 Q: c9 z9 P( ^+ \

$ r! H/ w8 @: h- g5 i+ `9 F
0 p5 w# ?8 j$ w- v# h9 y! ~' g; \5 W. a: y! I; A
( s% m6 Z7 b" ^3 m0 K3 \% D0 r6 A
例 8  根据统计资料,某厂收音机连续 15 年的销售量如表 11。 试用修正指数曲线预测 1986 年的销售量。 : T  U8 l7 Z  ?+ }% G

$ R7 O0 p# B8 E! R  |7 S! U: B: w3 t& X5 ?5 F2 z2 t8 Y) P

6 [2 i4 ?4 Q/ n9 q" m3 N$ \9 z5 f' {
/ Q9 \2 [$ Y8 A7 m9 s- \' a
+ J$ O6 t1 `/ i
计算的 MATLAB 程序如下:' _/ u9 P8 a' ?* H# U' A) K% r
1 z2 j- e3 U" T( c6 f6 r+ K
function chanliang
$ d! N- {& Z' _0 K/ W, Pclc,clear
1 P+ T; u, V  H# s6 Wglobal a b k 5 t8 W9 T3 w8 M9 x
load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中 $ I* E, n9 S' J( h" g
yt=xsh; n=length(yt);m=n/3
/ D  a/ q6 s% l8 s$ t; Icf=diff(yt); - c; t% B& q& a2 Q1 Q) i& P) q
for i=1:n-2     
# C' C3 ~5 C1 E! h    bzh(i)=cf(i+1)/cf(i); ( }. u: u# Z0 `$ q( Y
end
/ @5 }, m: e; `) O$ Jrange=minmax(bzh) 9 [6 S- M0 A2 }0 y. G0 l
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) ' _# @8 a. A6 d3 ^* s) z0 T/ O
b=((s3-s2)/(s2-s1))^(1/m) a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
8 z6 j; d( V# Y. sk=(s1-a*b*(b^m-1)/(b-1))/m : y0 v/ Q+ C1 @* @5 ]
y=yuce(1:18)
% f4 Y3 S! D/ X$ J4 Q7 _: r6 Q%************************************
+ N& D3 [9 I2 u1 W& C%定义预测函数   x' H. u2 K; G9 X8 p
%************************************
8 F# [* \8 w8 k1 K' \5 Qfunction % f9 o0 P  J3 h0 [4 X
y=yuce(t)
: O3 W- ]7 V+ C$ H! T; E6 ?global a b k . L; _$ G$ G  y5 t: p/ \3 \4 P7 q" K
y=k+a*b.^t;  # O8 x0 h& J, m, K) N
" G0 O" Z' M- y/ M* g! q0 h1 ]

3 y4 F8 S' `: v( q* p  _6 ECompertz 曲线

  o8 B4 L5 \8 F; N

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

计算的 MATLAB 程序如下:

function chanliang2 : e* S: _8 n; N9 {" V) v0 F
clc,clear , C) E* L7 u. }0 ^0 N
global a b k   r3 k7 [! `. e6 Q; j. c
load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中 8 x) ~" z" I! j$ F
yt=log(xsh); n=length(yt);m=n/3;
$ h' o2 C* [, k3 R" cs1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) % J6 K; D2 t3 R1 o
b=((s3-s2)/(s2-s1))^(1/m) ; D* r$ r% ~7 e
a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
& @' t8 I/ {3 c  F' P) _/ Ck=(s1-a*b*(b^m-1)/(b-1))/m a=exp(a) . @2 r- o% C, a$ o0 D7 t8 G
k=exp(k)   q6 v) ^- z3 X" d, e4 [$ h
y=yuce(1:18)
$ F. c) S0 ~! b6 l0 P' p* I%************************************ %定义预测函数 %************************************ function y=yuce(t); - `( _2 A" p) y( ~
global a b k 4 Y2 S: y' T2 I+ i, k( z9 N
y=k*a.^(b.^t);
6 F. [9 Y( Q$ b' W
' p7 H9 D3 J! s$ {6 l Logistic 曲线(生长曲线) 8 z8 G) ]6 C- i5 X9 g# H6 L, P1 b2 {) M
生物的生长过程经历发生、发展到成熟三个阶段,在三个阶段生物的生长速度是不 一样的,例如南瓜的重量增长速度,在第一阶段增长的较慢,在发展时期则突然加快, 而到了成熟期又趋减慢,形成一条 S 形曲线,这就是有名的 Logistic 曲线(生长曲线),很多事物,如技术和产品发展进程都有类似的发展过程,因此 Logistic 曲线在预测中有 相当广泛的应用。
5 l% b3 ?) u+ E% J& P. p0 D
; Z% }% {# Z8 }, M% n( O1 @' Z
; D/ ]6 \8 {% h- n* l1 n+ E7 p5 C% ^/ a4 `6 b& M8 \
7 Y2 |: z! r8 B. s
: b; x- ]6 f: w  k% P' X5 \
2 v" n( c. S# Y9 D! T; }& e
* L7 s# l- H  p# J4 P) E! A4 h3 x
例 10(续例 8)  根据表 10 的数据,试确定收音机销售量的 Logistic 曲线方程, 求出各年收音机销售量的趋势值,并预测 1986 年的销售量。 5 B) T* k, C: H* }) A) j  d

( M% V& c1 [% Z& |9 A, C+ L) |8 j0 S* V' G( h' y/ L) ^! K

" a' M7 ^7 \5 G* K4 i& s- P0 }3 B% _* @/ L+ }' a2 ~/ E- P9 ^
% J) X2 G; p# C3 U9 x
计算的 MATLAB 程序如下:
/ n- D! c/ V# N- V6 {+ N1 \" P' U4 q4 s; h
function chanliang3 , B. Z+ x7 J7 r5 L9 a7 m
clc,clear
6 R) F# |) M9 ?8 R8 [+ zglobal a b k
8 j3 j6 `+ w! N& \' ^load xsh.txt %原始数据存放在纯文本文件 xsh.txt 中
8 D! D9 B8 ?! @9 ]+ l. G0 T0 r6 I0 P3 zyt=1./xsh; n=length(yt);m=n/3; 5 h2 D1 D9 A3 C; P. J
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end)) 0 {8 k# x, f  y# ~8 t( N% G
b=((s3-s2)/(s2-s1))^(1/m) 4 Z- ]$ r4 M& V
a=(s2-s1)*(b-1)/(b*(b^m-1)^2) . @$ M, U: f4 h; `  H
k=(s1-a*b*(b^m-1)/(b-1))/m " }% X. G+ N, H: F2 `1 b8 _" I
y=yuce(1:18)
" J+ ~( h! `9 H$ W5 k: x# b$ S) `%************************************ %定义预测函数 %************************************ function y=yuce(t);
( E# S  s2 }) p8 b8 q) y2 |global a b k
: r0 ]/ `- m* s& G6 z* U) A% ~y=1./(k+a*b.^t);
$ c' Q' ?! I6 l9 o9 @- L3 f  R- _9 w8 E
9 a8 c" \& y/ u

3 _  N8 M7 |$ _" q1 a: U: K趋势线的选择

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

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

; n7 f0 C0 \' w: I% h" D/ V. }4 O
: T. w/ a- U' B6 y
8 ^; _% B; {( [: E0 o2 d
————————————————
- n) Y4 q4 ]1 v1 _7 Y版权声明:本文为CSDN博主「wamg潇潇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。0 j  w& m+ z) S( ^& P1 Z& M0 m
原文链接:https://blog.csdn.net/qq_29831163/article/details/89448270
& y" q' ]3 ~% ]9 Z
- W+ u8 z& T* e4 @. X" K3 A& q# a- X% G7 w8 h+ H- V. s





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