Valor de "frecuencia" para datos de intervalos de segundos / minutos en R

28

Estoy usando R (3.1.1) y modelos ARIMA para pronosticar. Me gustaría saber cuál debería ser el parámetro de "frecuencia", que se asigna en la ts()función , si estoy usando datos de series temporales que son:

  1. separado por minutos y se extiende por 180 días (1440 minutos / día)
  2. separado por segundos y se extiende por 180 días (86,400 segundos / día).

Si recuerdo bien la definición, una "frecuencia" en ts en R, es el número de observaciones por "temporada".

Pregunta parte 1:

¿Cuál es la "temporada" en mi caso?

Si la temporada es "día", ¿es la "frecuencia" por minutos = 1440 y 86,400 por segundos?

Pregunta parte 2:

¿Podría la "frecuencia" también depender de lo que estoy tratando de lograr / pronosticar? Por ejemplo, en mi caso, me gustaría tener un pronóstico a muy corto plazo. Un paso por delante de 10 minutos cada vez. ¿Sería posible considerar la temporada como una hora en lugar de un día? En ese caso, ¿frecuencia = 60 por minutos, frecuencia = 3600 por segundos?

Intenté, por ejemplo, utilizar la frecuencia = 60 para los datos por minuto y obtuve mejores resultados en comparación con la frecuencia = 1440 (utilizado fourierver el enlace a continuación por Hyndman) http://robjhyndman.com/hyndsight/forecasting-weekly-data/

(La comparación se realizó utilizando MAPE para medir la precisión del pronóstico)

En caso de que los resultados sean completamente arbitrarios, y la frecuencia no se pueda cambiar. ¿Cuál sería en realidad la interpretación del uso de freq = 60 en mis datos?

También creo que vale la pena mencionar que mis datos contienen estacionalidad cada hora y cada dos horas (al observar los datos sin procesar y la función de Autocorrelación)

Apython
fuente

Respuestas:

38

La "frecuencia" es el número de observaciones por "ciclo" (normalmente un año, pero a veces una semana, un día, una hora, etc.). Esto es lo opuesto a la definición de frecuencia en física, o en el análisis de Fourier, donde "período" es la duración del ciclo, y "frecuencia" es el inverso del período. Cuando se usa la ts()función en R, se deben usar las siguientes opciones.

Data      frequency
Annual     1
Quarterly  4
Monthly   12
Weekly    52

En realidad, no hay 52 semanas en un año, pero 365.25 / 7 = 52.18 en promedio. Pero la mayoría de las funciones que usan tsobjetos requieren una frecuencia entera.

Una vez que la frecuencia de las observaciones es menor a una semana, generalmente hay más de una forma de manejar la frecuencia. Por ejemplo, los datos observados cada minuto pueden tener una estacionalidad horaria (frecuencia = 60), una estacionalidad diaria (frecuencia = 24x60 = 1440), una estacionalidad semanal (frecuencia = 24x60x7 = 10080) y una estacionalidad anual (frecuencia = 24x60x365.25 = 525960). Si desea utilizar un tsobjeto, debe decidir cuál de estos es el más importante.

Una alternativa es usar un mstsobjeto (definido en el forecastpaquete) que maneja múltiples series temporales de estacionalidad. Luego puede especificar todas las frecuencias que podrían ser relevantes. También es lo suficientemente flexible como para manejar frecuencias no enteras.

No necesariamente querrá incluir todas estas frecuencias, solo las que probablemente estén presentes en los datos. Como solo tiene 180 días de datos, probablemente pueda ignorar la estacionalidad anual. Si los datos son mediciones de un fenómeno natural (p. Ej., Temperatura), también puede ignorar la estacionalidad semanal.

Con múltiples estacionalidades, puede usar un modelo TBATS o términos de Fourier en una regresión o modelo ARIMA. La fourierfunción del paquete de pronóstico manejará mstsobjetos.

Rob Hyndman
fuente
Una variación de esta respuesta ha sido publicada en mi blog: robjhyndman.com/hyndsight/seasonal-periods
Rob Hyndman
Prof. Hyndman, muchas gracias por tu publicación. Me alegra que me respondan mis preguntas.
Apython