前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >时间序列分析这件小事(四)--AR模型

时间序列分析这件小事(四)--AR模型

作者头像
钱塘小甲子
发布2019-01-28 16:07:00
4.2K0
发布2019-01-28 16:07:00
举报
文章被收录于专栏:钱塘小甲子的博客

1.自回归

之前说了,分析时间序列和回归一样,目的都是预测。在回归里面,我们有一元回归于多元回归,在时间序列里面,我们有自回归。与一元、多元一样,我们分为一阶与多阶自回归。其实还是那样的理念,只不过之前是变量与应变量,现在则是存在时滞的序列之间的关系而已。

先来看一下一阶自回归AR(1),也就是,Yt=b*Yt-1+ut。

在一开始我们就讨论了时间序列平稳性的重要程度,那么由这样一个一阶自回归形成的时间序列是否满足平稳性呢?答案是当自回归系数的绝对值小于1的时候,这样的一阶自回归序列是平稳的。

下面,我们就来构造一个满足一阶自回归的时间序列吧。

2.一阶自回归序列生产

我们来生成一个时间序列,其自回归方程如下:

yt = 0.8 * yt-1 + c

其中c是残差项,我们用白噪音,也就是正态分布来表示。具体的R代码如下:

代码语言:javascript
复制
#example 5
set.seed(1234)#设置随机种子
n = 50#序列数量
y1 = rep(0,n);#初始化y1时间序列
for(t in 2:n){#根据自回归方程计算y1序列
  y1[t] = 0.8*y1[t-1] + rnorm(1)
}
plot(y1,type = 'o')#绘制序列图

我们其实还可以使用R语言内置的函数快速完成回归序列的生成:

代码语言:javascript
复制
#example 6
y1  = arima.sim(n = 50,list(ar = 0.8))#R中自带函数,list中为各阶的自回归系数,由于我们只有一阶自回归,所以只有一个0.8
plot(y1,type = 'o')

然后我们看一下其自相关系数的图,很简单,和之前一样,acf(y1)即可。我们得到如下的自相关图。

这里我们可以看出,一阶自相关系数还是比较大的,与我们的模型0.8还算比价接近。如果我们给出的数据更加多的话,这一数值将会更加接近。在这里笔者补充一点,就是上面图中的蓝色虚线的作用。通常,我们认为超过蓝色虚线的自回归系数是显著的,也就是说如果我们做显著性检验的话,往往是能通过的,而没有超过蓝色虚线的那些回归系数,通常是不显著的。

3.AR模型估计

上面我们是自己建立了一个时间序列,那么如果我们现在只有一串时间序列,我们怎么去估计它的模型呢?换句话说,怎么去获得它的自回归方程呢?当然我们可以根据acf函数获得每一个lag的回归系数,然后就获得了一个多阶自回归模型,但是这样并不科学,我们有更加实际的方法。

其实,AR模型估计,说白了,就是线性回归求系数的过程。在线性回归中,我们用的是最小二乘法,在时间序列的AR模型中,我们介绍两种,yulr-walker与ols(即最小二乘法)

代码语言:javascript
复制
#example 7
ar(y1,method = "yule-walker")
ar(y1,method = "ols")

我们能在R中看到如下结果:

我们可以看到这些方法会告诉我们,那些阶数可以选择,自回归系数是多少。

这里,我们要知道,ols方法的精度不高,尽可能还是使用前者。

4.一个用R自带函数的demo

其实,我们上面的这一切,R语言都弄好了,很短的代码就可以实现。我们用一个2阶自回归模型作为例子来演示一下。

模型:yt = 0.7 * yt-1 - 0.5 yt-2 + c

同样的,c是误差项。

代码语言:javascript
复制
y2 = arima.sim(n = 100,list(ar = c(0.7,-0.5)))
plot(y2,type = 'o')
pacf(y2)$ac[1:5]

我们可以看到时间序列及其自回归系数。

这里,我们要区别acf与pacf函数,后者用于多阶的AR,而且第一个直线就是代表一阶滞后的相关系数,而与acf不同,第一个直线代表的是自己与自己的相关系数,当然就是1.当然啦,这只是表面的区别,深入的区别见后面第5部分。

然后我们用R中自带的模型估计函数来估计模型。

代码语言:javascript
复制
arima(y2,order = c(2,0,0))

这样,我们就能看到自回归系数了。如果我们在函数中加入include.mean = F,那么就不会有均值项,也就是显示中的intercept项。

5.acf与pacf

前面提到了一些acf与pacf的区别。其实学过微积分的人都是到偏导数,这里是类似的概念。

我们用acf的时候,会发现,对于一阶的AR模型,二阶滞后序列与原始序列的相关性也挺大的,原因就是yt-2与yt的相关性是由于yt-2与yt-1的相关性间接导致的,我们用acf的时候就没有考虑这一点,而用pacf的时候,则是消除了yt-1对yt-2的间接影响之后来计算yt与yt-2之间的相关性的了。

对比一下就一目了然了。

代码语言:javascript
复制
acf(y1)
pacf(y1)

acf的:

pacf:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年12月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.自回归
  • 2.一阶自回归序列生产
  • 3.AR模型估计
  • 4.一个用R自带函数的demo
  • 5.acf与pacf
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档