2016-05-13 100 views
0

我正在開發一個向量自迴歸模型(VAR)時間序列模型在R模型規範包括所謂的內生變量的矩陣(xts類)「endog,」和外生變量的矩陣(也xts類)被稱爲「exog 「。該數據是季節性的,我想季節性預測,所以我還指定「季= 12」,因爲數據是每月。所以我的R代碼執行var模型是:[R VAR預測既需要外生變量列表和虛擬變量列表,如果我的規範不包括虛擬變量?

fit <- var(endog, p = 1, season = 12, type = 'const', exogen = exog) 

此代碼運行平穩。但現在我想預測未來24個時期的數據。所以我預測的代碼是:

predictions <- predict(fit, exo.fcst = exog_future, n.ahead = 24, ci = 0.95) 

其中「exog_future」是一個矩陣相同的變量exog(也xts類),但包括24周未來期間進行預測。 (我試過兩個版本:一個與歷史數據exog加上下一個24期的新的數據,而其他版本只包括了24期)

我收到以下錯誤信息:

誤差在predict.varest(VAR(endog,p = 1,季節= 12,類型= 「常量」,: 否矩陣供給dumvar,但對象varest包含外生變量

顯然,R期望一個除了外生變量之外,虛擬變量矩陣除非R將「季節= 12」規範視爲ma虛擬變量的trix,模型規範中不包含虛擬變量,爲什麼它現在預期虛擬變量?如果它確實將季節性規範視爲虛擬變量,那麼我會在預測代碼中添加「季節= 12」。我收到了同樣的錯誤信息。

我明白,如果模型包括外生變量,那麼我必須在預測的代碼提供未來值這些。我也明白,如果我提供虛擬變量,那麼基於同樣的原因,這個預測也需要這些虛擬變量的未來值。它們是外生變量,只是二元變量。

因此,當模型規範不包含虛擬變量時,R期望我爲「dumvar?」提供什麼?

+0

我可能已經想通了,但解決的辦法是不合邏輯的。也許有人可以驗證解決方案是否正確。 – Joe

+0

我可能已經想通了,但解決的辦法是不合邏輯的。也許有人可以驗證解決方案是否正確。當我將未來外生變量的矩陣提交爲_dumbvar = matrix_of_future_exogenous_variables_時,錯誤消失。提交這些變量是合乎邏輯的,因爲預測需要它們的值來計算內生變量的預測值。將它們稱爲_dumbvar_是沒有意義的,因爲它們不是二元的。它們是連續變量,例如_unemployment_rate_。請注意,矩陣是xts格式,因爲這是時間序列。 – Joe

+0

對不起,重複。我試圖立即編輯,但系統不會允許這樣做,因爲我花了超過5分鐘來完成編輯。也許這個限制可以在鼓勵周到解決方案的網站上刪除。 – Joe

回答

0

事實上,當你在你的訓練外生價值,你必須包括未來的外生值exog_future作爲函數predict()參數爲dumvar,你的情況,你應該設置dumvar=exog_future使

predictions <- predict(fit, dumvar = exog_future, n.ahead = 24, ci = 0.95)

在R文檔http://127.0.0.1:26594/library/vars/html/predict.html它說功能predict()的主要參數是object,n.ahead,cidumvar,所以爲了避免混淆,您可能應該忽略參數exo.fcst。這很令人困惑,因爲exo.fcst似乎是exog_future的正確參數,但在實踐中,您應該始終使用dumvar來代替,而不是exo.fcst