Eu tenho dados mensais de 1993 a 2015 e gostaria de fazer previsões sobre esses dados. Usei o pacote tsoutliers para detectar os outliers, mas não sei como continuo prevendo com meu conjunto de dados.
Este é o meu código:
product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)
Esta é a minha saída do pacote tsoutliers
ARIMA(0,1,0)(0,0,1)[12]
Coefficients:
sma1 LS46 LS51 LS61 TC133 LS181 AO183 AO184 LS185 TC186 TC193 TC200
0.1700 0.4316 0.6166 0.5793 -0.5127 0.5422 0.5138 0.9264 3.0762 0.5688 -0.4775 -0.4386
s.e. 0.0768 0.1109 0.1105 0.1106 0.1021 0.1120 0.1119 0.1567 0.1918 0.1037 0.1033 0.1040
LS207 AO237 TC248 AO260 AO266
0.4228 -0.3815 -0.4082 -0.4830 -0.5183
s.e. 0.1129 0.0782 0.1030 0.0801 0.0805
sigma^2 estimated as 0.01258: log likelihood=205.91
AIC=-375.83 AICc=-373.08 BIC=-311.19
Outliers:
type ind time coefhat tstat
1 LS 46 1996:10 0.4316 3.891
2 LS 51 1997:03 0.6166 5.579
3 LS 61 1998:01 0.5793 5.236
4 TC 133 2004:01 -0.5127 -5.019
5 LS 181 2008:01 0.5422 4.841
6 AO 183 2008:03 0.5138 4.592
7 AO 184 2008:04 0.9264 5.911
8 LS 185 2008:05 3.0762 16.038
9 TC 186 2008:06 0.5688 5.483
10 TC 193 2009:01 -0.4775 -4.624
11 TC 200 2009:08 -0.4386 -4.217
12 LS 207 2010:03 0.4228 3.746
13 AO 237 2012:09 -0.3815 -4.877
14 TC 248 2013:08 -0.4082 -3.965
15 AO 260 2014:08 -0.4830 -6.027
16 AO 266 2015:02 -0.5183 -6.442
Eu tenho essas mensagens de aviso também.
Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval, :
stopped when ‘maxit’ was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval, :
stopped when ‘maxit’ was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval, :
stopped when ‘maxit’ was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78, :
Unable to fit final model using maximum likelihood. AIC value approximated
Dúvidas:
- Se não estou errado, o pacote tsoutliers removerá os valores discrepantes que detectar e, através do uso do conjunto de dados com os valores discrepantes removidos, fornecerá o melhor modelo de arima adequado para o conjunto de dados, está correto?
- O conjunto de dados da série de ajuste está sendo muito reduzido devido à remoção da mudança de nível, etc. Isso não significa que, se a previsão for feita na série ajustada, a saída da previsão será muito imprecisa, pois os dados mais recentes já são maiores que 12, enquanto os dados ajustados mudam para 7-8.
- O que significam as mensagens de aviso 4 e 5? Isso significa que ele não pode executar auto.arima usando a série ajustada?
- O que significa [12] em ARIMA (0,1,0) (0,0,1) [12]? É apenas a minha frequência / periodicidade do meu conjunto de dados, que eu o defino mensalmente? E isso também significa que minhas séries de dados também são sazonais?
- Como detecto a sazonalidade no meu conjunto de dados? Desde a visualização do gráfico de séries temporais, não vejo nenhuma tendência óbvia e, se eu usar a função decompor, ela assumirá que existe uma tendência sazonal? Então, eu apenas acredito no que os tsoutliers me dizem, onde há tendência sazonal, já que há MA de ordem 1?
- Como continuo fazendo minhas previsões com esses dados depois de identificar esses valores discrepantes?
- Como incorporar esses valores discrepantes a outros modelos de previsão - Suavização exponencial, ARIMA, Modelo estrutural, Passeio aleatório, teta? Tenho certeza de que não consigo remover os valores discrepantes, pois há uma mudança de nível e, se eu pegar apenas os dados das séries ajustadas, os valores serão muito pequenos, então o que devo fazer?
Preciso adicionar esses valores discrepantes como regressor no auto.arima para previsão? Como isso funciona então?