R fGarch

问题描述

我将时间序列建模为 GARCH(1,1) 过程:

Garch

z_t 是 t 分布的。

在 R 中,我在 fGarch-package via

中执行此操作
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)

从结构上看,用$@更容易提取

model@fit$series$z
[email protected]
,

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

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

get_sigma_t <- function(x,...){
  [email protected]
}
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@fittedmodel@fit$coefs,就像问题中写的那样。

fitted(model)  # much simpler
coef(model)
#          mu        omega       alpha1        beta1 
#3.541769e-05 1.081941e-06 8.885493e-02 8.120038e-01