Построение динамической матрицы смежности в R - PullRequest
0 голосов
/ 28 мая 2018

Я использую динамические условные корреляции для построения динамической матрицы смежности.Используя DCC, я рассчитал динамические корреляции в R. Данные (R) - это ежедневная доходность капитала за 2004-2017 гг. Для финансовых учреждений.Вот полный код для создания динамических корреляций.

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

1 Ответ

0 голосов
/ 12 июня 2018

Вы можете создать цикл, попробуйте это:

for (i in 1:2954){
  assign(paste("mat", i, sep=""), rcor(fit,type="R")[,,i])
} 

2954 относится к периодам времени, которые вы хотите создать.Вы можете настроить, как вам нравится.

...