平稳VAR模型一

knitr::opts_chunk$set(echo = TRUE, message = F, warning = F)

Tsay书的第一章通过上两篇得到总结,主要目的是清楚多元模型的数据结构和模型目标。第二章用以了解 Stationary VAR 时间序列的基本知识,主要包括:

  • 模型成分和结构
  • 平稳性特征/条件
  • 模型测量
  • 模型筛选
  • 预测

总体的,一个VAR(p)表达与AR(p)类似:

zt=ϕ0+i=1pϕizti+at

参见上篇详细表达。 值得注意的是,VAR(p) 的 p 取值于最大lag, 如一个观测对象数量为2的VAR(2)模型, 可以由一个AR(1)和一个AR(2)模型组成, 如下, 例子中z2,t1如果不能为z_{1t} 的预测提供有效信息, 依照Granger
Causality ϕ1,12=0, 原因是它不能提高预测的准确性。

z1t=ϕ10+ϕ1,11z1,t1+ϕ1,12z2,t1+a1tz2t=ϕ20+ϕ1,21z1,t1+ϕ1,22z2,t1+a2t

另外,现实中P的值都很小,以下在尽量不失总体性的情况下以如下三元VAR(2)模型为例子。 对 VAR(2) 模型结构和成分分析主要考虑moment分析,平稳性, MA变形以及单元序列变形三方面。

z1tz2tz3t=530+0.470.350.470.210.340.2300.470.23z1,t1z2,t1z3,t1+00.190.300.180000z1,t1z2,t1z3,t1+a1ta2ta3t,withΣa=0.2850.0260.0690.0260.2870.1370.0690.1370.357.

本篇仅考虑前两个Monment,即均值和协方差,公式和计算过程如下。

  • 均值

μ=(Ikϕ1ϕ2)1ϕ0

  • 方差和前p-1个lag 的协方差矩阵:

vec(Γ0)=[I(kp)2ΦΦ]1vec(Γb)with:Φ=ϕ1I00ϕ20Iϕp100Iϕp000,andΓb=[Γa0k0k0k]generally,Γ=i=1pϕiΓi>0

使用上述VAR(2)数值进行如下计算

library(MTS)
p0 = matrix(c(5, 3, 0), 3, 1)
p1 = matrix(c(.47, -.35, .47, .21, .34, .23, 0, .47, .23), 3, 3)
p2 = matrix(c(0,-.19, .3, 0, .18, 0, 0,0,0),3,3)
sig = matrix(c(.285, .026, .069,.026,.287,.137,.069,.137,.357),3,3)
k =  nrow(sig)
Ik= diag(k)
mu = solve(Ik - p1 - p2) %*% p0
rownames(mu) = c("z1","z2","z3")
colnames(mu) = c(mean)
mu
zt = VARMAsim(30000, arlags = c(1,2), phi = cbind(p1,p2), cnst = c(p0),
              sigma = sig, set.seed(100))
meansm = matrix(apply(zt$series, 2, mean), nrow =1) 
"mean throung simulation"
meansm
P1 = diag(ncol(p1))
P2 = P1 * 0
PR1 = cbind(p1, p2)
PR2 = cbind(P1, P2)
P = rbind(PR1, PR2)
P
G1 = matrix(0, nrow(sig),ncol(sig))
G2 = G1
G3 = G1
GR1 = cbind(sig, G1)
GR2 = cbind(G2, G3)
G = rbind(GR1, GR2)
G
k = 3
p = 2
nVI = (k*p)^2
VI = diag(nVI)
VKP = kronecker(P, P)
G0 = solve(VI - VKP) %*% matrix(as.numeric(G), ncol = 1)
nG = length(G)^0.5
GM = matrix(G0, nrow = nG)
g0 = GM[1:nrow(sig), 1:ncol(sig)]
g1 = GM[1:nrow(sig), (ncol(g0)+1):ncol(GM)]
g2 = p1 %*% g1 + p2 %*% g0
GamaM = cbind(g0, g1, g2)
rownames(GamaM) = c("z1","z2","z3")
colnames(GamaM) = paste("L", rep(c(1,2,3),  3), rep(c(0,1,2),  each =3), sep = "")
GamaM
sm = diag(diag(g0))
se = sm^0.5
s = solve(se)
rho0 = s %*% g0  %*% s
rho1 = s %*% g1  %*% s
rho2 = s %*% g2  %*% s
RohM = cbind(rho0, rho1, rho2)
dimnames(RohM) = dimnames(GamaM)
RohM
zt = zt$series
nr = nrow(zt)
zt1 = zt[1: (nr - 2),]
zt2 = zt[2:(nr -1),]
zt3 = zt[3:nr,]
Rohsim = cbind(cor(zt), cor(zt2,zt1), cor(zt3, zt1))
"check throung simulation, outcomes differ somehow from the parameters's one if T is small"
Rohsim 

Quelle

Rmarkdwon版本
Tsay, Ruey S(2014): *Multivariate Time Series Analysis
With R and Financial Applications*, Chapter 2.


版权声明:本文为tonyhxhd原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。