原文連結:http://tecdat.cn/?p=9368
原文出處:拓端資料部落公衆号
自從Sims(1980)發表開創性的論文以來,向量自回歸模型已經成為宏觀經濟研究中的關鍵工具。這篇文章介紹了VAR分析的基本概念,并指導了簡單模型的估算過程。
單變量自回歸
VAR代表向量自回歸。為了了解這意味着什麼,讓我們首先來看一個簡單的單變量(即僅一個因變量或内生變量)自回歸(AR)模型,其形式為yt=a1yt−1+et。
平穩性
在估算此類模型之前,應始終檢查所分析的時間序列是否穩定,即它們的均值和方差随時間變化是恒定的,并且不顯示任何趨勢行為。
有一系列統計檢驗,例如Dickey-Fuller,KPSS或Phillips-Perron檢驗,以檢驗序列是否穩定。另一種非常常見的做法是繪制序列并檢查其是否圍繞恒定的平均值(即水準線)移動。如果是這種情況,它很可能是穩定的。
自回歸滞後模型
像AR(p)模型一樣,僅憑其自身的滞後對宏觀經濟變量進行回歸可能是一種限制性很大的方法。通常,更合适的假設是還有其他因素。通過包含因變量的滞後值以及其他(即,外生)變量的同期和滞後值的模型來實作這種想法。同樣,這些外生變量應該是穩定的。對于内生變量yt和外生變量xt例如自回歸分布滞後或ADL,模型可以寫成
yt=a1yt−1+b0xt+b1xt−1+et.
這種ADL模型的預測性能可能會比簡單的AR模型更好。但是,如果外生變量也依賴于内生變量的滞後值怎麼辦?這意味着xt也是内生的,還有進一步的空間可以改善我們的預測。
向量自回歸模型
是以,如上所述,VAR模型可以重寫為一系列單獨的ADL模型。實際上,可以通過分别估計每個方程來估計VAR模型。
标準VAR模型的協方差矩陣是對稱的,即,對角線右上角的元素(“上三角”)将對角線左下角的元素(“下三角”)鏡像。這反映了這樣一種想法,即内生變量之間的關系僅反映相關性,并且不允許做出因果關系的陳述,因為在每個方向上的影響都是相同的。
在所謂的結構化 VAR(SVAR)模型的背景下分析了同時因果關系,或更确切地說,是變量之間的結構關系,該模型對協方差矩陣施加了限制 。
在本文中,我考慮VAR(2)過程。
此示例的人工樣本是在R中生成的
set.seed(123) # 由于可複制性的考慮,重置随機數發生器
# 生成樣本
t <- 200 # 時間序列觀察數
k <- 2 # 内生變量數
p <- 2 # 滞後階數
# 生成系數矩陣
A.1 <- matrix(c(-.3, .6, -.4, .5), k) # 滞後系數矩陣1
A.2 <- matrix(c(-.1, -.2, .1, .05), k) # 滞後系數2
A <- cbind(A.1, A.2) # 系數矩陣
# 生成序列
series <- matrix(0, k, t + 2*p) # 帶有0的原始序列
for (i in (p + 1):(t + 2*p)){ # 生成e ~ N(0,0.5)的序列
series[, i] <- A.1%*%series[, i-1] + A.2%*%series[, i-2] + rnorm(k, 0, .5)
}
series <- ts(t(series[, -(1:p)])) # 轉換為時間序列格式
names <- c("V1", "V2") # 重命名變量
plot.ts(series) # 繪制序列

估算值
簡單VAR模型的參數和協方差矩陣的估計很簡單。
為了估計VAR模型,加載并指定資料(
y
)和 模型。
比較
VAR分析中的一個中心問題是找到滞後的階數,以産生最佳結果。模型比較通常基于資訊标準,例如AIC,BIC或HQ。通常,由于是小樣本預測,AIC優于其他标準。但是,BIC和HQ在大型樣本中效果很好 。
可以計算标準資訊标準以找到最佳模型。在此示例中,我們使用AIC:
通過檢視,
summary
我們可以看到AIC建議使用2的階數。
summary(var.aic)
##
## VAR Estimation Results:
## =========================
## Endogenous variables: Series.1, Series.2
## Deterministic variables: none
## Sample size: 200
## Log Likelihood: -266.065
## Roots of the characteristic polynomial:
## 0.6611 0.6611 0.4473 0.03778
## Call:
## VAR(y = series, type = "none", lag.max = 5, ic = "AIC")
##
##
## Estimation results for equation Series.1:
## =========================================
## Series.1 = Series.1.l1 + Series.2.l1 + Series.1.l2 + Series.2.l2
##
## Estimate Std. Error t value Pr(>|t|)
## Series.1.l1 -0.19750 0.06894 -2.865 0.00463 **
## Series.2.l1 -0.32015 0.06601 -4.850 2.51e-06 ***
## Series.1.l2 -0.23210 0.07586 -3.060 0.00252 **
## Series.2.l2 0.04687 0.06478 0.724 0.47018
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 0.4638 on 196 degrees of freedom
## Multiple R-Squared: 0.2791, Adjusted R-squared: 0.2644
## F-statistic: 18.97 on 4 and 196 DF, p-value: 3.351e-13
##
##
## Estimation results for equation Series.2:
## =========================================
## Series.2 = Series.1.l1 + Series.2.l1 + Series.1.l2 + Series.2.l2
##
## Estimate Std. Error t value Pr(>|t|)
## Series.1.l1 0.67381 0.07314 9.213 < 2e-16 ***
## Series.2.l1 0.34136 0.07004 4.874 2.25e-06 ***
## Series.1.l2 -0.18430 0.08048 -2.290 0.0231 *
## Series.2.l2 0.06903 0.06873 1.004 0.3164
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 0.4921 on 196 degrees of freedom
## Multiple R-Squared: 0.3574, Adjusted R-squared: 0.3443
## F-statistic: 27.26 on 4 and 196 DF, p-value: < 2.2e-16
##
##
##
## Covariance matrix of residuals:
## Series.1 Series.2
## Series.1 0.21417 -0.03116
## Series.2 -0.03116 0.24154
##
## Correlation matrix of residuals:
## Series.1 Series.2
## Series.1 1.000 -0.137
## Series.2 -0.137 1.000
仔細觀察結果,我們可以将真實值 與模型的參數估計值進行比較:
# 真實值
A
## [,1] [,2] [,3] [,4]
## [1,] -0.3 -0.4 -0.1 0.10
## [2,] 0.6 0.5 -0.2 0.05
# Extract coefficients, standard errors etc. from the object
# produced by the VAR function
est_coefs <- coef(var.aic)
# 僅提取兩個因變量的系數,并将它們組合為一個矩陣
# 輸出四舍五入的估計值
round(est_coefs, 2)
## Series.1.l1 Series.2.l1 Series.1.l2 Series.2.l2
## [1,] -0.20 -0.32 -0.23 0.05
## [2,] 0.67 0.34 -0.18 0.07
所有估計值都有正确的符号,并且相對接近其真實值。
脈沖響應
一旦我們确定了最終的VAR模型,就必須解釋其估計的參數值。由于VAR模型中的所有變量都互相依賴,是以單個參數值僅提供 有限資訊。為了更好地了解模型的動态行為,使用了脈沖響應(IR)。可以繪制響應變量的軌迹,産生在許多宏觀論文中都可以找到的那些波浪曲線。
在下面的示例中,我們想知道受到沖擊後序列2的行為。指定了我們想要脈沖響應的模型和變量後,我們将時間範圍設定
n.ahead
為20。該圖給出了序列2的響應。
# 計算脈沖響應
# 繪制脈沖響應
plot(ir.1)
請注意,正交選項很重要,因為它說明了變量之間的關系。在我們的示例中,我們已經知道不存在這樣的關系,因為真正的方差-協方差矩陣(或簡稱協方差矩陣)在非對角元素中是對角為零的對角線。但是,由于具有200個觀測值的有限時間序列資料限制了參數估計的精度,是以協方差矩陣的非對角元素具有正值,這意味着 非零同時效應。為了在IR中排除這種情況,我們設定了
ortho = FALSE
。結果是,脈沖響應在周期0中從零開始。 也可以嘗試另一種方法并進行設定
ortho = TRUE
,那麼繪圖從零開始。
要了解這一點,還可以計算并繪制累積脈沖響應函數,以了解 總體長期影響:
# 計算脈沖響應
# 繪圖
plot(ir.2)
我們看到,盡管序列2對序列1中的 反應在某些時期是負面的,但總體效果卻是顯着正面。
最受歡迎的見解
1.在python中使用lstm和pytorch進行時間序列預測
2.python中利用長短期記憶模型lstm進行時間序列預測分析
3.使用r語言進行時間序列(arima,指數平滑)分析
4.r語言多元copula-garch-模型時間序列預測
5.r語言copulas和金融時間序列案例
6.使用r語言随機波動模型sv處理時間序列中的随機波動
7.r語言時間序列tar門檻值自回歸模型
8.r語言k-shape時間序列聚類方法對股票價格時間序列聚類
9.python3用arima模型進行時間序列預測