第 1 章 引言
从随时间顺序收集的观察中获得的数据非常普遍。在商业中,我们观察每周利率、每日收盘价、每月价格指数、年度销售数据等等。在气象学中,我们观察每日的高温和低温、年降水量和干旱指数以及每小时的风速。在农业领域,我们记录了作物和牲畜生产、土壤侵蚀和出口销售的年度数据。在生物科学中,我们以毫秒为间隔观察心脏的电活动。在生态学中,我们记录了动物物种的丰度。研究时间序列的领域列表实际上是无穷无尽的。时间序列分析的目的通常是双重的:理解或模拟产生观察序列的随机机制,并根据该序列的历史以及可能的其他相关历史预测或预测该序列的未来值系列或因素。
本章将介绍来自不同应用领域的各种时间序列示例。时间序列及其模型的一个有点独特的特征是,我们通常不能假设观察结果独立于一个共同的群体(例如,来自具有不同方法的群体)。研究包含依赖关系的模型是时间序列分析的关键概念。
1.1 时间序列的例子
在本节中,我们将介绍一些将在后面的章节中讨论的例子。
洛杉矶的年降雨量
> win.graph(width = 4.875,height = 2.5,pointsize = 8) #弹出新的绘图窗口
> data("larain")
# str(larain)
# Time-Series [1:115] from 1878 to 1992: 20.86 17.41 18.65 5.53 10.74 ...
> plot(larain,ylab='Inches',xlab='Year',type='o')
图表 1.1 显示了加利福尼亚州洛杉矶 100 多年来记录的年降雨量的时间序列图。该图显示了多年来降雨量的相当大的变化——有些年份低,有些年份高,还有许多介于两者之间。 1883 年是洛杉矶异常潮湿的一年,而 1983 年则相当干燥。出于分析和建模的目的,我们对连续年份是否以某种方式相关感兴趣。如果是这样,我们也许可以使用一年的降雨量来帮助预测明年的降雨量。调查该问题的一种图形方法是将连续降雨值配对并绘制成对的散点图。
图表 1.2 显示了这样一个降雨散点图。
> win.graph(width = 3,height = 3,pointsize = 8)
> plot(y=larain,x=zlag(larain))
例如,绘制在右下角附近的点显示了降雨量极高的年份(1883 年 40 英寸),随后是中等降雨量(1884 年,约 12 英寸)。该点显示屏顶部附近显示 是40 英寸的年份之前年降雨量更典型,是 15 英寸。
我们从这张图中获得的主要印象是,今年的降雨量与去年的降雨量相比几乎没有任何信息。该图没有显示“趋势”,也没有一般趋势。去年的降雨量与今年的降雨量之间几乎没有相关性。从建模或预测的角度来看,这不是一个非常有趣的时间序列!
工业化学过程
作为第二个例子,我们考虑工业化学过程的时间序列。此处测量的变量是过程中连续批次的颜色属性。
> data("color")
> plot(color,type="o")
图表 1.3 显示了这些颜色值的时间序列图。在这里,时间上相邻的值往往大小相似。邻居似乎是相互关联的。
正如我们在第一个示例中所做的那样,通过构建相邻对的散点图可以更好地看到这一点。
> plot(color,x=zlag(color))
图表 1.4 显示了相邻颜色值对的散点图。我们在该图中看到了轻微的上升趋势——在后面的批次中,低值往往会跟随低值,中等大小的值往往会跟随中等大小的值,而高值往往会跟随高值。趋势很明显,但不是非常强劲。例如,此散点图中的相关性约为 0.6。
加拿大野兔的年丰度
我们的第三个例子涉及加拿大野兔的年丰度。
> data(hare)
> plot(hare,type="o")
图表 1.5 给出了这种丰度在大约 30 年内的时间序列图。这里的相邻值非常密切相关。从一年到下一年,丰度不会发生大的变化。在图表 1.6 中可以清楚地看到这种相邻的相关性,我们绘制了丰度与前一年丰度的关系。与前面的示例一样,我们在图中看到了上升趋势——下一年的低值往往会跟随低值,中等大小的值后面跟着中等大小的值,高值后面跟着高值。
> plot(hare,x=zlag(hare))
爱荷华州迪比克市的月平均气温
爱荷华州迪比克市多年来记录的月平均气温(以华氏度为单位)显示在图表 1.7 中。
> data(tempdub)
> plot(tempdub,type='o')
这个时间序列显示了一种非常规则的模式,称为季节性。当相隔 12 个月的观察值以某种方式相关时,就会出现月度季节性。所有的一月和二月都很冷,它们的值相似,但与温暖的六月、七月和八月的温度差别很大。 不同年的1 月份的值和 6 月份的值之间仍然存在差异。此类序列的模型必须适应这种变化,同时保持相似性。在这里,季节性的原因很容易理解——北半球对太阳的倾斜度不断变化。
> plot(tempdub,x=zlag(tempdub))
每月机油滤清器销售量
本章的最后一个示例是关于 John Deere 制造的建筑设备专用机油滤清器每月向经销商销售的情况。当这些数据首次提交给作者时,这位经理说:“没有理由相信这些销售是季节性的。”如果 1 月倾向于与 1 月的值相关,2 月倾向于与 2 月的值相关,等等,则存在季节性。图表 1.8 中显示的时间序列图并不是为了很好地显示季节性而设计的。图表 1.9 给出了相同的绘图,但经过修改以使用有意义的绘图符号。在该图中,所有一月份的值都用字符 J 绘制,所有二月的值都用 F 绘制,所有 三月的值都用 M 绘制,等等。使用这些绘图符号,更容易看到冬季月份的销售额1 月和 2 月的销售额均较高,而 9 月、10 月、11 月和 12 月的销售额则很低。从这个修改后的时间序列图中更容易看出数据中的季节性。
> data("oilfilters")
> plot(oilfilters,type="o")
> points(x=time(oilfilters),y=oilfilters,pch=as.vector(season(oilfilters)))
> season(oilfilters)
> season(oilfilters)
一般而言,我们的目标是强调适合且有用的绘图方法,以寻找能够为我们的时间序列数据生成合适模型的模式。在后面的章节中,我们将考虑几种将季节性纳入时间序列模型的不同方法。
1.2 模型构建策略
为时间序列找到合适的模型是一项艰巨的任务。我们将发展 Box 和 Jenkins (1976) 推崇的多步骤模型构建策略。该过程分为三个主要步骤,每个步骤都可以多次使用:
-
- 模型设定(或识别)
-
- 模型拟合
-
- 模型诊断
在模型设定(或识别)中,时间序列模型类别的选择要适用于给定的观察序列。在这一步中,我们查看该系列的时间图,从数据中计算出许多不同的统计数据,并应用数据产生的主题背景知识,例如生物学、商业或生态学。应该强调的是,此时选择的模型是暂定的,会在后面分析中进行修改。
在选择模型时,尽量坚持简约原则;也就是说,使用的模型应该需要最少数量的参数来充分代表时间序列。阿尔伯特·爱因斯坦在 Parzen (1982, p. 68) 中被引述为“一切都应该尽可能简单,但不能简单”。
该模型将不可避免地涉及一个或多个参数,其值必须从观察到的序列中估计。模型拟合包括在给定模型中找到那些未知参数的最佳估计值。我们将考虑估计的最小二乘和最大似然等标准。
模型诊断与评估我们指定和估计的模型的质量有关。模型与数据的拟合程度如何?模型的假设是否得到了合理的满足?如果没有发现不足之处,则可以假定建模是完整的,并且可以使用该模型,例如,预测未来值。否则,我们会根据发现的不足选择另一种模型;也就是说,我们回到模型设定步骤。这样,我们循环通过三个步骤,直到理想情况下找到一个可接受的模型。由于模型构建中每个步骤所需的计算量很大,我们将依靠现成的统计软件来进行计算并进行绘图。
1.3 历史上的时间序列图
略