1

我将时间序列建模为 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?

4

2 回答 2

1

它是一个list结构。可以找到结构

str(model)

$从结构中,用or更容易提取@

model@fit$series$z
model@sigma.t
于 2021-03-09T18:14:20.430 回答
1

我相信最好的方法是在泛型不可用时定义提取函数,在泛型已经存在时定义方法。

前两个函数从拟合对象中提取感兴趣的值。

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 

另请注意,方法coeffitted存在,不需要model@fittedor 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 
于 2021-03-09T19:05:37.053 回答