时间序列分析讲义 下
时间
价格
1
101
2 2 4 5
82
66
35
31 7
我们可以运行如下程序:
data example ; input price@@; t=_n_; cards; 101 82 66 35 31 7 ; run;
可以在数据库WORK看见数据集example数据集中有两 个变量t和price。
我们没有输入时间变量的数据,但“t=_n_”命令 自动给时间变量赋值 。
第三章 SAS-ARIMA模型过程简介 ARIMA模型过程有三个阶段:
模型识别与定阶 参数估计与模型诊断 预测
SAS是通过IDENGTIFY、 Estimate及forecast三个语句来实 现这三个阶段的。
3.1 模型识别
模型的识别可以通过IDENGTIFY语句实现 。
第二章提到,SAS的ARIMA过程中的IDENGTIFY 语句,不仅可以实现白噪声和平稳性的检验,还 可以实现序列模型的识别。
可以在数据库WORK看见数据集ex1_2数据集中有两个 变量t和price。
format t monyy.指定时间的输出格式 此处monyy.指定时间的输出格式为月-年。
3、 外部数据的读取
1.2 数据的处理 1、序列变换
data example1_3;input price@@; t=intnx('month','1jan2005'd,_n_-1); logp=log(price); format t monyy.; cards; 3.41 3.45 3.42 3.53 3.45 ; run;
方法2
data example1_1;input price@@; cards; 3.41 3.45 3.42 3.53 3.45 ; run;
说明:
(1)这2种方法都可以创建一个名叫example的临时 数据集,保存在数据库WORK中,本次开机可调用,关 机后数据不保存。 SAS提供了两个通用数据库:临时数据库WORK 和永 久数据库SASUSER。 SAS数据命名采用二级制:数 据库名.数据集名。
;
run;
格式2 Data 数据集名;
input 变量名1 变量名2@@;
cards; 数据
;
run;
例1-1 录入数据 3.41 3.45 3.41;input price;
cards; 3.41 3.45 3.42 3.53 3.45 ; run;
各参数均显著,均值不显著(其对应的P值0.9968大于 0.05)。
可以在数据库WORK看见数据集ex1_3数据集中有3 个变量。
2、子集
data example1_4;set example1_3; keep t logp; where t>='01mar2005'd; proc print data=example1_4;run;
可以在数据库WORK看见数据集example1_4:
3、缺失值插值
data example1_5;input price@@; t=intnx('month','1jan2005'd,_n_-1); format t date.;cards; 3.41 3.45 . 3.53 3.45 ; proc expand data=example1_5 out=example1_6;id t; proc print data=example1_5 ; proc print data=example1_6;run;
以数据集example3_1为例来说明SAS序列模 型的识别的语句。
例3.1
data example3_1; input x@@; time=_n_; cards; 0.30 -0.45 0.36 0.00 0.17 0.45 2.15 4.42 3.48 2.99 1.74 2.40 0.11 0.96 0.21 -0.10 -1.27 -1.45 -1.19 -1.47 -1.34 -1.02 -0.27 0.14 -0.07 0.10 -0.15 -0.36 -0.50 -1.93 -1.49 -2.35 -2.18 -0.39 -0.52 -2.24 -3.46 -3.97 -4.60 -3.09 -2.19 -1.21 0.78 0.88 2.07 1.44 1.50 0.29 -0.36 -0.97 -0.30 -0.28 0.80 0.91 1.95 1.77 1.80 0.56 -0.11 0.10 -0.56 -1.34 -2.47 0.07 -0.69 -1.96 0.04 1.59 0.20 0.39 1.06 -0.39 -0.16 2.07 1.35 1.46 1.50 0.94 -0.08 -0.66 -0.21 -0.77 -0.52 0.05 ;
序列偏相关图
序列白噪声检验
分析: 白噪声检验显示该序列不是白噪声,可以建模;自 相关和偏相关函数都较快趋于零,判别为平稳过程; 注意到自相关函数在3步之后小于2倍标准差,认为自 相关函数在3步截尾,偏相关函数6步还未进入2倍标准 差,看做拖尾,所以初步判别模型为MA(3)
3.2 参数估计与诊断
可以在数据库WORK看见数据集example1_4:
“proc print data=example1_5 ;” 是查看语句,可以在输出窗口看到两个数据集。
第二章 SAS-时间序列预处理 2.1 时间序列图形 SAS时间序列作图的程序语句格式为: PROC GPLOT 数据集名 表明要对该数据集中的数据做图。
平稳性检验的目的是确定该时序可不可以直接建 模,平稳序列(非白噪声)可以直接建模,非白噪 声非平稳(非白噪声)序列需要先做差分处理,然 后建模。
SAS的ARIMA过程中的IDENGTIFY语句,提供了白 噪声检验的结果,同时提供了醒目的自相关、偏相 关函数图,可以帮助判 别平稳性。
事实上,通过IDENGTIFY语句,还可以实现序列 模型的识别,这个在下一章详细介绍。
等间隔的年份时间数据可以利用间隔函数输入: 例1-2 录入下表中的数据:
我们可以运行如下程序:
data example1_2 ;input price@@; t=intnx('month','1jan2005'd,_n_-1); format t monyy.; cards; 101 82 66 35 31 7 ; run;
(2)input语句中加@@,则录入可以按行录入, SAS按行读取数据;否则SAS按列读取数据。
注1:也可以建立自己的永久数据库。
注2:把录入数据的程序文件以.SAS文件形式保存下来, 这样数据也得到保存。启动文件,即产生临时数据集。
2、 等间隔时间数据的录入
SAS提供了命令或函数,可以更具需要自动产生等间隔的时间数据。 例 录入下表中的数据:
proc gplot data= example3_1; plot x*time=1; symbol1 c=red,i=join,v=star; run; proc arima data=example3_1; identify var=x ; run;
本例IDENGTIFY得到的信息:
序列自相关图
拟合MA(3): estimate q=3; run;
三、系数相关阵 四、残差相关检验(白噪声) 五、拟合模型形式
一般,我们通过参数估计看参数是否通过显著性检验; 通过残差相关检验(白噪声)看模型是否通过显著性 检验,检验通过的模型,写出具体的形式。
本例拟合MA(3) 的模型参数估计结果:
均值不显著,其他参数均显著。 注:若模型通过检验,还需要建立均值为0的优化模型。
例2.2
data example2_2; input fred@@; year=intnx('year','1jan1970'd,_n_-1); format year year4.; cards; 97 154 137.7 149 164 157 188 204 179 210 202 218 209 204 211 206 214 217 210 217 219 211 233 316 221 239 215 228 219 239 224 234 227 298 332 245 357 301 389 ; proc arima data= example2_2; identify var=fred; run;
下面看模型检验:
本例拟合MA(3),得到模型的残差的白噪声检验结 果:
滞后6步检验的P值0.0010<0.05,认为残差不是白噪声。 所以该模型没有通过检验。
那么如何寻找该序列的适合模型呢?
时间序列还提供了利用最佳判别准则来选择模型的方法。 最佳判别准则有AIC准则,BIC准则、SBC准则,都是基于 估计误差和模型简洁2性的准则,以值小的为佳。
我们用利用AIC准则最佳判别准则来选择模型。
在IDENTIFY中添加MINIC语句,即可求得模型的BIC 值。
再拟合MA(4)模型: estimate q=4; run;
本例拟合MA(4) 的白噪声检验结果:
白噪声检验统计量的所有P值都大于0.05, 说明残 差序列为白噪声。模型检验通过。
本例拟合MA(4) 的模型参数估计结果:
若命名中没有数据库名,则默认为临时数据库WORK 。
若改为如下的程序:
data sassuser.example1_1; input price@@; cards; 3.41 3.45 3.42 3.53 3.45 ; run;
就创建了一个名叫 example1_1的永久数据集,保 存在永久数据库SASUSER中,关机后数据保存。
时间序列分析讲义(下)
前面,我们已经介绍了时间序列建模的基本原理、 方法和步骤。