r - 使用 R(rugarch 和 fGarch 包)的 GARCH 模型中参数估计的不同意义

标签 r stderr significant-digits

我一直在使用 fGarch 和 rugarch 这两个包来将 GARCH(1,1) 模型拟合到我的汇率时间序列中,该序列由 3980 个每日对数返回组成。

fx_rates <- data.frame(read.csv("WMCOFixingsTimeSeries.csv", header=T, sep=";", stringsAsFactors=FALSE))
#data series
EURUSD <- ts(diff(log(fx_rates$EURUSD), lag=1), frequency=1)

#GARCH(1,1)
library(timeSeries)
library(fGarch)
x <- EURUSD
fit <- garchFit(~garch(1,1), data=x, cond.dist="std", trace=F, include.mean=F)
fit@fit$matcoef

library(rugarch)
spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
               mean.model=list(armaOrder=c(0,0), include.mean=F), distribution.model="std")
gfit <- ugarchfit(spec, x, solver="hybrid", fit.control=list(stationarity=0))
gfit@fit$matcoef

两个模型显示如下结果:

fGarch:

fit@fit$matcoef 
         Estimate   Std. Error    t value     Pr(>|t|) 
omega  1.372270e-07 6.206406e-08   2.211054 2.703207e-02 
alpha1 2.695012e-02 3.681467e-03   7.320484 2.471356e-13 
beta1  9.697648e-01 3.961845e-03 244.776060 0.000000e+00 
shape  8.969562e+00 1.264957e+00   7.090804 1.333378e-12

鲁格:

gfit@fit$matcoef
           Estimate   Std. Error     t value     Pr(>|t|)
omega  1.346631e-07 3.664294e-07   0.3675008 7.132455e-01
alpha1 2.638156e-02 2.364896e-03  11.1554837 0.000000e+00
beta1  9.703710e-01 1.999087e-03 485.4070764 0.000000e+00
shape  8.951322e+00 1.671404e+00   5.3555696 8.528729e-08

我找到了一个线程 http://r.789695.n4.nabble.com/Comparison-between-rugarch-and-fGarch-td4683770.html关于为什么估计值不相同,但是我无法弄清楚标准误差的巨大差异以及欧米茄的不同意义。差异不是由平稳性约束引起的,因为 omega 仍然微不足道。有人知道如何计算估计参数(omega、alpha、beta 和 nu(形状))的标准误差吗?

最佳答案

如果 H 是你的 Hessian 而 G 是你的梯度,让 C = H^-1 (G^T * G) H^-1,即H的逆乘以矩阵乘法G的结果与G转置,再将结果乘以H 再次反转。标准误差系数就是 sqrt(diag(C)),即其对角线项的平方根。您可以通过仔细阅读 fGarch::.garchFit 的代码来了解这一点:

# Standard Errors and t-Values:
if (DEBUG) print("Standard Errors and t-Values ...")
fit$cvar <-
    if (robust.cvar)
        (solve(fit$hessian) %*% (t(fit$gradient) %*% fit$gradient) %*%
         solve(fit$hessian))
    else
        - solve(fit$hessian)
fit$se.coef = sqrt(diag(fit$cvar))
fit$tval = fit$coef/fit$se.coef
fit$matcoef = cbind(fit$coef, fit$se.coef,

关于r - 使用 R(rugarch 和 fGarch 包)的 GARCH 模型中参数估计的不同意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22691299/

相关文章:

r - 如何将变量名称的字符向量转换为在 R 中以逗号分隔的列表

c++ - 加载 DLL 是否会动态协调其 stderr 到主应用程序?如果是这样,那么如何......?

go - 在 Golang 中渲染页面后如何发送 websocket 数据?

python - 在python中获取最高有效数字

c# - 为什么使用 "G"标准格式字符串格式化 Double 不返回完整字符串?

r - R中大数据的计数算法

r - 将相关性显示为有序列表,而不是大型矩阵

python - communicate() 和 .stdin.write、.stdout.read 或 .stderr.read 之间的区别 - python

r - 如何生成一个汇总统计表,其中所有相关的小数位都出现在 R 的结果表中?

json - 使用R从JSON读取后如何避免循环列表