趋势外推法是根据事物的历史和现时资料,寻求事物发展规律,从而推测出事物未来状况的一种比较常用的预测方法。利用趋势外推法进行预测,主要包括六个阶段:(a)选择应预测的参数;(b)收集必要的数据;(c)利用数据拟合曲线;(d)趋势外推;(e)预测说明;(f)研究预测结果在进行决策中应用的可能性。趋势外推法常用的典型数学模型有:指数曲线、修正指数曲线、生长曲线、包络曲线等。
6.1 指数曲线法
一般来说,技术的进步和生产的增长,在其未达饱和之前的新生时期是遵循指数曲线增长规律的,因此可以用指数曲线对发展中的事物进行预测。指数曲线的数学模型为:
6.2 修正指数曲线法
利用指数曲线外推来进行预测时,存在着预测值随着时间的推移会无限增大的情况。这是不符合客观规律的。因为任何事物的发展都是有一定限度的。例如某种畅销产品,在其占有市场的初期是呈指数曲线增长的,但随着产品销售量的增加,产品总量接近于社会饱和量时。这时的预测模型应改用修正指数曲线。
例8 根据统计资料,某厂收音机连续15 年的销售量如表10。
计算的 MATLAB 程序如下:
function chanliang
clc,clear
global a b k
load xsh.txt %原始数据存放在纯文本文件xsh.txt 中
yt=xsh; n=length(yt);m=n/3
cf=diff(yt);
for i=1:n-2
bzh(i)=cf(i+1)/cf(i);
end
range=minmax(bzh)
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end))
b=((s3-s2)/(s2-s1))^(1/m)
a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
k=(s1-a*b*(b^m-1)/(b-1))/m
y=yuce(1:18)
%************************************
%定义预测函数
%************************************
function y=yuce(t)
global a b k
y=k+a*b.^t;
6.3 Compertz 曲线
计算的 MATLAB 程序如下:
function chanliang2
clc,clear
global a b k
load xsh.txt %原始数据存放在纯文本文件xsh.txt 中
yt=log(xsh); n=length(yt);m=n/3;
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end))
b=((s3-s2)/(s2-s1))^(1/m)
a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
k=(s1-a*b*(b^m-1)/(b-1))/m
a=exp(a)
k=exp(k)
y=yuce(1:18)
%************************************
%定义预测函数
%************************************
function y=yuce(t);
global a b k
y=k*a.^(b.^t);
6.4 Logistic 曲线(生长曲线)
生物的生长过程经历发生、发展到成熟三个阶段,在三个阶段生物的生长速度是不一样的,例如南瓜的重量增长速度,在第一阶段增长的较慢,在发展时期则突然加快,而到了成熟期又趋减慢,形成一条S 形曲线,这就是有名的Logistic 曲线(生长曲线),很多事物,如技术和产品发展进程都有类似的发展过程,因此Logistic 曲线在预测中有相当广泛的应用。
计算的 MATLAB 程序如下:
function chanliang3
clc,clear
global a b k
load xsh.txt %原始数据存放在纯文本文件xsh.txt 中
yt=1./xsh; n=length(yt);m=n/3;
s1=sum(yt(1:m)), s2=sum(yt(m+1:2*m)), s3=sum(yt(2*m+1:end))
b=((s3-s2)/(s2-s1))^(1/m)
a=(s2-s1)*(b-1)/(b*(b^m-1)^2)
k=(s1-a*b*(b^m-1)/(b-1))/m
y=yuce(1:18)
%************************************
%定义预测函数
%************************************
function y=yuce(t);
global a b k
y=1./(k+a*b.^t);