我知道的有两个程序包可以做DCC,rmgarch和ccgarch。我这里贴上rmgarch的代码:
data <- read.csv("data.csv",header = T) #data.csv中有三个收益率数据,长度为1767个数据
library(rmgarch)
*下面这行表示指定每个单变量GARCH模型的特性,这里设置为均值为c,普通GARCH(1,1)-t分布
garch11.spec <- ugarchspec(mean.model = list(armaOrder=c(0,0)),variance.model = list(garchOrder=c(1,1),
model="sGARCH"),distribution.model = "std")
dcc.garch11.spec <- dccspec(uspec=multispec(replicate(2,garch11.spec)),dccOrder=c(1,1),distribution="mvt")
id <- seq(from=2,to=3534,by=2) #方便后续提取数据
dcc.fit12 <- dccfit(dcc.garch11.spec,data=data[,1:2]) #对data中的第1,2列数据进行DCC估计
plot(dcc.fit12) #这里有几个图可以选择,输入4就可以看到动态相关系数,或者直接输入命令plot(dcc.fit12,which=4)
#下面进行动态相关系数的提取
a12 <- dcc.fit12@mfit$R #dcc得到的是S4类,所以需要用@提取,得到的a12是一个列表,是同期的相关系数2*2
a12 <- as.data.frame(a12) #将列表转化为数据框 2*3534
a12 <- t(a12) #转置,得到3534*2,每一列数据基本是一样的
a12 <- a12[,1] #删掉其中一列,剩余的一列中有1767个1(相关系数本身)
a12 <- a12[id] #这里a12的奇数是1,偶数是相关系数,所有利用id提取。如果奇数是相关系数,偶数是1,可以类比进行
plot(a12,type="l",col="red") #到此结束了,可以将此图和上面plot(dcc.fit12,which=4)的结果进行对照
|