Previsão da Arimax: usando o pacote de previsão

8

A arimaxfunção no TSApacote é, até onde sei, o único Rpacote que se encaixará em uma função de transferência para modelos de intervenção. Falta uma função de previsão, que às vezes é necessária.

A seguir, uma solução alternativa para esse problema, aproveitando o excelente forecastpacote? Os intervalos preditivos estarão corretos? No meu exemplo, os erros std são "próximos" para os componentes.

  1. Use a função arima do pacote de previsão para determinar a série de ruído pré-intervenção e adicionar qualquer ajuste externo.
  2. Coloque o mesmo modelo, arimaxmas adicione a função de transferência
  3. Pegue os valores ajustados para a função de transferência (coeficientes de arimax) e adicione-os como xreg in arima.
  4. Previsão com 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

Resultado:

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

Esse é o filtro, estendeu mais 5 períodos que os dados

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

Resultado:

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

Então para prever

predict(forecast.arima,n.ahead = 5, newxreg=tf[114:length(tf)])
B_Miner
fonte
1
+1, muito esperto Não vejo nada de errado com a abordagem, parece bom, não sei ao certo. Você está se referindo?
forecaster
1
Ah, previsão! Senti sua falta! :) Eu quis dizer o SE do MA e interceptar entre os dois ataques. A variação residual é idêntica. Penso que a variação residual é tudo o que importa para o erro de previsão da previsão de um modelo ARIMA (embora eu esteja enferrujado).
B_Miner
Agora entendi, ficaria surpreso se o se não estiver próximo, estar próximo é bom, sigma ^ 2 é usado para intervalos de previsão, não há diferença entre dois modelos, portanto os intervalos de previsão serão os mesmos para o arimax ou o Arima, acredito.
forecaster
O jeito que você define tf <- filter(...)... eu estou perdido. Você tem alguma dica para entender isso? O que aconteceria se eu tinha: I911-AR1: 0.55, I911-AR2: 0.66, I911-MA0: 0.49, I911-MA1: 0.39?
Konstantinos
1
Stumblers líquidas, para a filtragem, eu achei bastante uma visão aqui: onlinecourses.science.psu.edu/stat510/node/75
Konstantinos

Respostas:

8

Os intervalos de previsão são baseados na variação residual estimada pela otimização da máxima probabilidade.

Eu gosto da forecastfunção do forecastpacote:

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

o que me dá as seguintes previsões:

  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

a maneira como o intervalo de previsão funciona é seguindo a fórmula:

z σyt±zσ onde é um multiplicador que leva valores como 1,96 para um intervalo de previsão de 95% e 1,28 para um intervalo de previsão de 80% é o desvio padrão da distribuição de previsão residual também que é também a raiz quadrada do sigma ^ 2 na estimativa de probabilidade máxima. Como você mostra sigma ^ 2 (0,01223) é idêntico nos dois modelos, os intervalos de previsão também serão os mesmos e corresponderão.zσ

Se você quiser conferir,

Limites superiores:

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

Limites inferiores:

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

que corresponde ao intervalo de previsão fornecido pela forecastfunção. Para responder sua pergunta, sim, o forecastpacote de alavancagem funcionará nesse caso e os intervalos de previsão estarão corretos.

previsor
fonte