Modelagem de séries temporais desigualmente espaçadas

12

Eu tenho uma variável contínua, amostrada durante um período de um ano em intervalos irregulares. Alguns dias têm mais de uma observação por hora, enquanto outros não têm nada por dias. Isso torna particularmente difícil detectar padrões nas séries temporais, porque alguns meses (por exemplo, outubro) são altamente amostrados, enquanto outros não.

insira a descrição da imagem aqui

Minha pergunta é qual seria a melhor abordagem para modelar essa série temporal?

  • Acredito que a maioria das técnicas de análise de séries temporais (como o ARMA) precisa de uma frequência fixa. Eu poderia agregar os dados, para ter uma amostra constante ou escolher um subconjunto dos dados que é muito detalhado. Com as duas opções, faltavam algumas informações do conjunto de dados original, que poderiam revelar padrões distintos.
  • Em vez de decompor a série em ciclos, eu poderia alimentar o modelo com todo o conjunto de dados e esperar que ele pegasse os padrões. Por exemplo, eu transformei a hora, dia da semana e mês em variáveis ​​categóricas e tentei uma regressão múltipla com bons resultados (R2 = 0,71)

Eu tenho a ideia de que técnicas de aprendizado de máquina como a RNA também podem escolher esses padrões em séries temporais desiguais, mas eu queria saber se alguém já tentou isso e poderia me fornecer alguns conselhos sobre a melhor maneira de representar padrões de tempo em uma rede Neural.

doublebyte
fonte

Respostas:

4

ARIMA, suavização exponencial e outros de fato exigem pontos de amostra uniformemente espaçados. Enquanto você escreve, você pode agrupar seus dados (digamos em dias), mas como você também escreve, você perde informações. Além disso, você pode acabar com valores ausentes, portanto, seria necessário imputá-lo, pois o ARIMA não é muito bom em lidar com valores ausentes.

Uma alternativa, como você escreve novamente, é alimentar manequins de tempo em uma estrutura de regressão. Eu, pessoalmente, não gosto de manequins categóricos, porque isso implica um corte acentuado entre as categorias vizinhas. Isso geralmente não é muito natural. Então, eu prefiro olhar splines periódicos com diferentes periodicidades. Essa abordagem tem a vantagem de lidar com sua amostragem desigual e também com valores ausentes.

R2

Finalmente, não exagere na modelagem. Apenas observando seus dados, é óbvio que algo aconteceu em junho, em um dia de agosto e em setembro / outubro. Eu sugiro que você primeiro descobrir o que este algo era e incluir isso no seu modelo, por exemplo, como variáveis explicativas (que você pode incluir em Arimax se você quiser). O que aconteceu lá obviamente não é sazonal.

Stephan Kolassa
fonte
0

Como sua pergunta e a boa resposta de @Stephan Kolassa discutem o ARIMA e as redes neurais em particular, eu gostaria de mencionar que você pode dar o forecastpacote de Ruma vez - ele tem uma nnetarfunção que treina uma rede neural de avanço simples com 1 camada oculta e entradas atrasadas.

Talvez você possa tentar algo como:

  • extraia muitos recursos para cada uma de suas observações, como dia da semana, dia do mês, dia da semana / fim de semana etc. (somente data e hora são mencionadas como uma dependência potencial na sua pergunta, por isso incluí isso - mas você pode incluir todas as coisas possíveis acredite que possa estar influenciando sua variável de interesse).
  • valores defasados ​​de sua variável de interesse, bem como as informações de data e hora (como o dia da semana etc.) seriam suas entradas. você pode incluir as variáveis ​​datetime como regressores externos ( xreg), por exemplo.

e preveja os valores futuros de seu var de interesse com base nessas informações. Além disso, você também pode pensar em incluir a média observada e a variação / desvio em cada dia do valor que deseja prever. Isso significaria que você precisaria primeiro prever sua média esperada e sua variação com, por exemplo, o ARIMA e, em seguida, adicionar isso como entrada adicional à abordagem mencionada acima.

hth.

davidski
fonte