Analizando datos diarios / semanales usando ts en R

Acabo de empezar a jugar con la clase ts para analizar algunos datos de series de tiempo que tengo.

Me da la sensación de que la clase ts no es adecuada para analizar datos diarios o semanales. Casi todos los ejemplos que veo en la web o en “Series de tiempo introductorio con R” de Cowpertwait y Metcalfe usan datos mensuales o anuales.

Me gustaría utilizar ts para analizar datos semanales, ¿no es aconsejable?

El principal problema es que la mayoría de las personas que desean analizar datos diarios o semanales desean hacer algo como usar una frecuencia de 365 días por año o 52 semanas por año, pero el número de días o semanas en un año no es 365 o 52 o incluso constante. Si cae un día en años bisiestos en el caso de datos diarios, por ejemplo, o usa 7 días para cada semana del año, excepto uno que tiene 8 o 9 días en el caso de datos semanales, por ejemplo, puede fudgearlo. Una variedad infinita de esquemas es posible.

Lea este hilo para ver un ejemplo.

La clase ts es adecuada para cualquier tipo de datos que tenga intervalos estrictamente metronómicos entre observaciones. Si ese intervalo es años, meses, días o minutos, no hace ninguna diferencia. Esto lo hace muy adecuado para muchos datos científicos, por ejemplo, observaciones meteorológicas.

Sin embargo, una gran clase de datos relacionados con el tiempo tiene lagunas. Tomemos como ejemplo los precios de cierre de acciones que no existen para los días de fin de semana. Para este tipo de datos, sería mejor usar los paquetes xts (series de tiempo extensibles) o el zoo (observaciones ordenadas de Z, donde Z es la inicial de uno de los autores del paquete).

Enlaces a CRAN:

  • xts
  • zoo

Zoo funciona bien con datos diarios. Por ejemplo, si tiene una serie diaria de flujos de flujo en un vector Q y con las marcas de fecha correspondientes D (creadas usando as.Date (), por ejemplo).

Qz <- zoo (Q, orden.by = D)

creará un objeto que trazará muy bien y puede usar funciones como window () para extraer años individuales, por ejemplo

ventana (Qz, start = as.Date (‘2000-01-01’), end = as.Date (‘2000-31-12’)

Consulte el paquete Zoo para más información.

La unidad de tiempo no entra en juego; solo el número de puntos de datos por unidad (la frecuencia) lo hace. En lo que se refiere a ts y sus funciones, un día es un año o una década es lo que sea. En ningún momento le dices que el tiempo hasta el que se trata es de una semana o un día. ¡No importa!

Supongo que el problema con los datos diarios / semanales es que ambos tienen unidades de salto. Cada cuarto año tiene un adicional de 366 días y cada cuarto año tiene 53 semanas. O lo ha tenido desde 1900. Entonces la “frecuencia” no es constante o una fracción. De lo contrario, ts debería funcionar bien.

La forma más fácil de pasar semanas es usar la fecha del inicio de la semana. En sistemas unix, también puede usar semanas ISO, y también hay un paquete que los implementa. Por supuesto, si sus datos ya están en semanas, solo los necesita para etiquetar los gráficos, etc.