8 votos

Modelización de series temporales con datos de alta frecuencia

Estoy buscando algunos consejos de previsión cuando se trata de datos de series temporales estacionales que tienen un gran número de observaciones. Por "grande" me refiero a unos pocos miles --- estoy acostumbrado a que tales tamaños en la Minería de Datos se consideren bastante pequeños, pero parece que en el modelado de series temporales eso es bastante difícil de manejar para muchas de las herramientas que he probado.

Por ejemplo, este es un conjunto de datos de juguete que registra una observación una vez por minuto, durante cinco días:

set.seed(123)
t <- 1:(5*24*60)
x <- ts(15 + 0.001*t + 10*sin(2*pi*t/(length(t)/5)) + rnorm(length(t)), freq=length(t)/5)
plot(x, type='l')

time series plot

(En mi conjunto de datos operativos reales, los valores se observan a intervalos irregulares, pero los he regularizado haciendo algo como x <- approx(d$t, d$x, xout=1:(5*24*60)) primero. También son bienvenidos los consejos sobre si eso es aconsejable, o enfoques alternativos).

Así pues, la estacionalidad en este conjunto de datos tiene un desfase de 1.440 observaciones, lo que parece estar muy fuera del rango en el que se encuentran cosas como auto.arima() (en el forecast paquete) encontrará:

m1 <- auto.arima(x)
plot(forecast(m1))

prediction plot

Y no estoy muy seguro de cómo interpretar el ets() pero no parece ser capaz de manejar estos datos de tamaño, y no parece recoger la estacionalidad:

> m2 <- ets(x, 'MAZ')
> plot(forecast(m2))
Error in forecast.ets(m2) : Forecast horizon out of bounds
> m2$method
[1] "ETS(M,A,N)"

¿Qué hacer a partir de ahora? ¿Alguna sugerencia?

10voto

Senseful Puntos 116

Los modelos ARIMA y ETS están diseñados para una estacionalidad relativamente corta (por ejemplo, mensual o trimestral) y no funcionan bien para períodos estacionales mucho más largos. El sitio web ets() Sin embargo, el error debería ser capturado --- lo arreglaré en la próxima versión del paquete de previsión.

En su lugar, podrías probar con un modelo de serie de Fourier:

library(forecast)
X <- fourier(x, 3)
m3 <- tslm(x ~ X + trend)
plot(forecast(m3,newdata=data.frame(X=I(fourierf(x,3,2880))),h=2880))

Ver mi entrada del blog sobre la previsión con periodos estacionales largos para más discusión.

0 votos

Véase también otra entrada de blog del autor, "Previsión de datos semanales" al seleccionar el número de términos de Fourier.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X