如何从mgarchBEKK/BEKKs提取BEKK-GARCH的ML估计渐近协方差矩阵?
提取BEKK-GARCH模型ML估计的渐近协方差矩阵
问题描述
我正尝试从BEKKs或mgarchBEKK包的BEKK-GARCH模型估计过程中提取极大似然(ML)估计的渐近协方差矩阵。mgarchBEKK包可提供参数标准误,BEKKs包则给出参数的t值。我希望进行Wald检验,以验证“A”或“G”矩阵的非对角线元素是否非零,从而研究波动溢出效应。请问如何提取BEKK-GARCH模型ML估计的渐近协方差矩阵?
用户提供的示例代码
library(mgarchBEKK) library(BEKKs) # mgarchBEKK version (H IS SINGULAR!... message does not happen with my data, but it does in this simulated example): ## Simulate series: simulated <- simulateBEKK(2, 1000, c(1,1)) ## Prepare the matrix: simulated <- do.call(cbind, simulated$eps) ## Estimate with default arguments: estimated1 <- BEKK(simulated) ## Standard errors: se <- estimated$asy.se.coef # BEKKs version data <- StocksBonds # data comes with package spec <- bekk_spec() estimated2 <- bekk_fit(spec, data) summary(bekk_fit)
解决方案
1. 使用mgarchBEKK包
mgarchBEKK的BEKK()拟合结果中直接内置了渐近协方差矩阵,无需额外计算:
# 提取渐近协方差矩阵 cov_matrix_mgarch <- estimated1$asy.cov.coef
- 该矩阵的对角线元素对应参数标准误的平方(与
asy.se.coef的平方一致),非对角线元素为参数间的协方差,可直接用于后续Wald检验。
2. 使用BEKKs包
BEKKs包支持通过vcov()函数直接提取渐近协方差矩阵,比通过t值反推更准确:
# 直接提取拟合结果的渐近协方差矩阵 cov_matrix_bekks <- vcov(estimated2)
如果需要从summary输出手动推导,可通过参数估计值 / t值得到标准误,再构造对角矩阵,但vcov()方法更可靠——它直接调用模型拟合时计算的信息矩阵结果。
3. 用于Wald检验的示例
以检验2变量BEKK模型中A矩阵的非对角线元素为例,假设该元素对应第3个参数,可使用lmtest包的waldtest函数完成检验:
library(lmtest) # 构造约束矩阵:检验第3个参数等于0 constraint <- matrix(c(0, 0, 1), nrow = 1) # mgarchBEKK模型的Wald检验 wald_result_mgarch <- waldtest(estimated1, constraint = constraint) # BEKKs模型的Wald检验 wald_result_bekks <- waldtest(estimated2, constraint = constraint) # 查看检验结果 print(wald_result_mgarch) print(wald_result_bekks)
内容的提问来源于stack exchange,提问作者Sylvia
相关产品推荐
相关产品推荐

