2016-12-01 36 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