3.42 3.53 3.45 proc print data=examplel_2: run: 得到输出结果如下: Obs price time 1 3.41 JANO5 2 3.45 FEB05 3 3.42 MARO5 4 3.53 APRO5 5 3.45 MAY05 尽管我们没有输人时间变量的取值,但是INTNX函数会自动给每条输入数据进 行时间变量赋值。 语句说明: “time=intnx(‘month',‘0ljan2005’d,_n-l),' 该命令是指定用INTNX函数给时间变量TIME赋值。具体操作是以2005 年1月1口为起始时间,以月为时间间隔,从起始时刻2005年1月1日开始每 读入一个PRICE的数据,就自动产生一个TME的时间数据 INTNX函数包括三个参数: 第一个参数是指定等时间间隔,本例中指定等时间间隔为月‘month',该 参数还可以取为day(天),week(星期),quarter(季度),year(年)等。 第二个参数是指定参照时间,本例的参照时间是‘01jan2005’d。 第三个参数是__k,这个参数主要是调整开始观测指针。k为整数,k取 正值,指针由参照时间向未来(不包含参照时间)拨k期,k取负值,指针由参 照时间向过去(包括参照时间)拨k期。 二、序列变换 在时间序列分析中,我们得到的是观察值序列{x},但是需要分析的可能 却是这个观察值序列的某个函数变换。例如对数序列{z,}。在建立数据集时, 我们可以通过简单的赋值命令实现这个变换。 例如运行如下程序: data examplel_3; 12
input price logprice-log (price) time=intnx(‘month',‘01jan20o5'd,_n_-l); format time monyy.; cards; 3.41 3.45 3.42 3.53 3.45 proc print data=examplel3; run; 该程序输出结果如下: Obs price logprice time 1 3.41 1.22671 JAN05 2 3.45 1.23837 FEBO5 3.42 1.22964 MARO5 4 3.53 1.26130 APR05 3.45 1.23837 MAY05 语句说明: “logprice=log(price));” 这是一个简单的赋值语句,将prce的对数函数值赋值给一个新的变量log price,即建立了一个新的对数序列。 三、子集 有时我们只需要分析一个时间序列中的部分序列值,这时可以在DATA步 中建立一个子集。 例如我们只需要分析数据集examplel_3中2005年3月~5月的对数价格 序列,建立相应的子集examplel_4, data examplel_4; set examplel3; keep time logprice; where time>='01mar2005'd 的
proc print data=examplel4; run; 数据集examplel_4的输出结果如下: Obs logprice time 1 1.22964 MARO5 2 1.26130 APRO5 3 1.23837 MAY05 语句说明: (1)“data examplel_4;” 这条命令是告诉系统要建立一个名为examplel_4的临时数据集。 (2)“set examplel_3:” 这条命令是说,数据集examplel.4是数据集examplel_3的子集。注意 example1.3数据集要在本次SAS运行中已经存在。 (3)“keep time logprice;” 这条命令是告诉系统数据集examplel_4中只需要保留两个变量:一个是 time;一个是logprice。 (4)“where time>='0lmar2005'd:” 这是指令系统只要将数据集examplel_3中时间大于等于2005年3月1日 的那些数据输入数据集examplel_4。 四、缺失值插值 有时我们的观察值序列会有缺失值,这会影响我们的分析。这时可以值用 EXPAND)过程,使用差值方法补全缺失值。 假设上例中2005年3月1日price的观察值缺失,使用如下程序对缺失值进 行补插。 data examplel5; input price time=intnx(‘month',‘Oljan2005'd,-n--l); format time date.; cards; 3.41 3.45 3.53 14
3.45 proc expand data=examplel_5 out=examplel_6; id time; proc print data=examplel 5; proc pririt data=examplel6; run; 该程序输出两个数据集的结果如下: 数据集examplel_5 数据集examplel_6 Obs price time Obs time price 1 3.41 01JAN05 01JAN05 3.41000 2 3.45 01FEB05 2 01FEB05 3.45000 3 01MAR05 3 01MARO5 3.50693 43.53 01APR05 01APRO5 3.53000 53.45 01MAY05 5 01MAY05 3.45000 语句说明: "proc expand data=examplel_5 out=examplel6;" 这是指令系统将数据集examplel_5中的所有缺失值用插值的方法补齐,并 将补齐后的数据集另存为数据集examplel_6
第2章 时间序列的预处理 拿到一个观察值序列之后,首先要对它的平稳性和纯随机性进行检验,这两 个重要的检验我们称之为序列的预处理。根据检验的结果可以将序列分为不同的 类型,对不同类型的序列我们会采用不同的分析方法。 2.1平稳性检验 2.1.1特征统计量 平稳性是某些时间序列具有的一种统计特征。要描述清楚这个特征,我们必 须借助如下的统计工具。 一、概率分布 数理统计的基础知识告诉我们分布函数或密度函数能够完整地描述一个随机 变量的统计特征。同样,一个随机变量族{X}的统计特性也完全由它们的联 合分布函数或联合密度函数决定。 对于时间序列{X,∈},这样来定义它的概率分布: 16