Arimax Prediction: Utilisation de l'ensemble de prévisions

9

La arimaxfonction dans le TSApackage est, à ma connaissance, le seul Rpackage qui s'adaptera à une fonction de transfert pour les modèles d'intervention. Il manque cependant une fonction de prédiction qui est parfois nécessaire.

La solution suivante est-elle une solution à ce problème, tirant parti de l'excellent forecastpackage? Les intervalles prédictifs seront-ils corrects? Dans mon exemple, les erreurs std sont "proches" des composants.

  1. Utilisez la fonction arima du package de prévision pour déterminer la série de bruit avant l'intervention et ajouter tout ajustement aberrant.
  2. Adapter le même modèle arimaxmais ajouter la fonction de transfert
  3. Prenez les valeurs ajustées pour la fonction de transfert (coefficients de arimax) et ajoutez-les en tant que xreg arima.
  4. Prévision avec 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

Production:

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

Ceci est le filtre, étendu sur 5 périodes supplémentaires que les données

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

Production:

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

Puis prédire

predict(forecast.arima,n.ahead = 5, newxreg=tf[114:length(tf)])
B_Miner
la source
1
+1, très intelligent Je ne vois rien de mal à l'approche, ça a l'air bien, je ne sais pas de quoi vous parlez?
prévisionniste
1
Ah prévisionniste! Je vous ai manqué! :) Je voulais dire le SE du MA et l'interception entre les deux ajustements. La variance résiduelle est identique. Je pense que la variance résiduelle est tout ce qui compte pour l'erreur de prédiction de la prévision d'un modèle ARIMA (bien que je sois rouillé).
B_Miner
Maintenant que je comprends, je serais surpris si le soi n'est pas proche, être proche est bon, sigma ^ 2 est utilisé pour les intervalles de prédiction, il n'y a pas de différence entre deux modèles, donc les intervalles de prédiction seront les mêmes pour arimax ou Arima je crois.
prévisionniste
La façon dont vous définissez tf <- filter(...)... je suis perdu. Avez-vous des conseils pour le comprendre? Que se passerait - il si je devais: I911-AR1: 0.55, I911-AR2: 0.66, I911-MA0: 0.49, I911-MA1: 0.39?
Konstantinos
1
Trébucheurs nets, pour le filtrage, j'ai trouvé tout à fait un aperçu ici: onlinecourses.science.psu.edu/stat510/node/75
Konstantinos

Réponses:

8

Les intervalles de prédiction sont basés sur la variance résiduelle estimée par l'optimisation du maximum de vraisemblance.

J'aime la forecastfonction du forecastpackage:

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

ce qui me donne les prédictions suivantes:

  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 façon dont l'intervalle de prédiction fonctionne est la formule suivante:

yt±zσ où est un multiplicateur qui prend des valeurs telles que 1,96 pour l'intervalle de prédiction à 95% et 1,28 pour l'intervalle de prédiction à 80% est l'écart type de la distribution résiduelle également prévue qui est également la racine carrée de sigma ^ 2 dans l'estimation du maximum de vraisemblance. Comme vous montrez que sigma ^ 2 (0,01223) est identique dans vos deux modèles, les intervalles de prédiction seront également identiques et correspondront.zσ

Si vous voulez le vérifier,

Limites supérieures:

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

Limites inférieures:

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

qui correspond à l'intervalle de prédiction fourni par la forecastfonction. Pour répondre à votre question, oui, l'effet de levier forecastfonctionnera dans ce cas et les intervalles de prédiction seront corrects.

prévisionniste
la source