时间序列预测与马尔科夫链预测互补,至少有2个点需要信息的传递,ARMA模型,周期模型,季节模型等
ARMA模型的全称是自回归移动平均(auto regression moving
average)模型,它是目前最常用的拟合平稳序列的模型,它又可细分为AR模型(auto regression model)、MA模型(moving
average model)和ARMA模型(auto regression moving average model)三大类。
例
税收作为政府财政收入的主要来源,是地方政府实行宏观调控、保证地区经济稳定增长的重要因素。各级政府每年均需预测来年的税收收入以安排财政预算。什么方法能够帮助地方政府有效地预测税收收入?下表是某地历年税收数据(单位:亿元)
表1 各年度的税收数据
年份
1
2
3
4
5
6
7
税收
15.2
15.9
18.7
22.4
26.9
28.3
30.5
年份
8
9
10
11
12
13
14
税收
33.8
40.4
50.7
58
66.7
81.2
83.4
利用以下程序:
clc, clear a=[15.2 15.9 18.7 22.4 26.9 28.3 30.5 33.8 40.4 50.7 58 66.7 81.2
83.4]; m=input('请输入需要预测的个数:'); ahat=a; for i=1:m %m=需要预测值的数量
fprintf('现在开始预测第%d个值。',i); a=ahat; a=a'; a=a(:); a=a'; %把原始数据按照时间顺序展开成一个行向量
Rt=tiedrank(a); %求原始时间序列的秩28.3 n=length(a); t=1:n;
Qs=1-6/(n*(n^2-1))*sum((t-Rt).^2) %计算Qs的值 T=Qs*sqrt(n-2)/sqrt(1-Qs^2) %计算T统计量的值
t_0=tinv(0.975,n-2) %计算上alpha/2分位数
作下列假设检验
:序列平稳;
:序列非平稳(存在上升或者下降趋势)。
Daniel检验方法:对于显著水平,由时间序列计算,的Spearman秩相关系数Qs,若>t_0,则拒绝,认为序列非平稳。并且Qs>0时,认为序列由上升趋势;Qs<0时,认为序列有下降趋势。又当t_0时,接受,可以认为是平稳序列。
本题中,,上alpha/2的值t_0=2.1788,所以>t_0,故认为序列是非平稳的;因为Qs>0,所以序列有上升趋势。为了构造平稳序列,对于作一阶差分运算,得到序列。从时间序列散点图来看,时间序列是平稳的。
实现代码如下:
if(T>t_0) b=diff(a); %求原始时间序列的一阶差分 c=ar(b,2,'ls'); %利用最小二乘法估计模型的参数
bhat=predict(c,b') %求原始数据的预测值,第二个参数必须为列向量 bhat(end+1)=forecast(c,b',1);
%计算1个预测值,第二个参数必须为列向量 fprintf('第%d个值预测后的全部数据ahat:',i); ahat=[a(1), a+bhat']
%求原始数据的预测值,并计算t=15的预测值 delta=abs((ahat(1:end-1)-a)./a) %计算原始数据预测的相对误差 else
c=ar(a,2,'ls'); %利用最小二乘法估计模型的参数 bhat=predict(c,a') %求原始数据的预测值,第二个参数必须为列向量
bhat(end+1)=forecast(c,a',1); %计算1个预测值,第二个参数必须为列向量
fprintf('第%d个值预测后的全部数据ahat:',i); ahat=bhat'%求原始数据的预测值,并计算t=15的预测值
delta=abs((ahat(1:end-1)-a)./a) %计算原始数据预测的相对误差 end end
最终算得结果如下:
年份
1
2
3
4
5
6
7
税收
15.2
15.9
18.7
22.4
26.9
28.3
30.5
预测值
15.2
15.9
18.7
19.9651
25.3715
30.7182
31.8093
相对误差
0
0
0
0.1087
0.0568
0.0854
0.0429
年份
8
9
10
11
12
13
14
税收
33.8
40.4
50.7
58
66.7
81.2
83.4
预测值
32.0832
36.2442
44.5258
58.1439
67.1731
74.1835
91.2694
相对误差
0.0508
0.1029
0.1218
0.0025
0.0071
0.0864
0.0944
注:在使用该程序时,只需要把矩阵a换成自己的数据就行
一般推荐使用SPSS,具体步骤如下:
SPSS进行时间序列预测:
* 把数据输入到SPSS中;
2.定义日期和时间;
3.选择日期:选择“年”,第一个个案是:选择2000,然后点击“确定”;
4.转换→创建时间序列
5.把“税收”移到“变量”里,“名称”默认即可,“函数”中选择“平滑”,然后点击“确定”,即可得到预测结果;
为了和用MATLAB求解的结果作比较,这里也求出了其相对应的相对误差:
热门工具 换一换