Problema ao definir a ordem ARIMA

16

Este é um post longo, então espero que você possa me acompanhar e, por favor, corrija-me onde estiver errado.

Meu objetivo é produzir uma previsão diária com base em 3 ou 4 semanas de dados históricos.

Os dados são dados de 15 minutos da carga local de uma das linhas de um transformador. Estou tendo problemas para encontrar a ordem do modelo de um processo ARIMA sazonal. Considere a série temporal da demanda de eletricidade:

Séries cronológicas originais http://i.share.pho.to/80d86574_l.png

Quando as três primeiras semanas são tomadas como subconjunto e diferenciadas, os seguintes gráficos ACF / PACF são calculados:

Subconjunto http://i.share.pho.to/5c165aef_l.png

Primeira diferença http://i.share.pho.to/b7300cc2_l.png

Sazonal e primeira diferença http://i.share.pho.to/570c5397_l.png

Parece que a série é meio estacionária. Mas a sazonalidade também pode ser semanal (consulte Diferenças sazonais na semana e diferenças de segunda ordem [aqui] http://share.pho.to/3owoq , o que você acha?)

Então, vamos concluir que o modelo assume a forma de:

UMAREuMUMA(p,1,q)(P,1,Q)96

Na última figura, um pico distinto no atraso 96 indica um componente MA (1) sazonal (talvez AR (1) possa ser tão bom quanto existe um pico distinto no PACF também). Os picos no atraso 1: 4 indicam um componente MA (4) que corresponde à deterioração exponencial no PACF com um pouco de imaginação. Assim, o modelo inicial selecionado manualmente poderia ser: com

UMAREuMUMA(0 0,1,4)(0 0,1,1)96

Series: x 
ARIMA(0,1,4)(0,1,1)[96] 

    Coefficients:
    ma1      ma2      ma3      ma4     sma1
    -0.2187  -0.2233  -0.0996  -0.0983  -0.9796
    s.e.   0.0231   0.0234   0.0257   0.0251   0.0804

    sigma^2 estimated as 364612:  log likelihood=-15138.91
    **AIC=30289.82   AICc=30289.87   BIC=30323.18**

A função auto.arima calcula o seguinte modelo (com stepwise e aproximação em TRUE, caso contrário, leva muito tempo para convergir): com

UMAREuMUMA(1,1,1)(2,0 0,2)96

Series: x 
ARIMA(1,1,1)(2,0,2)[96] 

    Coefficients:
    ar1      ma1    sar1    sar2     sma1     sma2
    0.7607  -1.0010  0.4834  0.4979  -0.3369  -0.4168
    s.e.  0.0163   0.0001  0.0033  0.0116   0.0216   0.0255

    sigma^2 estimated as 406766:  log likelihood=-15872.02
    **AIC=31744.99   AICc=31745.05   BIC=31784.25**

O que significa que nenhuma diferença sazonal é aplicada. Aqui estão os resíduos dos dois modelos. A estatística Ljung Box fornece um valor p muito pequeno, indicando que ainda existe alguma autocorrelação presente (? Corrija-me se estiver errado).

Previsão

Assim, para determinar qual é o melhor, um teste de precisão fora da amostra é o melhor. Portanto, para ambos os modelos, é feita uma previsão 24 horas à frente, que é comparada entre si. Os resultados são: auto.arima http://i.share.pho.to/5d1dd934_l.png modelo manual http://i.share.pho.to/7ca69c97_l.png

Auto:

                      ME     RMSE      MAE       MPE      MAPE      MASE        ACF1 Theil's U
Training set   -2.586653 606.3188 439.1367 -1.284165  7.599403 0.4914563 -0.01219792        NA
Test set     -330.144797 896.6998 754.0080 -7.749675 13.268985 0.8438420  0.70219229  1.617834

Manual

                       ME     RMSE      MAE        MPE      MAPE      MASE         ACF1 Theil's U
Training set 2.456596e-03 589.1267 435.6571 -0.7815229  7.509774 0.4875621 -0.002034122        NA
Test set     2.878919e+02 919.7398 696.0593  3.4756363 10.317420 0.7789892  0.731013599  1.281764

Questões

Como você pode pensar nisso, há uma análise nas três primeiras semanas de um conjunto de dados. Estou lutando mentalmente com as seguintes perguntas:

  1. Como seleciono o melhor modelo ARIMA (tentando todas as ordens diferentes e verificando o melhor MASE / MAPE / MSE? Onde a seleção da medição de desempenho pode ser uma discussão por si só ..)
  2. Se eu gerar um novo modelo e uma previsão para cada nova previsão do dia (como na previsão on-line), preciso levar em consideração a tendência anual e como? (como em um subconjunto tão pequeno, acho que a tendência é negligenciável)
  3. Você esperaria que a ordem do modelo permaneça a mesma durante todo o conjunto de dados, ou seja, ao fazer outro subconjunto, isso me dará o mesmo modelo?
  4. Qual é uma boa maneira, nesse método, de lidar com feriados? Ou o ARIMAX com manequins de férias externos é necessário para isso?
  5. Preciso usar a abordagem da série Fourier para experimentar modelos seasonality=672como discutido em períodos sazonais longos ?
  6. Nesse caso, seria assim fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)(onde a função fourier é como definida na postagem do blog de Hyndman)
  7. Os componentes P e Q iniciais estão incluídos na série fourier?

A maioria dos conhecimentos teóricos obtidos no FPP , ótimas coisas!

Antes de aconselhar sobre o uso de suavização exponencial ou regressão linear (dinâmica), isso também está sendo trabalhado para comparar.

Dados

https://www.dropbox.com/sh/mzx61sskya5ze6x/Zq3A7Q6htH/trafo.txt

Código

data<-read.csv("file", sep=";")
load<-data[,3]

Eu removi os poucos valores zero com a semana antes dos valores

stepback<-672
load[is.na(load)] <- 0 # Assumed no 0's in first 672 values!
idx <- which(load == 0)
idx <- idx[which(idx>stepback)] 
load[idx] <- load[idx-stepback] 

ED<-ts(load,start=0, end=c(760,96),frequency=96)
x<-window(ED,start=0, end=c(20,96))

Também é possível postar um exemplo reproduzível, mas isso tornará a postagem ainda mais longa, mas possível se necessário. Portanto, se houver algo que eu deva fornecer, entre em contato.

Peter Nijhuis
fonte

Respostas:

8
  1. Como seleciono o melhor modelo ARIMA (tentando todas as ordens diferentes e verificando o melhor MASE / MAPE / MSE? Onde a seleção da medição de desempenho pode ser uma discussão por si só ..)

As estimativas de risco fora da amostra são o padrão-ouro para avaliação de desempenho e, portanto, para seleção de modelo. Idealmente, você faz a validação cruzada para que suas estimativas de risco sejam calculadas sobre a média de mais dados. O FPP explica um método de validação cruzada para séries temporais. Veja Tashman para uma revisão de outros métodos:

Tashman, LJ (2000). Testes fora da amostra da precisão da previsão: uma análise e revisão. International Journal of Forecasting, 16 (4), 437-450. doi: 10.1016 / S0169-2070 (00) 00065-0

Obviamente, a validação cruzada consome tempo e, portanto, as pessoas geralmente recorrem ao uso de critérios dentro da amostra para selecionar um modelo, como o AIC, que é como a auto.arima seleciona o melhor modelo. Essa abordagem é perfeitamente válida, se não tão ideal.

  1. Se eu gerar um novo modelo e uma previsão para cada nova previsão do dia (como na previsão on-line), preciso levar em consideração a tendência anual e como? (como em um subconjunto tão pequeno, acho que a tendência é negligenciável)

Não sei ao certo o que você quer dizer com tendência anual. Supondo que você queira dizer sazonalidade anual, não há realmente nenhuma maneira de levar isso em consideração com menos de um ano de dados.

  1. Você esperaria que a ordem do modelo permaneça a mesma durante todo o conjunto de dados, ou seja, ao fazer outro subconjunto, isso me dará o mesmo modelo?

Eu esperava que, exceto por algumas mudanças na forma como os dados são gerados, o modelo subjacente mais correto seja o mesmo em todo o conjunto de dados. No entanto, não é o mesmo que dizer que o modelo selecionado por qualquer procedimento (como o procedimento usado pelo auto.arima) será o mesmo se esse procedimento for aplicado a diferentes subconjuntos de dados. Isso ocorre porque a variabilidade devido à amostragem resultará em variabilidade nos resultados do procedimento de seleção do modelo.

  1. Qual é uma boa maneira, nesse método, de lidar com feriados? Ou o ARIMAX com manequins de férias externos é necessário para isso?

Manequins de férias externos é a melhor abordagem.

  1. Preciso usar a abordagem da série Fourier para experimentar modelos seasonality=672como discutido em períodos sazonais longos ?

Você precisa fazer algo, porque, como mencionado nesse artigo, a função arima em R não suporta períodos sazonais superiores a 350. Tive um sucesso razoável com a abordagem de Fourier. Outras opções incluem previsão após decomposição sazonal (também coberta no FPP) e modelos de suavização exponencial, como morcegos e tbats.

  1. Nesse caso, seria assim fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)(onde a função fourier é como definida na postagem do blog de Hyndman)

Isso parece correto. Você deve experimentar diferentes números de termos. Observe que agora existe uma fourierfunção no pacote de previsão com uma especificação ligeiramente diferente que, suponho, substitui a do blog de Hyndman. Veja o arquivo de ajuda para sintaxe.

  1. Os componentes P e Q iniciais estão incluídos na série fourier?

Não tenho certeza do que você está perguntando aqui. P e Q geralmente se referem aos graus dos componentes sazonais AR e MA. Usando a abordagem de Fourier, não há componentes sazonais e, em vez disso, existem covariáveis ​​para termos de Fourier relacionados à temporada. Não é mais o ARIMA sazonal, é o ARIMAX onde as covariáveis ​​se aproximam da estação.

Jeremy Coyle
fonte