在R中构建动态邻接矩阵
Constructing dynamic adjacency matrix in R
我正在使用动态条件相关来构造动态邻接矩阵。
使用 DCC,我计算了 R 中的动态相关性。数据 (R) 是金融机构 2004-2017 年的每日权益 returns。这是生成动态相关性的完整代码。
spec=ugarchspec(mean.model=list(armaOrder=c(1,1)),variance.model=list(garchOrder=c(1,1), model="gjrGARCH", variance.targeting=TRUE))
spec = multispec(replicate(m, spec))
mspec=dccspec(uspec = spec)
fit = dccfit(mspec, dat=R, solver=c("solnp","solnp"), solver.control=list(trace=1))
rR = rcor(fit)
现在想编译每个时间段的动态邻接矩阵。
使用下面的代码,我可以一次计算邻接矩阵,但不能动态计算。
adjacency=rcor(fit, type="R")[,,'2015-01-02']
dim(adjacency)
任何人都可以提出建议或让我知道是否有这样做的软件包?
数据如下所示:
> head(R)
ACAS AET AFL AIG AIZ ALL AMTD AON AXP BAC BBT BEN BK BLK BRKB C CB CI CINF CMA
2004-02-09 24.2511 17.783 40.11 1203.455 24.47 46.31 16.74 24.80 46.4897 40.840 37.00 18.9467 33.3793 59.22 60.24 491.5 44.58 18.283 39.7279 56.59
2004-02-10 24.2061 18.013 40.62 1231.435 24.35 46.64 16.40 24.92 46.2622 40.810 37.41 18.9667 33.7821 59.85 61.24 489.2 44.35 18.100 39.9637 56.70
2004-02-11 24.8816 17.900 40.70 1245.676 24.25 47.04 16.93 25.37 47.0150 40.995 37.50 19.6567 33.7821 60.00 61.14 497.4 44.67 18.077 39.7370 57.98
2004-02-12 25.0693 18.700 40.43 1255.058 24.68 46.57 16.81 25.74 46.6998 40.825 37.44 19.5300 34.2379 59.55 61.20 495.1 45.08 17.830 39.6825 57.64
2004-02-13 25.4746 19.375 40.26 1251.875 24.70 46.73 16.72 25.79 46.9624 40.785 37.37 19.4833 34.5453 58.74 61.27 494.9 45.14 17.683 39.4104 57.58
2004-02-17 26.0450 19.705 41.17 1258.577 24.60 46.65 17.17 26.27 46.9887 40.930 37.58 19.7633 34.8209 59.89 61.44 499.0 44.80 18.170 39.9002 57.58
你可以创建一个循环,试试这个:
for (i in 1:2954){
assign(paste("mat", i, sep=""), rcor(fit,type="R")[,,i])
}
2954 指的是您要创建的时间段。你可以随意调整。
我正在使用动态条件相关来构造动态邻接矩阵。 使用 DCC,我计算了 R 中的动态相关性。数据 (R) 是金融机构 2004-2017 年的每日权益 returns。这是生成动态相关性的完整代码。
spec=ugarchspec(mean.model=list(armaOrder=c(1,1)),variance.model=list(garchOrder=c(1,1), model="gjrGARCH", variance.targeting=TRUE))
spec = multispec(replicate(m, spec))
mspec=dccspec(uspec = spec)
fit = dccfit(mspec, dat=R, solver=c("solnp","solnp"), solver.control=list(trace=1))
rR = rcor(fit)
现在想编译每个时间段的动态邻接矩阵。 使用下面的代码,我可以一次计算邻接矩阵,但不能动态计算。
adjacency=rcor(fit, type="R")[,,'2015-01-02']
dim(adjacency)
任何人都可以提出建议或让我知道是否有这样做的软件包?
数据如下所示:
> head(R)
ACAS AET AFL AIG AIZ ALL AMTD AON AXP BAC BBT BEN BK BLK BRKB C CB CI CINF CMA
2004-02-09 24.2511 17.783 40.11 1203.455 24.47 46.31 16.74 24.80 46.4897 40.840 37.00 18.9467 33.3793 59.22 60.24 491.5 44.58 18.283 39.7279 56.59
2004-02-10 24.2061 18.013 40.62 1231.435 24.35 46.64 16.40 24.92 46.2622 40.810 37.41 18.9667 33.7821 59.85 61.24 489.2 44.35 18.100 39.9637 56.70
2004-02-11 24.8816 17.900 40.70 1245.676 24.25 47.04 16.93 25.37 47.0150 40.995 37.50 19.6567 33.7821 60.00 61.14 497.4 44.67 18.077 39.7370 57.98
2004-02-12 25.0693 18.700 40.43 1255.058 24.68 46.57 16.81 25.74 46.6998 40.825 37.44 19.5300 34.2379 59.55 61.20 495.1 45.08 17.830 39.6825 57.64
2004-02-13 25.4746 19.375 40.26 1251.875 24.70 46.73 16.72 25.79 46.9624 40.785 37.37 19.4833 34.5453 58.74 61.27 494.9 45.14 17.683 39.4104 57.58
2004-02-17 26.0450 19.705 41.17 1258.577 24.60 46.65 17.17 26.27 46.9887 40.930 37.58 19.7633 34.8209 59.89 61.44 499.0 44.80 18.170 39.9002 57.58
你可以创建一个循环,试试这个:
for (i in 1:2954){
assign(paste("mat", i, sep=""), rcor(fit,type="R")[,,i])
}
2954 指的是您要创建的时间段。你可以随意调整。