如何在 (R) 的 ccgarph 包中指示初始值?

How can I indicate initial values in ccgarph package of (R)?

我想在 R 中使用 ccgarch 包。首先,这个包中的初始值是什么?我如何指定这些值?

此外,如何使用loglik.eccc并为其定义param?例如,当我有 param=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14) 时,此参数不会更改,并且我有 param.

之前的默认值
# computing a likelihood value for the (E)CCC-GARCH(1,1) mdoel
   loglik.eccc <- function(param, dvar, model){
      nobs <- dim(dvar)[1]
      ndim <- dim(dvar)[2]
      para.mat <- p.mat(param, model, ndim)
      a <- para.mat$a
      A <- para.mat$A
      B <- para.mat$B
      R <- para.mat$R

      # check if R is positive definite
      eigenR <- eigen(R)$values
      if(max(abs(R[lower.tri(R)]))>1.0||min(eigenR)<0||!is.double(eigenR)){
         R <- diag(ndim)
      }
      h <- vector.garch(dvar, a, A, B)
      z <- dvar/sqrt(h)
      lndetR <- log(det(R))
      invR <- solve(R)
      lf <- -0.5*nobs*ndim*log(2*pi) - 0.5*sum(log(h)) - 0.5*nobs*lndetR - 0.5*sum((z%*%invR)*z)
      -lf

   }

I want to use ccgarch package in R. First of all, What are initial values in this package?

我很确定没有默认参数。如果你尝试 运行 你的代码而不指定 param 你应该得到一些东西(注意:我用命令 loglik.dcc 做了这个):

Error in loglik.dcc(dvar = my.df, model = "diagonal") : 
argument "param" is missing, with no default

How can I specify these values?

我建议您查看 ccgarch 包文档中的示例。虽然没有给出 loglik.eccc 的示例,但是 loglik.dcc.

有一个很好的示例

可以访问文档 here。第 24/25 页的示例如下:

## Not run:
# Simulating data from the original DCC-GARCH(1,1) process
  nobs <- 1000; cut <- 1000
  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)
  dcc.para <- c(0.01,0.98)
  dcc.data <- dcc.sim(nobs, a, A, B, uncR, dcc.para, model="diagonal")

# Estimating a DCC-GARCH(1,1) model
  dcc.results <- dcc.estimation(inia=a, iniA=A, iniB=B, ini.dcc=dcc.para,
  dvar=dcc.data$eps, model="diagonal")
# Parameter estimates and their robust standard errors
  dcc.results$out
# Computing the value of the log-likelihood at the estimates
  loglik.dcc(dcc.results$out[1,], dcc.data$eps, model="diagonal")
## End(Not run)

dcc.results$out 将显示估计的参数:

> dcc.results$out
                   a1         a2          a3         A11       A22        A33          B11        B22        B33   dcc alpha
estimates 0.002390773 0.00477909 0.001010304 0.199707914 0.2738877 0.13370911 0.7644433750 0.61175081 0.82020157 0.018729549
std.err   0.000703168 0.03576364 0.032840012 0.001213087 0.0439388 0.05675561 0.0003626412 0.02548092 0.03398187 0.008090084
            dcc beta
estimates 0.93071563
std.err   0.03659041

你可以用在计算中loglik.dcc:

loglik.dcc(dcc.results$out[1,], dcc.data$eps, model="diagonal")
[1] 6316.604

由此得出结论,您可以:

1.自己设置一个参数向量

您的示例 param=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14) 违反了一些非常重要的模型限制。我强烈建议您阅读更多关于您正在研究的模型的限制(我发现这在所有 GARCH 模型的祖父 Robert Engle 第 160 页的 this 期刊文章中有很好的叙述。)

简而言之:从上面的估算参数可以看出,它们都在0 < a, A and B < 1范围内。如果您有追求,请根据这些参数调整自己。

2。根据您的数据估算它们,并如上例所示使用它们。

请注意,该示例适用于 3 系列。如果您使用 more/less 维度,您将需要调整初始参数。 ccgarch2 包 e。 G。将使您无需设置初始值即可进行估算。它会随机生成它们。

Besides, How can I use loglik.eccc and define param for it?

上面的示例/叙述应该涵盖这一点。