§7.利用SPSS 和Matlab 进行时间序列预测
1.移动平均和滑动平均计算
例1:下表给出了某地区1990~2004年粮食产量数据(表1)。
试分别用Matlab 和SPSS 软件,对该地区的粮食产量进行移动平均和和滑动平均计算。
表1 某地区1990~2004年粮食产量及其平滑结果
移动平均
滑动平均 年份 自然序号
粮食产量y (单位:104 t )三点移动 五点移动
三点滑动
五点滑动
1990 1 3149.44 1991 2 3303.66 3154.47 1992 3 3010.30 3010.30 3141.19 3242.44 1993 4 3109.61 3154.47 3253.04 3263.32 1994 5 3639.21 3141.19 3334.21 3295.88 1995 6 3253.80 3253.04 3242.44 3453.17 3461.80 1996 7 3466.50 3334.21 3263.32 3520.07 3618.81 1997 8 3839.90 3453.17 3295.88 3733.69 3692.89 1998 9 3894.66 3520.07 3461.80 3914.72 3892.78 1999 10 4009.61 3733.69 3618.81 4052.51 4019.78 2000 11 4253.25 3914.72 3692.89 4121.45 4075.78 2001 12 4101.50 4052.51 3892.78 4158.21 4148.58 2002 13 4119.88 4121.45 4019.78 4160.01 4227.01
2003 14 4258.65 4158.21 4075.78 4260.11
2004
15 4401.79 4160.01
4148.58
利用spss 进行移动平均计算主要有以下步骤:
(1) 在菜单中依次选择transform->Create time series…,在弹出的对话框中
的单击function 下面的下拉条,选择Prior moving average 方法,span 框中输入数值为3(表示进行三点滑动平均)。
(2) 在左边变量框中选择“粮食产量”变量,点击“添加”按钮,则在右边的新变量框中自动生成一个新变量名,在下面的name框中可以对
此变量名进行改变,本例采用默认变量名。
(3) 在span框中输入数值5,重复步骤(2)。
(4) 在function中选择Centered moving average方法,span框中分别输入3和5,分别重复步骤(2)。
,此时新变量框有四个变量,前两个分别储
存三点和五点移动平均计算后的结果,后两个分别储存三点和五点滑
动平均计算后的结果。
(5) 点击ok按钮进行计算。
在原始数据表后新加的四列变量极为所求的移动和滑动平均结果。
2.季节性预测
例2:某旅游景点2002~2004年各季度客流量y i(104人次)如表2所示,下面我们用季节性预测方法,预测该旅游景点2005年各季度的客流量。
表2 某市2002~2004年各季度客流量及其三点滑动平均值(104人次)
年份 季度 t游客人数 三点滑动平均
1 1 260.00
2 2 375.00 325.00
2002
3 3 340.00 312.67
4 4 223.00 279.33
2
5 275.00 303.33 2
6 412.00 346.33 3
7 352.00 331.67 2003
4 8 231.00 290.00 1
9 287.00 315.33 2 10 428.00 359.67 3 11 364.00 345.00 2004
4
12
243.00
使用季节变动预测法对该旅游景点2005年各季度的客流量的步骤为: (1) 对原始数据求三次滑动平均值。
该过程可以使用spss 来实现,方法如例1。
(2) 用二次指数平滑法求预测模型系数。
二次指数平滑法的预测公式为
k b a y t t k t +=+ˆ
式中:k 代表从基期t 到预测期的期数。
)2()1(2t t t S S a −= ())2()1(1t t t S S b −−=
αα
式中:
)
1(1)1()1(−−+=t t t S y S αα
)2(1)1()2()1(−−+=t t t S S S αα
指数平滑和方程系数可以使用Matlab 计算,代码如下(已经输入原始数据
矩阵a,平滑系数为alf=0.2,m为原始数据矩阵的行数):
[m,n]=size(a)
alf=0.2; % 设定平滑系数的数值
for j=1:2
s(1,j)=a(1,1);
end
for i=2:m
for j=1:2
if j==1
s(i,j)=alf*a(i,1)+(1-alf)*s(i-1,j);
else
s(i,j)=alf*s(i,j-1)+(1-alf)*s(i-1,j);
end
end
end
% 计算预测方程的系数 a(t),b(t)
temp=alf/(1-alf); %将循环式中每次运算的常数提取出来计算,以减少计算量for i=1:m
at(i,1)=2*s(i,1)-s(i,2);
bt(i,1)=temp*(s(i,1)-s(i,2));
end
%得出的预测模型为Y=at(m,1)+bt(m,1)*T
%求初步预测值
for i=1:4
y1(i)=at(m,1)+bt(m,1)*i;
end
y1
(3) 求季节性指标。
将原始数据与三次滑动平均后的数据相比,计算相应的季节系数。
然后将各季季节性系数平均得季节性指标,用4除以季节性指标得校正系数。
最后将季节性指标分别乘以校正系数,得出调整后的季节性指标分别为0.919515、1.192251、1.081015、0.80722。
该步骤计算较为简单,常用计算工具如excel等都可以实现,这里不再详述。
(4) 根据步骤(2)得出的初步预测值,在乘以调整后的季节性指标,得到最终的客流量预测值。
可以在matlab中计算,代码为:
k=[0.919515 1.192251 1.081015 0.80722];
y=y1.*k
运算得到的最终结果为:y=296.5882 386.8031 352.7497 264.9262,即该旅游景点2005年各季度的客流量分别为296.5882万人、386.8031万人、352.7497万人、264.9262万人。