如何在 (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?
上面的示例/叙述应该涵盖这一点。
我想在 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?
上面的示例/叙述应该涵盖这一点。