向量自回歸模型(VAR)及其R語言實現

2021-08-20 02:03:08 字數 4092 閱讀 7969

自行google,很詳細,也很簡單

主要是**分析和內生變數間影響狀況分析。

(個人拙見,不是標準模板)

選擇合適的變數

granger因果檢驗,進一步觀察變數間的關聯性,最好做雙向檢驗,不過也有人說單向就足夠了,這就人之間人智者見智了

選擇var模型滯後階數

擬合var模型

脈衝響應分析

方差分解

**分析

r中有個叫「vars」的package,主要用來做向量自回歸分析,所以先安裝並載入該包:

install.packages(vars)

library

(vars)

1.選擇變數根據理論分析選擇出相關聯的變數,不多說。

2.granger因果檢驗

vars包裡面有個專門做格蘭傑因果檢驗的函式:

causality(x, cause = null, vcov.=null, boot=false, boot.runs=100)
另外還有乙個適用於普通線性回歸模型的granger test的函式:

grangertest(x, y, order = 1, na.action = na.omit, ...)
這兩個函式最直接的區別在於,第二個不用擬合var模型即可使用,而第乙個必須在擬合var模型之後使用。

3.選擇合適的滯後階數

varselect(y, lag.

max=

10, type

= c("const", "trend", "both", "none"),

season =

null, exogen =

null)

函式會return乙個結果,分別是根據aic、hq、sc、fpe四個資訊準則得出的最優階數。

4.擬合var模型

var(x, y = null, na.rm = false, use)
5.診斷性檢驗也就是檢驗模型的有效性。

系統平穩性:

stability(x, type

= c("ols-cusum", "rec-cusum", "rec-mosum",

"ols-mosum", "re", "me", "score-cusum", "score-mosum",

"fluctuation"), h =

0.15, dynamic =

false, rescale =

true)

這裡使用「ols-cusum」,它給出的是殘差累積和,在該檢驗生成的曲線圖中,殘差累積和曲線以時間為橫座標,圖中繪出兩條臨界線,如果累積和超出了這兩條臨界線,則說明引數不具有穩定性。

結果如下圖:

說明系統穩定。

正態性檢驗:

normality.test(x, multivariate.only = true)
serial.test(x, lags.pt = 16, lags.bg = 5, type = c("pt.asymptotic",

"pt.adjusted", "bg", "es") )

6.脈衝響應分析脈衝響應分析,直白的來說就是對於某一內生變數對於殘差衝擊的反應。具體而言,他描述的是在隨機誤差項上施加乙個標準差大小的衝擊後對內生變數的當期值和未來值所產生的影響。

irf(x, impulse = null, response = null, n.ahead = 10,

ortho = true, cumulative = false, boot = true, ci = 0.95,

runs = 100, seed = null, ...)

示例:

var

var(timeseries,lag.

max=

2)var

.irf

plot(var

.irf)

結果:

解讀:

標題欄說明,這是y_ln對各個變數(包括y_ln自身)的脈衝響應(impulse response),其中可以看出來自y_ln的正向衝擊,來自fdi_ln的正向衝擊、來自industry_ln的衝擊不斷減小到負向。其餘變數的衝擊較小。

7.方差分解

var模型的應用,還可以採用方差分解方法研究模型的動態特徵。方差分解是進一步評價各內生變數對**方差的貢獻度。方差分解是分析**殘差的標準差由不同新息的衝擊影響的比例,亦即對應內生變數對標準差的貢獻比例。

fevd(x, n.ahead=10, ...)
示例:

var

var(timeseries,lag.

max=

2)fevd1

5)$y_ln

結果:

y_ln reer_ln m0_ln cpi_ln retail_ln fdi_ln industry_ln

[1,] 1.0000000 0.000000000 0.0000000 0.00000000 0.00000000 0.00000000 0.00000000

[2,] 0.5660281 0.004363083 0.3085364 0.01686071 0.01356081 0.06509447 0.02555642

[3,] 0.5411924 0.009721985 0.2755711 0.01899613 0.07313395 0.05837871 0.02300568

[4,] 0.5259530 0.020262020 0.2783238 0.01870045 0.06689414 0.06883620 0.02103032

[5,] 0.5268243 0.036825419 0.2697744 0.01855353 0.06276992 0.06550223 0.01975014

解讀:

例子中選取的是y_ln變數的方差分解結果,如果不加『$y_ln』,則會return全部變數的結果。

最左邊的是滯後期數,一共5期,結果表明當滯後期為1時,其自身對**方差的貢獻率為100%,用人話講就是自身其變化。隨著滯後期增加,y_ln的貢獻率下降,其他變數逐漸增加。不管怎麼變化,每一行(也就是每一期)各個變數的貢獻率之和都為1。

8.模型**

沒什麼好說的,舉例示之。

var.predict

var.predict

結果:

$y_ln

fcst lower upper ci

[1,] 8.335729 8.208656 8.462802 0.1270727

[2,] 8.284560 8.076325 8.492795 0.2082349

[3,] 8.299723 8.078930 8.520516 0.2207930

fcst:點估計值

lower:區間估計下界

upper:區間估計上界

ci:置信區間

9.**結果視覺化

除了直接使用plot()函式繪圖以外,vars包有乙個fanchart()函式可以繪製扇形圖,示意圖:

R語言線性模型glm logistic回歸模型

r語言廣義線性模型glm 函式 glm formula,family family.generator,data,control list formula資料關係,如y x1 x2 x3 family 每一種響應分布 指數分布族 允許各種關聯函式將均值和線性 器關聯起來。常用的family bino...

R語言呼叫rlm函式生成穩建回歸模型

說明 資料中的孤立點會對回歸直線的正確性帶來一定的影響,除了去掉孤立點,我們也可以用穩建回歸來處理包括孤立點的資料集。資料準備 準備好包含孤立點,並且孤立點會影響回歸模型準確度的資料集。使用quartet資料集。library car data quartet 操作plot quartet x,qu...

零膨脹負二項回歸模型的使用 R語言

近期,需要使用零膨脹負二項回歸模型。因此,找到r語言中的乙個包 pscl。install.packages pscl 該軟體發表於下面的期刊。zeileis a,kleiber c,jackman s.regression models for count data in r j journal o...