我将时间序列建模为 GARCH(1,1) 过程:
z_t 是 t 分布的。
在 R 中,我在fGarch
-package 中通过
model <- garchFit(formula = ~garch(1,1), cond.dist = "std", data=r)
这个对吗?
现在,我想了解这个输出来检查我的公式。
显然,model@fit$coefs
给了我系数并model@fitted
给了我拟合的 r_t。
但是我如何获得拟合的 sigma_t 和 z_t?
我将时间序列建模为 GARCH(1,1) 过程:
z_t 是 t 分布的。
在 R 中,我在fGarch
-package 中通过
model <- garchFit(formula = ~garch(1,1), cond.dist = "std", data=r)
这个对吗?
现在,我想了解这个输出来检查我的公式。
显然,model@fit$coefs
给了我系数并model@fitted
给了我拟合的 r_t。
但是我如何获得拟合的 sigma_t 和 z_t?
它是一个list
结构。可以找到结构
str(model)
$
从结构中,用or更容易提取@
model@fit$series$z
model@sigma.t
我相信最好的方法是在泛型不可用时定义提取函数,在泛型已经存在时定义方法。
前两个函数从拟合对象中提取感兴趣的值。
get_sigma_t <- function(x, ...){
x@sigma.t
}
get_z_t <- function(x, ...){
x@fit$series$z
}
这里定义logLik
了类对象的方法"fGARCH"
。
logLik.fGARCH <- function(x, ...){
x@fit$value
}
现在使用函数,包括方法。数据来自 中的第一个示例help("garchFit")
。
N <- 200
r <- as.vector(garchSim(garchSpec(rseed = 1985), n = N)[,1])
model <- garchFit(~ garch(1, 1), data = r, trace = FALSE)
get_sigma_t(model) # output not shown
get_z_t(model) # output not shown
logLik(model)
#LogLikelihood
# -861.9494
另请注意,方法coef
和fitted
存在,不需要model@fitted
or model@fit$coefs
,就像问题中写的一样。
fitted(model) # much simpler
coef(model)
# mu omega alpha1 beta1
#3.541769e-05 1.081941e-06 8.885493e-02 8.120038e-01