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

如何在ccgarph(R)包中指出初始值?,r,time-series,non-linear-regression,mle,multivariate-testing,R,Time Series,Non Linear Regression,Mle,Multivariate Testing,我想在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, mod

我想在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

   }
#计算(E)CCC-GARCH(1,1)mdoel的似然值
loglik.eccc
我想在R中使用ccgarch包。首先,这个包中的初始值是什么

我非常肯定没有默认参数。如果您试图在不指定
param
的情况下运行代码,您应该会得到一些大致的信息(注意:我使用命令
loglik.dcc
):

如何指定这些值

我建议您查看ccgarch包文档中的示例。虽然没有为
loglik.eccc
给出示例,但是为
loglik.dcc
提供了一个很好的示例

可以访问文档。第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)
可用于计算
loglik.dcc

Error in loglik.dcc(dvar = my.df, model = "diagonal") : 
argument "param" is missing, with no default
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页的期刊文章中对这一点进行了很好的阐述。)

简而言之:您可以在上述估计参数中看到,它们都在
0
范围内。如果你想做点什么,就根据这些参数来确定自己的方向

2。根据您的数据进行评估,并按照上述示例使用。

请注意,该示例适用于3系列。如果使用更多/更少尺寸,则需要调整初始参数。
ccgarch2
e包。G将允许您在不设置初始值的情况下进行估计。它将随机生成它们

此外,如何使用loglik.eccc并为其定义param


上面的例子/叙述应该包括这一点。

对不起,你把我弄丢了。因此,您使用
eccc.estimation
估算了一个模型,不想使用估算给您的参数?我想使用这个参数,但是,我如何确定适当的初始值?啊,现在我知道了。因此,您想知道在如何设置初始参数方面是否有某种最佳实践。遗憾的是,我认为没有。你可以看看。在第10页和第12页,他们讨论了这个主题(例如,在第10页,他们指出了如何在实践中设置初始参数)。
loglik.dcc(dcc.results$out[1,], dcc.data$eps, model="diagonal")
[1] 6316.604