No sé cómo seleccionar la longitud del rezago ARMA al hacer ARMA-GARCH. Quizás alguien pueda editarlo en esta respuesta.
Para el caso univariado quieres el paquete rugarch
. Si estás haciendo cosas multivariadas, quieres rmgarch
. La razón por la que estos son mejores que otros paquetes es triple: (i) Soporte para variables exógenas que no he visto en ningún otro paquete, (ii) soporte para correlaciones condicionales dinámicas, (iii) soporte para una gran multitud de variantes fGARCH.
install.packages("rugarch")
require(rugarch)
Vamos a construir los datos a utilizar como ejemplo. Usar $N(0,1)$ dará resultados extraños cuando intentes usar GARCH sobre ello, pero es solo un ejemplo.
data <- rnorm(1000)
Luego podemos calcular el modelo ARMA(1,1)-GARCH(1,1) como ejemplo:
spec <- ugarchspec(variance.model = list(model = "sGARCH",
garchOrder = c(1, 1),
submodel = NULL,
external.regressors = NULL,
variance.targeting = FALSE),
mean.model = list(armaOrder = c(1, 1),
external.regressors = NULL,
distribution.model = "norm",
start.pars = list(),
fixed.pars = list()))
garch <- ugarchfit(spec = spec, data = data, solver.control = list(trace=0))
Obtener los coeficientes ARMA(1,1) y GARCH(1,1):
garch@fit$coef
Obtener la desviación estándar variable en el tiempo:
garch@fit$sigma
Obtener las perturbaciones estandarizadas $N(0,1)$ ARMA(1,1):
garch@fit$z
Ver qué más se puede obtener del ajuste:
str(garch)
0 votos
No estoy seguro de que encuentres un ejemplo detallado. ¿Conoces el paquete R fgarch? La función garchFit() podría ser útil para tu tarea en mano cran.r-project.org/web/packages/fGarch/fGarch.pdf
0 votos
El enlace aquí tiene documentación de auto.arima() cran.r-project.org/web/packages/forecast/forecast.pdf
0 votos
En la práctica, a menudo es más fácil simplemente hacer que la parte AR del ARMA sea lo suficientemente larga como para que encapsule la cantidad de MA que tiene la serie. De esta manera, puedes usar métodos de regresión normales en lugar de depender de métodos numéricos para ARMA.