簡體   English   中英

在R中使用for循環擬合DCC GARCH模型

[英]Using for-loop for fitted DCC GARCH model in R

我是R的新用戶。請幫助我!

我有8個資產的1114個觀測值。 例如,我已將多變量DCC-GARCH模型擬合到前1000個數據點,並且希望在3個周期后進行提前1個預測,例如

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”。 我犯了什么錯誤? 有人可以幫忙解釋嗎?

修改代碼以在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM