5 votos

¿Existe alguna forma de estimar y pronosticar fácilmente el modelo ARIMA-GARCH estacional en algún software?

Utilizo R para estimar un modelo estacional ARIMA(8,0,0)(5,0,1)[7] para las diferencias estacionales de los logaritmos de los precios diarios de la electricidad:

daily.fit <- arima(sd_l_daily_adj$Price,
                   order=c(8,0,0),
                   seasonal=list(order=c(5,0,1), period=7),
                   xreg = sd_l_daily_adj$Holiday,
                   include.mean=FALSE)

El problema es que de todos los paquetes que he probado, sólo la base de R arima permite la especificación estacional. Los paquetes con funciones de estimación GARCH, como fGarch y rugarch sólo permiten la especificación ARMA(p, q) ordinaria para la ecuación de la media.

Cualquier sugerencia sobre cualquier tipo de software es bienvenida,

Gracias

4voto

RedFilter Puntos 333

También puedes usar Matlab, que, en mi humilde opinión, es más sencillo que R desde el punto de vista de la sintaxis.

El modelo que necesita se ejecuta mediante la función de Matlab arima que se puede utilizar con seasonality opción de hacer lo que tienes que hacer.

Aquí puede encontrar un ejemplo y una breve explicación del modelo.

Escribe ctrl + F y busca:

"Especificar un modelo ARIMA estacional"

En el ejemplo se explica cómo hacerlo.

Si desea combinar ARIMA con GARCH también puede hacerlo, como se describe en el MATLAB ayuda .

2voto

user13866 Puntos 65

La especificación de la ecuación media para ARIMAX(8,0,0)(5,0,1)[7] (como en el código R anterior):
$$ (1 - \phi_1L^1 - \ldots - \phi_8L^8)(1-\Phi_1L^7 - \Phi_2L^{14} - \ldots - \Phi_5L^{35})y_t = \beta x_t + (1 + \Theta_1L^7)\varepsilon_t $$ donde $x_t$ es la variable ficticia de las vacaciones.

Ajuste ARIMA equivalente en Matlab (+ GARCH y previsión):

% specify seasonal ARIMA(8,0,0)(5,0,1)[7]-GARCH(1,1) model
Md2 = arima('Constant', 0, 'D', 0, 'ARLags', [1,2,3,4,5,6,8],'SARLags', [7,14,21,28,35], 'SMALags', 7, 'Variance', garch(1,1))

% estimate (use Holiday as exogenous variable)
[fitT_garch,~,LogLT_garch] = estimate(Md2, Price(44:end), 'X', Holiday, 'Y0', Price(1:43))

% forecast 30 periods ahead
V = forecast(fitT_garch, 30, 'Y0', Price, 'X0', Holiday, 'XF', zeros(30, 1))

Matlab necesitará las primeras 43 observaciones como datos de respuesta de pre-muestra.

0voto

Mandy Puntos 6

Utilice el paquete R fgarch. Espero que esto le sea útil.

0voto

small_jam Puntos 289

Puedes probar:

daily.fit=ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)),
mean.model = list(armaOrder = c(35, 7), include.mean = T, arfima=F),
fixed.pars=list(ar9=0,ar10=0,...,ar13=0,ar15=0,...,ar20=0,ar22=0,...,ar27=0,ar29=0,...,ar34=0,ma1=0,...,ma6=0))

del paquete rugarch.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X