Valor de "Frequência" para intervalos de segundos / minutos, dados em R

28

Estou usando os modelos R (3.1.1) e ARIMA para previsão. Gostaria de saber qual deve ser o parâmetro "frequency", atribuído na ts()função , se estiver usando dados de séries temporais que sejam:

  1. separados por minutos e estão espalhados por 180 dias (1440 minutos / dia)
  2. separados por segundos e estão espalhados por 180 dias (86.400 segundos / dia).

Se bem me lembro da definição, uma "frequência" em st em R é o número de observações por "estação".

Pergunta parte 1:

Qual é a "estação" no meu caso?

Se a estação é "dia", então a "frequência" para minutos = 1440 e 86.400 por segundos?

Pergunta parte 2:

A "frequência" também pode depender do que estou tentando alcançar / prever? por exemplo, no meu caso, eu gostaria de ter uma previsão de curto prazo. Um passo à frente de 10 minutos de cada vez. Seria possível considerar a estação como uma hora em vez de um dia? Nesse caso, frequência = 60 por minutos, frequência = 3600 por segundos?

Tentei, por exemplo, usar frequency = 60 para os dados de minutos e obtive melhores resultados em comparação com frequency = 1440 (usado no fourierlink abaixo por Hyndman) http://robjhyndman.com/hyndsight/forecasting-weekly-data/

(A comparação foi feita usando o MAPE para medir a precisão da previsão)

Caso os resultados sejam arbitrários completos, e a frequência não pode ser alterada. Qual seria realmente a interpretação do uso de freq = 60 nos meus dados?

Também acho que vale a pena mencionar que meus dados contêm sazonalidade a cada hora e a cada duas horas (observando os dados brutos e a função Autocorrelação)

Apython
fonte

Respostas:

38

A "frequência" é o número de observações por "ciclo" (normalmente um ano, mas às vezes uma semana, um dia, uma hora, etc.). É o oposto da definição de frequência na física ou na análise de Fourier, em que "período" é a duração do ciclo e "frequência" é o inverso do período. Ao usar a ts()função em R, as seguintes opções devem ser usadas.

Data      frequency
Annual     1
Quarterly  4
Monthly   12
Weekly    52

Na verdade, não há 52 semanas em um ano, mas 365,25 / 7 = 52,18 em média. Mas a maioria das funções que usam tsobjetos requerem frequência inteira.

Uma vez que a frequência das observações é menor que uma semana, geralmente há mais de uma maneira de lidar com a frequência. Por exemplo, os dados observados a cada minuto podem ter uma sazonalidade horária (frequência = 60), uma sazonalidade diária (frequência = 24x60 = 1440), uma sazonalidade semanal (frequência = 24x60x7 = 10080) e uma sazonalidade anual (frequência = 24x60x365.25 = 525960). Se você deseja usar um tsobjeto, precisa decidir qual deles é o mais importante.

Uma alternativa é usar um mstsobjeto (definido no forecastpacote) que lida com várias séries temporais de sazonalidade. Depois, você pode especificar todas as frequências que possam ser relevantes. Também é flexível o suficiente para lidar com frequências não inteiras.

Você não desejará necessariamente incluir todas essas frequências - apenas aquelas que provavelmente estarão presentes nos dados. Como você tem apenas 180 dias de dados, provavelmente poderá ignorar a sazonalidade anual. Se os dados forem medições de um fenômeno natural (por exemplo, temperatura), você também poderá ignorar a sazonalidade semanal.

Com várias sazonalidades, você pode usar um modelo TBATS ou termos de Fourier em um modelo de regressão ou ARIMA. A fourierfunção do pacote de previsão manipulará mstsobjetos.

Rob Hyndman
fonte
Uma variação sobre esta resposta foi postado no meu blog: robjhyndman.com/hyndsight/seasonal-periods
Rob Hyndman
Prof Hyndman, muito obrigado pelo seu post! Fico feliz em ter minhas perguntas respondidas.
Apython