A arimax
função no TSA
pacote é, até onde sei, o único R
pacote 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 forecast
pacote? Os intervalos preditivos estarão corretos? No meu exemplo, os erros std são "próximos" para os componentes.
- 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.
- Coloque o mesmo modelo,
arimax
mas adicione a função de transferência - Pegue os valores ajustados para a função de transferência (coeficientes de
arimax
) e adicione-os como xreg inarima
. - 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)])
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
?