library(ccgarch)
set.seed(123)
# Simulating data from the original DCC-GARCH(1,1) process
nobs <- 1000; cut <- 1000; nu <- 8
a <- c(0.003, 0.005, 0.001)
A <- diag(c(0.2,0.3,0.15))
B <- diag(c(0.75, 0.6, 0.8))
uncR <- matrix(c(1.0, 0.4, 0.3, 0.4, 1.0, 0.12, 0.3, 0.12, 1.0),3,3)
ini.dcc <- c(0.01,0.98)
# for normally distributed innovations
dcc.data <- dcc.sim(nobs, a, A, B, uncR, ini.dcc, model="diagonal")
dvar=dcc.data$eps
# Estimating a DCC-GARCH(1,1) model
dcc.results <-
dcc.estimation(inia=a, iniA=A, iniB=B, ini.dcc=ini.dcc,dvar=dvar, model="diagonal")
# Parameter estimates and their robust standard errors
dcc.results$out
# dcc alpha dcc beta
#estimates
0.013433128 0.96841451
#std.err 0.005989098 0.01967094
# first stage optimisation
first.stage <- dcc.estimation1(dvar, a, A, B, model="diagonal", method="BFGS")
dvar <- as.matrix(dvar)
nobs <- dim(dvar)[1]
ndim <- dim(dvar)[2]
In <- diag(ndim)
tmp.para <- c(first.stage$par, In[lower.tri(In)])
estimates <- p.mat(tmp.para, model="diagonal", ndim=ndim)
esta <- estimates$a
estA <- estimates$A
estB <- estimates$B
h <- vector.garch(dvar, esta, estA, estB) # estimated conditional variances
std.resid <- dcc.data$eps/sqrt(h) # std. residuals
# The 2nd step DCC estimation
# second stage optimisation
resta <- rbind(c(-1, -1), diag(2)) #
The restrictions are alpha+beta =< 1, andalpha,beta>= 0
restb <- c(-1, 0, 0)
second.stage <-
constrOptim(theta=ini.dcc, f=loglik.dcc2, gr=NULL, ui=resta, ci=restb, mu=1e-5, dvar=std.resid)
second.stage
#$par
#[1] 0.01342088 0.96841959
######
######
哈哈!眼花了
常用R,以为你是要用R作DCC-GARCH
原来你是要求Rt & Qt,那倒不难.