Comentários: Em primeiro lugar gostaria de dizer um grande obrigado ao autor do novo tsoutliers pacote que implementos de Chen e Liu detecção de séries temporais outlier, que foi publicado no Jornal da Associação Americana de Estatística em 1993 em software Open Source .
O pacote detecta iterativamente 5 tipos diferentes de outliers em dados de séries temporais:
- Outlier aditivo (AO)
- Outlier de inovação (IO)
- Mudança de nível (LS)
- Mudança temporária (CT)
- Mudança de nível sazonal (SLS)
O que é ainda mais importante é que este pacote implementa o auto.arima a partir do pacote de previsão para que a detecção de outliers seja perfeita. Além disso, o pacote produz gráficos agradáveis para melhor compreensão dos dados das séries temporais.
Abaixo estão minhas perguntas:
Tentei executar alguns exemplos usando este pacote e ele funcionou muito bem. Outliers aditivos e mudança de nível são intuitivos. No entanto, eu tinha duas perguntas com relação à entrega de valores discrepantes de Mudanças Temporárias e de inovações que não consigo entender.
Exemplo externo de alteração temporária:
Considere o seguinte exemplo:
library(tsoutliers)
library(expsmooth)
library(fma)
outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)
O programa detecta corretamente uma mudança de nível e uma mudança temporária no seguinte local.
Outliers:
type ind time coefhat tstat
1 LS 12 1935 37.14 3.153
2 TC 20 1943 36.38 3.350
Abaixo está o enredo e minhas perguntas.
- Como escrever a mudança temporária em um formato de equação? (A mudança de nível pode ser facilmente escrita como uma variável binária, a qualquer momento antes de 1935 / Obs 12 é 0 e depois de 1935 e depois é 1.)
A equação para mudança temporária no manual do pacote e no artigo é apresentada como:
- Minha segunda pergunta é sobre outlier inovador, nunca
encontrei um outlier inovador na prática. qualquer exemplo numérico ou exemplo de caso seria muito útil.
Edit: @Irishstat, a função tsoutliers faz um excelente trabalho na identificação de outliers e na sugestão de um modelo ARIMA apropriado. Observando o conjunto de dados do Nilo, veja abaixo a aplicação de auto.arima e, em seguida, aplicando tsoutliers (com os padrões que incluem auto.arima):
auto.arima(Nile)
Series: Nile
ARIMA(1,1,1)
Coefficients:
ar1 ma1
0.2544 -0.8741
s.e. 0.1194 0.0605
sigma^2 estimated as 19769: log likelihood=-630.63
AIC=1267.25 AICc=1267.51 BIC=1275.04
Após aplicar a função tsoutliers, ele identifica um outlier LS e um outlier aditivo e recomenda uma ordem ARIMA (0,0,0).
nile.outliers <- tso(Nile,types = c("AO","LS","TC"))
nile.outliers
Series: Nile
ARIMA(0,0,0) with non-zero mean
Coefficients:
intercept LS29 AO43
1097.7500 -242.2289 -399.5211
s.e. 22.6783 26.7793 120.8446
sigma^2 estimated as 14401: log likelihood=-620.65
AIC=1249.29 AICc=1249.71 BIC=1259.71
Outliers:
type ind time coefhat tstat
1 LS 29 1899 -242.2 -9.045
2 AO 43 1913 -399.5 -3.306
tsoutliers
foi renomeada tso
para evitar conflitos com uma função com o mesmo nome no pacote forecast
.