从R中的拟合模型中保存或提取方差协方差矩阵输出

时间:2016-01-04 15:25:52

标签: r optimization forecasting

我有以下可重现的代码。

library(zoo)
library (rugarch)
library(rmgarch)
data("EuStockMarkets")
EuStockLevel <- as.zoo(EuStockMarkets)[,c("DAX","CAC","FTSE")]
EuStockRet <- diff(log(EuStockLevel))

## GARCH-DCC
    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(3, uspec) ),  dccOrder = c(1,1),  distribution = "mvnorm")
    fit1 = dccfit(spec1, data = EuStockRet, fit.control = list(eval.se=T))

#Forecasting 
    dcc.focast=dccforecast(fit1, n.ahead = 1, n.roll = 0)
    print(dcc.focast)

输出如下: -

*---------------------------------*
*       DCC GARCH Forecast        *
*---------------------------------*

Distribution         :  mvnorm
Model                :  DCC(1,1)
Horizon              :  1
Roll Steps           :  0
-----------------------------------

0-roll forecast: 
, , 1

       [,1]   [,2]   [,3]
[1,] 1.0000 0.7472 0.6790
[2,] 0.7472 1.0000 0.6897
[3,] 0.6790 0.6897 1.0000

如何将预测矩阵提取或保存为对象,以便我可以使用协方差矩阵进行投资组合优化?

谢谢。

1 个答案:

答案 0 :(得分:3)

您创建的dcc.focast对象是S4对象。默认情况下,print会调用其show方法,该方法只会显示摘要。

您可以使用?"DCCforecast-class"中描述的S4方法调用来访问对象中的每个元素(请注意双引号)。我认为您想要的是rcov(dcc.focast),但可能是rcor

您还可以使用slot @mforecastdcc.focast@mforecast访问多变量预测列表,您可以通过添加括号来获取子集:dcc.focast@mforecast[1]