tiempo studio serie rpubs pronosticos mensual ejemplos diarias correlograma r time-series

studio - series de tiempo mensual en r



Modelado de series temporales R en datos semanales usando el objeto ts() (4)

Estoy tratando de hacer un modelado y pronóstico de series de tiempo usando R basado en datos semanales, como a continuación:

biz week Amount Count 2006-12-27 973710.7 816570 2007-01-03 4503493.2 3223259 2007-01-10 2593355.9 1659136 2007-01-17 2897670.9 2127792 2007-01-24 3590427.5 2919482 2007-01-31 3761025.7 2981363 2007-02-07 3550213.1 2773988 2007-02-14 3978005.1 3219907 2007-02-21 4020536.0 3027837 2007-02-28 4038007.9 3191570 2007-03-07 3504142.2 2816720 2007-03-14 3427323.1 2703761 ... 2014-02-26 99999999.9 1234567

Acerca de mis datos: Como se vio anteriormente, cada semana está etiquetada por el primer día de la semana (mi semana comienza el miércoles y termina el martes). Cuando construyo mi objeto ts , lo intenté

ts <- ts(df, frequency=52, start=c(2007,1))

El problema que tengo es:

1) Algunos años pueden tener 53 semanas, por lo que la frequency=52 no funcionará en esos años;

2) Mi semana / fecha de inicio es 2006-12-27, ¿cómo debo configurar el parámetro de inicio? start=c(2006,52) o start=c(2007,1) desde la semana de 2006-12-27 ¿realmente cruzas el límite del año? Además, para el modelo, ¿es mejor tener datos de un año completo (por ejemplo, para el año de inicio de 2007 si solo tengo datos de un año parcial), es mejor no usar 2007, en lugar de comenzar con 2008? ¿Qué hay del 2014? Ya que aún no es un año completo, ¿debería usar lo que tengo para modelar o no? De cualquier manera, todavía tengo un problema con la inclusión o no de esas semanas en el límite del año, como 2006-12-27. ¿Debería incluirlo como wk 1 para 2007 o la última semana de 2006?

3) Cuando uso ts <- ts(df, frequency=52, start=c(2007,1)) y luego lo ts <- ts(df, frequency=52, start=c(2007,1)) , obtuve los resultados que se muestran a continuación, así que en lugar de 2007.01, 2007.02, 2007.52 ..., I consiguió 2007.000, 2007.019, ..., que obtiene de 1/52 1/52=0.019 . Esto es matemáticamente correcto pero no es realmente fácil de interpretar. ¿Hay una manera de etiquetarlo como la fecha en sí misma como un marco de datos o al menos 2007 wk1, 2007 wk2...

=========

Time Series: Start = c(2007, 1) End = c(2014, 11) Frequency = 52 Amount Count 2007.000 645575.4 493717 2007.019 2185193.2 1659577 2007.038 1016711.8 860777 2007.058 1894056.4 1450101 2007.077 2317517.6 1757219 2007.096 2522955.8 1794512 2007.115 2266107.3 1723002

4) Mi objetivo es modelar estos datos semanales y luego intentar descomponerlos para ver los componentes estacionales. Parece que tengo que usar la función ts() para convertir a un objeto ts sp que puedo usar la función decompose() . Intenté xts() y obtuve un error que decía " time series has no or less than 2 periods" . Supongo que esto se debe a que xts() no me deja especificar la frecuencia, ¿verdad?

xts <- xts(df,order.by=businessWeekDate)

5) Busqué la respuesta en este foro y en otros lugares también; la mayoría de los ejemplos son mensuales, y aunque hay algunas preguntas de series de tiempo semanales, ninguna de las respuestas es sencilla. Esperemos que alguien pueda ayudar a responder mis preguntas aquí.


Con respecto a su cuarta pregunta, creo que el error se debe a que tiene solo un dato de período (52 semanas), y es posible que necesite otros datos de 52 semanas para completar 2 períodos.


El uso de frecuencias no enteras funciona bastante bien y es compatible con la mayoría de los modelos (auto.arima, ets, ...). Para la fecha de inicio, solo uso las funciones de conveniencia en lubridate. La importancia aquí es ser consistente cuando se trabaja con múltiples series temporales de fechas de inicio y finalización potencialmente diferentes.

library(lubridate) ts(df$Amount, freq=365.25/7, start=decimal_date(ymd("2006-12-27")))


Primero asegúrese de que sus datos tengan exactamente 52 datos por año. Para hacerlo, identifique los años con 53 datos y elimine el que sea menos importante para su patrón de estacionalidad (por ejemplo, no elimine una semana en diciembre si desea verificar la estacionalidad de las ventas de Navidad (!)

Xts es un buen formato ya que es más flexible, sin embargo, todas las herramientas de descomposición y pronóstico generalmente funcionan con ts, ya que requieren un número fijo de datos por ciclo.

Con respecto a su pregunta sobre los años no completos. No debería ser un problema. R no sabe cuándo es enero o diciembre, por lo tanto, un año puede comenzar y terminar en cualquier momento.


ur respuesta a la pregunta 3. No da w1, w2 pero sí da semanas en el orden correcto. Esta es una parte de mi código

fit <- auto.arima(sales) fcast<-forecast(fit,h=13) dfcast<-data.frame(fcast) b<-data.frame(seq(as.Date(maxdate+7), by = "week", length.out = input$ahead)) ffcast<-as.data.frame(cbind(b,dfcast$Point.Forecast,dfcast$Lo.95,dfcast$Hi.95)) names(ffcast)<-c("Week","Forecast","Lo-95","Hi-95")