[关闭]
@evilking 2018-05-01T11:12:08.000000Z 字数 6012 阅读 2346

时间序列篇

ARIMA模型

前面的篇幅中我们讲解了 模型,而差分运算具有强大的确定性信息提取能力,许多非平稳序列差分后会显示出平稳序列的性质,这时我们称这个非平稳序列为差分平稳序列.对差分平稳序列可以使用 模型进行拟合.

模型的结构

具有如下结构的模型称为求和自回归移动平均模型,简记为 模型:

式中,,为平稳可逆 模型的自回归系数多项式;,为平稳可逆 模型的移动平滑系数多项式.

求和自回归移动平均模型这个名字的由来是因为 阶差分后序列可以表示为:

式中, ,即差分后序列等于原序列的若干序列值的加权和,而对它又可以拟合自回归移动平均()模型,所以称它为求和自回归移动平均模型.

另有:

式中, 为零均值白噪声序列.


由上式容易看出, 模型的实质就是差分运算与 模型的组合.这说明任何非平稳序列如果能够通过适当阶数的差分实现差分后平稳,就可以对差分后序列进行 模型拟合了.而 模型的分析方法非常成熟,这意味着对差分平稳序列的分析也将是非常简单、非常可靠的.

特别的:

随机游走模型描述为:假如有个醉汉醉得非常严重,完全丧失方向感,把他放在荒郊野外,一段时间之后再去找他,在什么地方找到他的概率最大呢?


模型的性质

平稳性

假如 服从 模型:


式中,
称为广义自回归系数多项式.显然 模型的平稳性完全由 的根的性质决定.

因为 差分后平稳,服从 模型,所以不妨设:

则有
由上式很容易判断, 模型的广义自回归系数多项式共有 个根.

其中 个根 在单位圆外, 个根在单位圆上.

自回归系数多项式的根即为特征根的倒数,所以 模型共有 个根,其中 个根在单位圆外, 个根在单位圆上.

因为有 个特征根在单位圆上而非单位圆内,所以当 时, 模型不平稳.


方差齐性

对于 模型,当 时,不仅均值非齐性,序列方差也非齐性.

以最简单的随机游走模型 为例:

这是一个时间 的递增函数,随着时间趋于无穷,序列 的方差也趋向于无穷.

阶差分之后

差分后序列方差齐性


模型建模

在掌握了 模型的建模方法后,尝试使用 模型对观察序列建模时一件比较简单的事情了.一般建模流程如下:

Created with Raphaël 2.1.2获得观察值序列平稳性检验白噪声检验分析结束拟合 模型差分运算yesnoyesno

下面我们以一个具体的实例来演示建模过程:

  1. #数据的准备
  2. > d <- read.table("data/file17.csv",",",header = T)
  3. > x <- ts(d$index,start = 1952)
  4. > plot(x)
  5. >

原始数据时序图

这里是对 1952 ~ 1988 年中国农业实际国民收入指数序列建模.

  1. #一阶差分
  2. > x.dif <- diff(x)
  3. > plot(x.dif)
  4. >

一阶差分后的时序图

一阶差分后可以看到时序图基本平稳,不用进行二阶差分.

  1. #考察自相关图
  2. > acf(x.dif)
  3. >

自相关图

从自相关图中可以看出,一阶滞后后的自相关阶数均在 2 倍标准差范围之内,显示出很强的短期相关性,所以可以认为 1 阶差分后序列平稳,相关系数 1 阶截尾.

  1. #考察偏自相关图
  2. > pacf(x.dif)
  3. >

偏自相关图

从偏自相关图中看出,0 阶滞后后,偏相关阶数均在 2 倍标准差范围之内,偏自相关系数 0 阶截尾.

综合acfpacf,确定模型为 .

  1. # arima(0,1,1) 模型拟合
  2. > x.fit <- arima(x,order = c(0,1,1))
  3. > x.fit
  4. Call:
  5. arima(x = x, order = c(0, 1, 1))
  6. Coefficients:
  7. ma1
  8. 0.7355
  9. s.e. 0.1545
  10. sigma^2 estimated as 61.95: log likelihood = -125.74, aic = 255.49
  11. >

Coefficients参数值可以得到拟合模型的表达式为

  1. #残差白噪声检测,考察拟合效果
  2. > for(i in 1:2) print(Box.test(x.fit$residuals,lag = 6*i))
  3. Box-Pierce test
  4. data: x.fit$residuals
  5. X-squared = 3.3169, df = 6, p-value = 0.7681
  6. Box-Pierce test
  7. data: x.fit$residuals
  8. X-squared = 6.0284, df = 12, p-value = 0.9146
  9. >

对模型拟合后的残差做白噪声检测,从p-value = 0.9146可以看出,残差是白噪声非常显著,说明 arima(0,1,1)模型拟合的很好.


模型预测

模型建立好之后,我们就可以用来预测了.在最小均方误差预测原理下,模型和 模型的预测方法非常相似.

模型的一般表示方法为:


模型一样,也可以用随机扰动项的线性函数表示:

式中, 的值由如下等式确定:
如果把 记为广义自相关函数,有

容易验证, 的值满足如下递推公式:

式中,

那么,的真实值为:

由于 的不可获得性,所以 的估计值只能为:


真实值与预测值之间的均方误差为:

要使均方误差最小,当且仅当
所以在均方误差最小原则下, 期预测值为:

期预测误差为:

真实值等于预测值加上预测误差:

期预测误差的方差为:


下面依然是以中共农业实际国民收入指数序列作为期 10 年的预测来演示:

  1. #引入必要的时间序列预测包
  2. > library(zoo)
  3. > library(forecast)
  4. # arima 模型拟合
  5. > d <- read.table("data/file17.csv",",",header = T)
  6. > x <- ts(d$index, start = 1952)
  7. > x.fit <- arima(x,order = c(0,1,1))
  8. # 模型预测
  9. > x.fore <- forecast(x.fit,h = 10)
  10. > x.fore
  11. Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
  12. 1989 283.0082 272.9213 293.0950 267.5816 298.4347
  13. 1990 283.0082 262.8045 303.2118 252.1094 313.9070
  14. 1991 283.0082 256.2756 309.7407 242.1243 323.8921
  15. 1992 283.0082 251.0540 314.9624 234.1384 331.8779
  16. 1993 283.0082 246.5731 319.4432 227.2856 338.7308
  17. 1994 283.0082 242.5860 323.4304 221.1878 344.8286
  18. 1995 283.0082 238.9582 327.0581 215.6396 350.3767
  19. 1996 283.0082 235.6073 330.4090 210.5149 355.5015
  20. 1997 283.0082 232.4782 333.5382 205.7292 360.2871
  21. 1998 283.0082 229.5318 336.4845 201.2231 364.7932
  22. # 绘制预测图
  23. > plot(x.fore)
  24. >

arima预测图

arima()函数用来拟合模型,forecast()函数利用拟合好的模型来进行预测,具体的用法可以使用 help(arima)以及 help(forecast)命令查看帮助文档.

模型中,如果有部分系数缺省了,那么该模型称为疏系数模型,记为 ,其中 ,以及分别表示自相系数的非零阶数和移动平滑部分的非零阶数.

在 R 中,arima()函数的transform.pars参数和fixed参数用来调节疏系数模型的参数,详情请help(arima)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注