2016-12-01 46 views
1

在宏观经济预测最近的网上课程,有模型的锻炼; Tibial模拟时间序列

y(t) = 3.0 + 0.55 y(t-1) + e(t) 

其中e(t)被定义为

et <- c(-1.2138662, -0.2854597, 0.5902700, 0.8285463, -0.9954260, -0.3716332) 

现在我试图做到这一点的R(该课程使用了EViews),但是我没有找到给出的解决方案:第五个元素为5.648。 我想(与此类似blogpost):

y <- rep(NA,6) 
y[1] <- 0 
y[2] <- 3 + 0.55*y[1]+et[1] 
y[3] <- 3 + 0.55*y[2]+et[2] 
y[4] <- 3 + 0.55*y[3]+et[3] 
y[5] <- 3 + 0.55*y[4]+et[4] 
y[6] <- 3 + 0.55*y[5]+et[5] 

然后

y <- rep(NA,6) 
y[1] <- et[1] 
y[2] <- 3 + 0.55*y[1]+et[2] 
y[3] <- 3 + 0.55*y[2]+et[3] 
y[4] <- 3 + 0.55*y[3]+et[4] 
y[5] <- 3 + 0.55*y[4]+et[5] 
y[6] <- 3 + 0.55*y[5]+et[6] 

然后

arima.sim(list(order=c(1,0,0), ar=0.55), n=6, innov=head(et,6)+3) 

然而所有这三种方法得出不同的结果。我想知道这是为什么,恐怕我不了解一些基本的东西。

+0

是的我同意前两种方法必须导致不同的结果。然而,三种方法都没有给出y [5.6] = 5.648,这是练习中给出的解。 –

+0

@Khashaa:这是(解决方案被舍入为三个数字)?你是怎么得到这个的? –

+0

你的第一种方法有错字。在一行中检查'et [i]'项 – Khashaa

回答

1

arima.sim有一个“老化”期以达到平稳。参数n.start设定了这段时间的长度,它的长度必须为ar + ma。对于AR(1)进程,n.start必须至少为1.请注意,如果您未指定n.start,则arima.sim会自动为您计算出合理值。

鉴于n.start(无论是指定的还是自动计算的),arima.sim然后随机抽样n.start创新“老化”。

## innovations of length 6 
et <- c(-1.2138662, -0.2854597, 0.5902700, 0.8285463, -0.9954260, -0.3716332) 

set.seed(0) 
arima.sim(list(order = c(1,0,0), ar = 0.55), n = 6, innov = et, n.start = 1) 
#[1] -0.5192413 -0.5710424 0.2761967 0.9804545 -0.4561760 -0.6225300 

set.seed(1) 
arima.sim(list(order = c(1,0,0), ar = 0.55), n = 6, innov = et, n.start = 1) 
# [1] -1.55841580 -1.14258839 -0.03815361 0.80756181 -0.55126700 -0.67483005 

我们可以消除这种随机性,通过提供一组使用start.innov参数启动创新:因为这个随机过程,你会从一个运行得到不同的结果,另一个是正确的。请注意,这个向量必须有长度n.start

## fixing starting innovation at 0; i.e., `y[0] = 0`, so `y[1] = et[1]`. 
arima.sim(list(order = c(1,0,0), ar = 0.55), n = 6, innov = et, n.start = 1, 
      start.innov = 0) 
# [1] -1.21386620 -0.95308611 0.06607264 0.86488625 -0.51973856 -0.65748941 

现在,比较这最后arima.sim下列要求:

y <- rep(NA, 6) 
y[1] <- et[1] 
y[2] <- 0.55 * y[1] + et[2] 
y[3] <- 0.55 * y[2] + et[3] 
y[4] <- 0.55 * y[3] + et[4] 
y[5] <- 0.55 * y[4] + et[5] 
y[6] <- 0.55 * y[5] + et[6] 

# [1] -1.21386620 -0.95308611 0.06607264 0.86488625 -0.51973856 -0.65748941 

我们所拥有的一切完全可重复的。

以上生成零均值时间序列;如果你想在3的意思是,你自己移动结果+3

y <- y + 3 
+0

这真的很有帮助。它并没有达到我期待的结果(5.648),但现在我明白了原因:第一个元素被设置为et [1],这对我来说非常合理,但不是教师所做的。 –

+0

@KarstenW。 'e < - c(0,et [-1] +3); arima.sim(list(order = c(1,0,0),ar = 0.55),n = 6,innov = e,n.start = 1, start.innov = 0)'你应该接受李哲源的回答。 – Khashaa