Predicción de Arimax: uso del paquete de pronóstico

9

La arimaxfunción en el TSApaquete es, que yo sepa, el único Rpaquete que se ajustará a una función de transferencia para los modelos de intervención. Sin embargo, carece de una función de predicción que a veces es necesaria.

¿Es lo siguiente una solución alternativa para este problema, aprovechando el excelente forecastpaquete? ¿Los intervalos predictivos serán correctos? En mi ejemplo, los errores estándar son "cercanos" para los componentes.

  1. Use la función arima del paquete de pronóstico para determinar la serie de ruido previa a la intervención y agregar cualquier ajuste atípico.
  2. Encaja en el mismo modelo arimaxpero agrega la función de transferencia
  3. Tome los valores ajustados para la función de transferencia (coeficientes de arimax) y agréguelos como xreg in arima.
  4. Pronóstico con arima
library(TSA)
library(forecast)
data(airmiles)
air.m1<-arimax(log(airmiles),order=c(0,0,1),
              xtransf=data.frame(I911=1*(seq(airmiles)==69)),
              transfer=list(c(1,0))
              )

air.m1

Salida:

Coefficients:
  ma1  intercept  I911-AR1  I911-MA0
0.5197    17.5172    0.5521   -0.4937
s.e.  0.0798     0.0165    0.2273    0.1103

sigma^2 estimated as 0.01223:  log likelihood=88.33
AIC=-168.65   AICc=-168.09   BIC=-155.02

Este es el filtro, extendido 5 períodos más que los datos

tf<-filter(1*(seq(1:(length(airmiles)+5))==69),filter=0.5521330,method='recursive',side=1)*(-0.4936508)
forecast.arima<-Arima(log(airmiles),order=c(0,0,1),xreg=tf[1:(length(tf)-5)])
forecast.arima

Salida:

Coefficients:
         ma1  intercept  tf[1:(length(tf) - 5)]
      0.5197    17.5173                  1.0000
s.e.  0.0792     0.0159                  0.2183

sigma^2 estimated as 0.01223:  log likelihood=88.33
AIC=-168.65   AICc=-168.28   BIC=-157.74

Entonces para predecir

predict(forecast.arima,n.ahead = 5, newxreg=tf[114:length(tf)])
B_Miner
fuente
1
+1, muy inteligente No veo nada malo con el enfoque, se ve bien, no estoy seguro de a qué te refieres.
pronosticador
1
¡Ah, pronosticador! ¡Te extrañé! :) Me refería al SE de MA e interceptar entre los dos ataques. La varianza residual es idéntica. Creo que la varianza residual es lo único que importa para el error de predicción del pronóstico de un modelo ARIMA (aunque estoy oxidado).
B_Miner
Ahora lo entiendo, me sorprendería si el SE no está cerca, estar cerca es bueno, sigma ^ 2 se usa para intervalos de predicción, no hay diferencia entre dos modelos, por lo que creo que los intervalos de predicción serán los mismos para Arimax o Arima.
pronosticador
La forma en que define tf <- filter(...)... Estoy perdido. ¿Tienes algún consejo para entenderlo? ¿Qué pasaría si tuviera: I911-AR1: 0.55, I911-AR2: 0.66, I911-MA0: 0.49, I911-MA1: 0.39?
Konstantinos
1
Tropiezos netos, para el filtrado, encontré una gran idea aquí: onlinecourses.science.psu.edu/stat510/node/75
Konstantinos

Respuestas:

8

Los intervalos de predicción se basan en la varianza residual estimada por la optimización de máxima verosimilitud.

Me gusta la forecastfunción del forecastpaquete:

fc <- forecast(forecast.arima,h = 5, xreg=tf[114:length(tf)])

lo que me da las siguientes predicciones:

  Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
Jun 2005       17.61393 17.47222 17.75565 17.39720 17.83067
Jul 2005       17.51725 17.35753 17.67697 17.27299 17.76152
Aug 2005       17.51725 17.35753 17.67697 17.27299 17.76152
Sep 2005       17.51725 17.35753 17.67697 17.27299 17.76152
Oct 2005       17.51725 17.35753 17.67697 17.27299 17.76152

la forma en que funciona el intervalo de predicción es mediante la siguiente fórmula:

yt±zσ dónde z es un multiplicador que toma valores como 1.96 para el intervalo de predicción del 95% y 1.28 para el intervalo de predicción del 80% σes la desviación estándar de la distribución residual también pronosticada, que también es la raíz cuadrada de sigma ^ 2 en la estimación de máxima verosimilitud. Como muestra sigma ^ 2 (0.01223) es idéntico en ambos modelos, los intervalos de predicción también serán los mismos y coincidirán.

Si quieres comprobarlo,

Límites superiores

> fc$mean[1]+sqrt(forecast.arima$sigma2)*1.96
[1] 17.83068

Límites inferiores

> fc$mean[1]-sqrt(forecast.arima$sigma2)*1.96
[1] 17.39719

que coincide con el intervalo de predicción proporcionado por la forecastfunción. Para responder a su pregunta, sí, el forecastpaquete de apalancamiento funcionará en este caso y los intervalos de predicción serán correctos.

pronosticador
fuente