Comandos R para análises de séries temporais

6 - Ajuste de modelos Univariados - GARCH

Ajuste de modelos \(ARMA(p,q)-GARCH(m,k)\) utilizando o pacote fGarch

fit<-garchFit(x ~ arma(p,q)+garch(m, k), data =  banco_de_dados, 
               cond.dist = c("std"),include.mean=TRUE)
               
# O parametro 'cond.dist' define a distribuição dos erros a ser utilizada: 
# 'norm'  : Erros normais
# 'std'   : Erros t-student
# 'ged'   : Dists de Erros Generalizados

# Para imprimir detalhes do ajuste, como tabela de analise de variancia 
# e testes de Ljung-Box, aplique 'summary' ao modelo ajustado:
summary(fit)          

Modelo \(EGARCH(1,1)\) utilizando o pacote rugarch

# Neste pacote, é usual especificar todos os parametros inicialmente e informá-los 
# todos de uma vez à funcão de ajuste:
spec=ugarchspec(variance.model=list(model="eGARCH", garchOrder=c(1,1)),
mean.model=list(armaOrder=c(1,1), arfima=FALSE),
distribution.model="std")       # Especificacao dos parâmetros
fit=ugarchfit(data=x,spec=spec) # Ajuste do modelo
summary(fit)                    # Resultados detalhados do ajuste

Modelos \(TGARCH(m,k)\) utilizando o pacote fGarch

O modelo TGARCH é um caso específico do modelo APARCH considerando delta=1 (Laurent,2004). Utilizamos o pacote fGarch para ajustar um modelo APARCH(1,1),\(\delta\)=1, que é equivalente a um TGARCH(1,1):

require(fGarch) 
fit_TGARCH<-garchFit(formula = ~ arma(p,q)+aparch(1, 1), data =  x,
                   cond.dist = c("std"),include.mean=TRUE,
                   include.delta=TRUE,delta=1)

Análise de resíduos para o modelo GARCH

Para avaliar se o modelo ARMA-GARCH ajustado está captando as dependências anteriores do nível e da volatilidade, usualmente se constrói os gráficos ACF e PACF dos resíduos e quadrados dos resíduos. Ainda, alternativamente aos pacotes fGarch e rugarch, o pacote tseries também possui uma função garch. Aqui, a única ressalva é com relação às funções do pacote fGarch, que produzem resíduos não-padronizados, diferente dos outros dois pacotes. Logo, suponha que temos um ajuste de um modelo via o pacote fGarch, digamos fit. Para obter resultados equivalentes, comparáveis e interpretáveis, a sintaxe correta para se obter os resíduos de um modelo ajustado em fit é at=residuals(fit_norm_cemig_at,standardize = T)).
A partir, então de at, pode se construir as análises de \(a_t\) e \(a_t^2\) da forma usual, isto é acf(at),pacf(at),acf(at^2),pacf(at^2).

Previsões

Tanto para os modelos ARMA quanto para os modelos da família GARCH apresentados aqui, a sintaxe para se obter previsões é:

predict(fit,n.ahead=h)

em que h é o horizonte de previsão e fit é um objeto contendo o modelo ajustado.