R語言用向量自回歸(VAR)進行經濟數據脈沖響應研究分析


原文鏈接:http://tecdat.cn/?p=9368


 

自從Sims(1980)發表開創性的論文以來,向量自回歸模型已經成為宏觀經濟研究中的關鍵工具。這篇文章介紹了VAR分析的基本概念,並指導了簡單模型的估算過程。 

單變量自回歸

VAR代表向量自回歸。為了理解這意味着什么,讓我們首先來看一個簡單的單變量(即僅一個因變量或內生變量)自回歸(AR)模型,其形式為yt=a1yt−1+etyt=a1yt−1+et。 

平穩性

在估算此類模型之前,應始終檢查所分析的時間序列是否固定,即它們的均值和方差隨時間變化是恆定的,並且不顯示任何趨勢行為。 

有一系列統計檢驗,例如Dickey-Fuller,KPSS或Phillips-Perron檢驗,以檢驗一系列檢驗是否穩定。另一種非常常見的做法是繪制序列並檢查其是否圍繞恆定的平均值(即水平線)移動。如果是這種情況,它很可能是穩定的。 

自回歸滯后模型

像AR(p)模型一樣,僅憑其自身的滯后對宏觀經濟變量進行回歸可能是一種限制性很大的方法。通常,更合適的假設是還有其他因素可以驅動流程。通過包含因變量的滯后值以及其他(即,外生)變量的同期和滯后值的模型來實現這種想法。同樣,這些外生變量應該是固定的。對於內生變量ytyt和外生變量xtxt例如自回歸分布滯后或ADL,模型可以寫成

 

yt=a1yt−1+b0xt+b1xt−1+et.yt=a1yt−1+b0xt+b1xt−1+et.

 

這種ADL模型的預測性能可能會比簡單的AR模型更好。但是,如果外生變量也依賴於內生變量的滯后值怎么辦?這意味着xtxt也是內生的,還有進一步的空間可以改善我們的預測。

向量自回歸模型

 因此,如上所述,VAR模型可以重寫為一系列單獨的ADL模型。實際上,可以通過分別估計每個方程來估計VAR模型。

標准VAR模型的協方差矩陣是對稱的,即,對角線右上角的元素(“上三角”)將對角線左下角的元素(“下三角”)鏡像。這反映了這樣一種想法,即內生變量之間的關系僅反映相關性,並且不允許做出因果關系的陳述,因為在每個方向上的影響都是相同的。 

在所謂的結構化 VAR(SVAR)模型的背景下分析了同時因果關系,或更確切地說,是變量之間的結構關系,該模型對協方差矩陣施加了限制 。 

在本文中,我考慮VAR(2)過程。 

此示例的人工樣本是在R中生成的

set.seed(123) # Reset random number generator for reasons of reproducability

# Generate sample
t <- 200 # Number of time series observations
k <- 2 # Number of endogenous variables
p <- 2 # Number of lags

# Generate coefficient matrices
A.1 <- matrix(c(-.3, .6, -.4, .5), k) # Coefficient matrix of lag 1
A.2 <- matrix(c(-.1, -.2, .1, .05), k) # Coefficient matrix of lag 2
A <- cbind(A.1, A.2) # Companion form of the coefficient matrices

# Generate series
series <- matrix(0, k, t + 2*p) # Raw series with zeros
for (i in (p + 1):(t + 2*p)){ # Generate series with 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)])) # Convert to time series format
names <- c("V1", "V2") # Rename variables

plot.ts(series) # Plot the series

 

估算值

簡單VAR模型的參數和協方差矩陣的估計很簡單。 這些形式化通常已經在用於基本應用程序的標准統計信息包中進行了編程。

為了估計VAR模型,我使用了vars 的軟件包。相關的功能是VAR,它的用法很簡單。 只需要加載包並指定數據(y), 模型 即可。 

 比較

VAR分析中的一個中心問題是找到滯后的次數,以產生最佳結果。模型比較通常基於信息標准,例如AIC,BIC或HQ。通常,由於其有利的小樣本預測功能,AIC優於其他標准。但是,BIC和HQ在大型樣本中效果很好 。

軟件包的VAR功能vars已經可以計算標准信息標准以找到最佳模型。在此示例中,我們使用AIC:

 通過查看,summary(var.aic)我們可以看到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

仔細觀察結果,我們可以將真實值 與模型的參數估計值進行比較:

# True values
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)

# Extract only the coefficients for both dependend variables
# and combine them to a single matrix

# Print the rounded estimates in the console
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)。它們使響應變量對脈沖變量中的一次性沖擊的反應。可以繪制響應變量的軌跡,從而產生在許多宏觀論文中都可以找到的那些波浪曲線。

在R irf中, 可用於獲得脈沖響應功能。在下面的示例中,我們想知道系列2受到沖擊后系列2的行為。指定了我們想要脈沖響應的模型和變量后,我們將時間范圍設置n.ahead為20。該圖給出了系列2的響應。 

# Calculate the IRF

# Plot the IRF
plot(ir.1)

 

請注意,正交選項很重要,因為它說明了變量之間的同時關系。在我們的示例中,我們已經知道不存在這樣的關系,因為真正的方差-協方差矩陣(或簡稱協方差矩陣)在非對角元素中是對角為零的對角線。但是,由於具有200個觀測值的有限時間序列數據限制了參數估計的精度,因此協方差矩陣的非對角元素具有正值,這意味着 非零同時效應。為了在IR中排除這種情況,我們設置了ortho = FALSE。結果是,脈沖響應在周期0中從零開始。 也可以嘗試另一種方法並進行設置ortho = TRUE,這將導致繪圖從零開始。 

 要了解這一點,還可以計算並繪制累積脈沖響應函數,以了解 總體長期影響:

# Calculate impulse response

# Plot
plot(ir.2)

 

我們看到,盡管系列2對系列1中的 反應在某些時期是負面的,但總體效果卻是顯着的正面。

 

 

如果您有任何疑問,請在下面發表評論。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM