【问题标题】:Using for-loop for fitted DCC GARCH model in R在 R 中使用 for 循环拟合 DCC GARCH 模型
【发布时间】:2016-05-07 03:23:52
【问题描述】:

我是 R 的新用户。请帮助我!

我有 8 个资产的 1114 个观察值。例如,我已经为前 1000 个数据点拟合了一个多元 DCC-GARCH 模型,我想对之后的 3 个周期进行 1-ahead 预测,例如

1) Data[1:1000,] In-sample data, forecast for Data[1001,]
2) Data[1:1001,] In-sample data, forecast for Data[1002,]
3) Data[1:1002,] In-sample data, forecast for Data[1003,]

以下是我的可重现代码:-

# load libraries
library(rugarch)
library(rmgarch)
library(FinTS)
library(tseries)
library (fPortfolio)

data(dji30retw)
for (i in 1:3) {
Dat.Initial = dji30retw[, 1:8, drop = FALSE]
Dat <- Dat.Initial[1:(1000+(i-1)), ] 

#Fitting the data
uspec = ugarchspec(mean.model = list(armaOrder = c(0,0)), variance.model = list(garchOrder = c(1,1), model = "sGARCH"), distribution.model = "norm")
spec1 = dccspec(uspec = multispec( replicate(8, uspec)), dccOrder = c(1,1), distribution = "mvnorm")
fit1 <- list()
fit1[[i]] = dccfit(spec1, data = Dat, out.sample = 1, fit.control = list(eval.se=T))

#Out of sample forecasting
dcc.focast <- list()
dcc.focast[[i]]=dccforecast(fit1[[i]], n.ahead = 1, n.roll = 0)
print(dcc.focast[[i]])
}

代码完美运行。我现在可以获得我的 dcc.focast 值。但是为什么会这样,如果我执行

 dcc.focast[[1]]
 NULL

它给了我“NULL”。它不应该产生与循环中的“print(dcc.focast[[i]])”相同的答案吗?

这里的问题,它只给了我 dcc.focast[[3]]。其余为“NULL”。我犯了什么错误?谁能帮忙解释一下?

【问题讨论】:

    标签: r debugging time-series multivariate-testing


    【解决方案1】:

    修改您的代码以在for 之外定义您的列表。在循环内重新定义列表时,您正在删除以前的计算。

    data(dji30retw)
    fit1 <- list()
    dcc.focast <- list()
    for (i in 1:3) {#i=1
      Dat.Initial = dji30retw[, 1:8, drop = FALSE]
      Dat <- Dat.Initial[1:(1000+(i-1)), ] 
    
      #Fitting the data
      uspec = ugarchspec(mean.model = list(armaOrder = c(0,0)), variance.model = list(garchOrder = c(1,1), model = "sGARCH"), distribution.model = "norm")
      spec1 = dccspec(uspec = multispec( replicate(8, uspec)), dccOrder = c(1,1), distribution = "mvnorm")
      fit1[[i]] = dccfit(spec1, data = Dat, out.sample = 1, fit.control = list(eval.se=T))
    
      #Out of sample forecasting
      dcc.focast[[i]]=dccforecast(fit1[[i]], n.ahead = 1, n.roll = 0)
      print(dcc.focast[[i]])
    }
    summary(dcc.focast)
    dcc.focast[[1]]
    
    > summary(dcc.focast)
         Length Class       Mode
    [1,] 1      DCCforecast S4  
    [2,] 1      DCCforecast S4  
    [3,] 1      DCCforecast S4  
    > dcc.focast[[1]]
    
    *---------------------------------*
    *       DCC GARCH Forecast        *
    *---------------------------------*
    
    Distribution         :  mvnorm
    Model                :  DCC(1,1)
    Horizon              :  1
    Roll Steps           :  0
    -----------------------------------
    
    0-roll forecast: 
    , , 1
    
           [,1]   [,2]   [,3]   [,4]   [,5]   [,6]   [,7]   [,8]
    [1,] 1.0000 0.3378 0.3244 0.2383 0.2730 0.5086 0.3470 0.5073
    [2,] 0.3378 1.0000 0.3498 0.5423 0.5910 0.3321 0.2802 0.3658
    [3,] 0.3244 0.3498 1.0000 0.2372 0.2771 0.3479 0.2433 0.3625
    [4,] 0.2383 0.5423 0.2372 1.0000 0.5746 0.2877 0.2303 0.3593
    [5,] 0.2730 0.5910 0.2771 0.5746 1.0000 0.3063 0.2169 0.3101
    [6,] 0.5086 0.3321 0.3479 0.2877 0.3063 1.0000 0.3637 0.4307
    [7,] 0.3470 0.2802 0.2433 0.2303 0.2169 0.3637 1.0000 0.3976
    [8,] 0.5073 0.3658 0.3625 0.3593 0.3101 0.4307 0.3976 1.0000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多