当前位置:首页 > sas Unit42Stat非平稳序列的随机分析
106334266.doc
商务数据分析
电子商务系列
qtr(季)、month(月)、week(周)、weekday(工作日)、day(天)、hour(小时)、minute(分)和second(秒)。
? id=变量名——指明输入数据集中一个变量,用于识别与观测有关的时间周期。 ? noprint——取消打印输出。
? out=数据集名——将预测值和其他值输出到一个指定的数据集中。data步中的rename选项可用来重新命名预测值和上下置信限的变量名。
三、 实例分析
例42.1 建立国际航线旅客月度人数的ARIMA模型。我们已有一组1949年至1961年国际航线旅客月度人数的144条记录。使用ARIMA过程进行建模和预测。其数据列于表42.1所示。
表42.1 1949年至1961年国际航线旅客月度人数 YEAR 1 1949 112 1950 115 1951 145 1952 171 1953 196 1954 204 1955 242 1956 284 1957 315 1958 340 1959 360 1960 417 2 118 126 150 180 196 188 233 277 301 318 342 391 3 132 141 178 193 236 235 267 317 356 362 406 419 4 129 135 163 181 235 227 269 313 348 348 396 461 5 121 125 172 183 229 234 270 318 355 363 420 472 6 135 149 178 218 243 264 315 374 422 435 472 535 7 148 170 199 230 264 302 364 413 465 491 548 622 8 148 170 199 242 272 293 347 405 467 505 559 606 9 136 158 184 209 237 259 312 355 404 404 463 408 10 119 133 162 191 211 229 274 306 347 359 407 461 11 104 114 146 172 180 203 237 271 305 310 362 390 12 118 140 166 194 201 229 278 306 336 337 405 432 1. 建立数据集和绘制原始时间序列图
首先,输入要分析的时间序列的数据,建立SAS数据集。为了识别时间序列的数据是否平稳和是否明显有季节性,通常先制作时间序列图来观察分析,程序如下:
goptions reset=global gunit=pct cback=white border htitle=6 htext=3 ftext=swissb colors=(black);
data arimad01;
date=intnx('month','31dec1948'd,_n_); input x @@; cards;
112 118 132 129 121 135 148 148 136 119 104 118 115 126 141 135 125 149 170 170 158 133 114 140 ? ? ?
417 391 419 461 472 535 622 606 408 461 390 432 ;
proc print data=arimad01 ; proc gplot data=arimad01 ;
上海财经大学经济信息管理系IS/SHUFE
Page 5 of 15
106334266.doc
商务数据分析
电子商务系列
plot x*date /vaxis=axis1 haxis=axis2 href='31dec1949'd to '1jan61'd by year; symbol1 i=join v=c h=2.5 l=1 font=swissb;
axis1 label=('Passenger') order=(100 to 650 by 50);
axis2 label=('Month') order=('1jan49'd to '1jan61'd by year); format date monyy. ; title1 'Time Serial Chart'; run;
2. 对平稳性和季节性的识别
对平稳性和季节性的识别通常有直接估计和利用proc arima中identify语句两种方法,或两者结合起来一起判断。
? 直接估计平稳性。直接估计就是通过直接观察时间序列折线图来检验序列是否平
稳。如果时间序列有某种趋势或呈现出增加或减少范围的扩散现象,则序列是不平稳的。
? 利用proc arima估计平稳性。如果序列的折线图并不明显地呈现上述现象,而我们
又无法直接判断序列究竟平稳与否,通常可以利用proc arima过程的identify语句来检测序列是否平稳。 程序如下:
proc arima data=arimad01;
identify var=x; run;
提交运行程序后,部分结果见表42-2所示。
上海财经大学经济信息管理系IS/SHUFE
Page 6 of 15
106334266.doc
商务数据分析
电子商务系列
表42.2 原始序列x的自相关图
ARIMA Procedure Name of variable = X. Mean of working series = 279.6042 Standard deviation = 118.5103 Number of observations = 144 Autocorrelations Lag Covariance Correlation -1 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 1 Std 0 14044.684 1.00000 | |********************| 0 1 13197.393 0.93967 | . |******************* | 0.083333 2 12200.063 0.86866 | . |***************** | 0.138593 3 11246.527 0.80077 | . |**************** | 0.172303 4 10623.172 0.75638 | . |*************** | 0.196454 5 10074.684 0.71733 | . |************** | 0.215732 6 9645.037 0.68674 | . |************** | 0.231705 7 9394.781 0.66892 | . |************* | 0.245433 8 9272.192 0.66019 | . |************* | 0.257782 9 9499.554 0.67638 | . |************** | 0.269268 10 9983.600 0.71085 | . |************** | 0.280819 11 10531.777 0.74988 | . |*************** | 0.293049 12 10738.185 0.76457 | . |*************** | 0.306084 13 9989.496 0.71127 | . |************** | 0.319071 14 9049.658 0.64435 | . |************* | 0.329898 15 8238.988 0.58663 | . |************ . | 0.338525 16 7589.355 0.54037 | . |*********** . | 0.345512 17 7059.360 0.50264 | . |********** . | 0.351332 18 6608.510 0.47053 | . |********* . | 0.356291
观察在表42.2中程序输出的有关时间序列变量x的自相关系数ACF和ACF图,发现自相关系数长期位于零轴正的一边,这是具有单调递增趋势序列的典型特征,同时自相关图呈现出明显的正弦波动规律,这是具有周期变化规律的非平稳序列的典型特征。自相关图显示出来的这两个性质和该序列时序图显示出的带长期递增趋势的周期性质是非常吻合的。一般来说,如果ACF缓慢地向零趋近,而几个时滞的ACF却相当大,那么序列也许不平稳。对于不同的时间序列类型,它们相应ACF的特性有:
? 若时间序列是随机无趋势的,所有时滞的自相关系数都等于0。
? 若时间序列是上升或下降趋势的,那么对于短时滞来说,自相关系数大且为正,而
且随着时滞lag的增加而缓慢地下降。ACF本身似乎随着时滞长度的增加而呈下降趋势。
? 若时间序列无趋势但具有季节性,那么对于按月(L=12)采集的数据来说,时滞12,
24,?的自相关系数达到最大(即nL处),而随着时滞长度增加时,变得较小。 ? 若时间序列有趋势且具有季节性,那么自相关系数特性类同于有趋势序列,但是它
们是摆动的,对于按月的数据,在时滞12,24?等处具有峰态。
? 若时间序列是平稳的,它具有正自相关的误差项,那么低阶的自相关系数较大,但
上海财经大学经济信息管理系IS/SHUFE
Page 7 of 15
106334266.doc
商务数据分析
电子商务系列
是随着时滞长度的增加而迅速地衰减。
另外,在ACF图中,通过自相关系数值的图示是否在零点附近的两条对称的虚线之内,完成不同时滞的总体自相关系数为0的检验。
3. 变换不平稳序列为平稳序列
如果断定一个时间序列是不平稳的,通常可以作一些简单的变换或修正,使其减少趋势或平稳化。然后对变换后的新序列建模预测,可以避免将数据拟合成更复杂的模型。最常用的变换方法有:
? 如果时间序列呈线性趋势,均值不是常数,利用一阶差分将产生一个平稳序列。 ? 如果时间序列呈二次趋势,均值不是常数,利用二阶差分将产生一个平稳序列。 ? 如果时间序列呈现出随时间的上升或下降而偏差,方差不是常数,通常可利用取
自然对数转化为平稳序列。
? 如果时间序列呈现指数趋势,均值和方差都不是常数,通常也可利用取自然对数
转化为平稳序列。
? 如果时间序列呈现“相对环”趋势,通常将数据除以同时发生的时间序列的相应
值转化为平稳序列。
1) 取对数消除振幅变大趋势
从原始时间序列的折线图中观察发现,该序列是一个具有季节性变化同时有增大的趋势,而且季节变化的振幅越来越大,再观察ACF图和自相关系数也得到相同的结论。因此我们可以对这批数据取对数来先消除增幅越来越大的现象。另外,数据呈现每隔12个时间单位为一个周期的季节性。为了便于比较,我们将原始时间序列和消除增幅后的时间序列按12个时间单位的间隔绘制在一张图表上。程序如下:
data arimad02;
set arimad01 ; xlog=log(x);
proc print data=arimad02; run;
proc gplot data=arimad02 ;
plot xlog*date / vaxis=axis1 haxis=axis2
href='31dec1949'd to '1jan61'd by year;
plot2 x*date /vaxis=axis3 vref=100;
symbol1 i=join v=c h=3 l=1 r=1 font=swissb c=green; symbol2 i=join v=c h=3 l=1 r=1 font=swissb c=blue;
axis1 label=('Log') order=(4.5 to 6.5 by 0.2) offset=(0,45);
axis2 label=('12 Month') order=('1jan49'd to '1jan61'd by year); axis3 label=('Passenger') order=(100 to 650 by 50) offset=(23,0); format date monyy. ;
title1 'Time Serial Log Chart'; run;
提交运行程序后,结果见图42-2所示。
上海财经大学经济信息管理系IS/SHUFE
Page 8 of 15
共分享92篇相关文档