R中GARCH模型约束检验(H₀:α₁+β₁=1)无法执行问题咨询
我来给你梳理下用rugarch包做GARCH(1,1)参数和的约束检验的完整流程,完全按照似然比检验的思路来推进:
GARCH(1,1)参数和约束检验(H₀:α₁+β₁=1)实操步骤
核心思路
我们用似然比检验来验证原假设:通过对比约束模型(符合H₀)和无约束模型的对数似然值,计算统计量后判断是否拒绝原假设。
步骤1:估计约束模型(满足H₀:α₁+β₁=1)
- 用
ugarchspec()定义约束的sGARCH模型,通过fixed.pars参数锁定α₁+β₁=1的关系; - 拟合模型后提取约束模型的对数似然值。
示例代码:
# 加载rugarch包 library(rugarch) # 定义约束模型的规格 constrained_spec <- ugarchspec( variance.model = list(model = "sGARCH", garchOrder = c(1,1)), mean.model = list(armaOrder = c(0,0)), # 根据你的数据调整均值模型(比如有AR项就改c(1,0)) fixed.pars = list(beta1 = 1 - alpha1) # 核心约束:β₁=1-α₁,等价于α₁+β₁=1 ) # 拟合约束模型 constrained_fit <- ugarchfit(spec = constrained_spec, data = your_time_series_data) # 提取约束模型的对数似然值 ll_constrained <- constrained_fit@fit$likelihood
步骤2:估计无约束模型(对应H₁:α₁+β₁≠1)
- 定义无约束的sGARCH模型,不需要设置
fixed.pars; - 拟合后提取无约束模型的对数似然值。
示例代码:
# 定义无约束模型的规格 unconstrained_spec <- ugarchspec( variance.model = list(model = "sGARCH", garchOrder = c(1,1)), mean.model = list(armaOrder = c(0,0)) # 和约束模型保持一致的均值设定 ) # 拟合无约束模型 unconstrained_fit <- ugarchfit(spec = unconstrained_spec, data = your_time_series_data) # 提取无约束模型的对数似然值 ll_unconstrained <- unconstrained_fit@fit$likelihood
步骤3:计算似然比统计量并做检验
- 似然比统计量公式:
LR = 2*(无约束对数似然 - 约束对数似然); - 在H₀成立时,LR服从自由度为1的卡方分布(因为我们只施加了1个约束);
- 通过p值判断是否拒绝原假设。
示例代码:
# 计算LR统计量 LR_stat <- 2*(ll_unconstrained - ll_constrained) # 计算对应的p值 p_value <- 1 - pchisq(LR_stat, df = 1) # 输出结果 cat("似然比统计量:", round(LR_stat, 4), "\n") cat("p值:", round(p_value, 4), "\n")
结果解释:如果p值小于你的显著性水平(比如0.05),则拒绝H₀,认为α₁+β₁≠1;反之则不能拒绝原假设。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

