1

我想在R中使用ccgarch包。首先,這個包中的初始值是什麼?我怎樣才能指定這些值?如何在(R)的ccgarph包中指示初始值?

此外,如何使用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 

    } 

回答

1

我想在所有的R.首先使用ccgarch包,什麼是這個包的初始值?

我很肯定沒有默認參數。如果您嘗試運行代碼,而無需指定param你應該得到沿線的東西(注:我這樣做是用命令loglik.dcc):

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

如何指定這些值?

我建議你查看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的this期刊論文中非常好地解釋)。

In簡而言之:你可以在上面估計的參數中看到它們都在範圍0 < a, A and B < 1。如果你想找點東西,可以定位這些參數。

2.根據您的數據估算它們,並按照上例所示使用它們。

請注意,示例是針對3個系列的。如果使用更多/更少的尺寸,則需要調整初始參數。 ccgarch2包e。 G。將允許您在不設定初始值的情況下進行估算。它會隨機生成它們。

此外,如何使用loglik.eccc併爲其定義param?

這應該由上面的示例/旁白覆蓋。

+1

對不起,你失去了我。所以你用'eccc.estimation'估計了一個模型,並且不想使用估計給你的參數? – Numb3rs

+0

我想要使用這個參數,但是,如何確定合適的初始值? –

+1

啊,現在我明白了。所以你想知道如何設置你的初始參數是否有某種最佳實踐。可悲的是,我不認爲這是事實。你可以看看[本文](http://faculty.washington.edu/ezivot/research/practicalgarchfinal.pdf)。在第10頁和第12頁,他們討論了這個話題(第10頁),例如他們說明了在實際中如何設置初始參數。 – Numb3rs