Decompose xts hourly time series

后端 未结 2 1800
梦谈多话
梦谈多话 2021-01-06 10:43

I want to decompose hourly time series with decompose, ets, or stl or whatever function. Here is an example code and its output:

相关标签:
2条回答
  • 2021-01-06 11:16

    Why does the timezone for time_index change back to CEST?

    Because you didn't specify tz= in your call to as.POSIXct. It will only pick up the timezone from the string if it's specified by offset from UTC (e.g. -0800). See ?strptime.

    R> head(time_index <- as.POSIXct(time_index1, "UTC"))
    [1] "2012-05-15 12:00:00 UTC" "2012-05-15 13:00:00 UTC"
    [3] "2012-05-15 14:00:00 UTC" "2012-05-15 15:00:00 UTC"
    [5] "2012-05-15 16:00:00 UTC" "2012-05-15 17:00:00 UTC"
    

    When I call tzone or indexTZ there is no timezone but the index clearly show that the times are defined with a timezone.

    All POSIXct objects have a timezone. A timezone of "" simply means R wasn't able to determine a specific timezone, so it is using the timezone specified by your operating system. See ?timezone.

    Only the ets function works because your xts object doesn't have a properly defined frequency attribute. This is a known limitation of xts objects, and I have plans to address them over the next several months. You can work around the current issues by explicitly specifying the frequency attribute after calling the xts constructor.

    R> set.seed(1)
    R> value <- rnorm(n = length(time_index1))
    R> eventdata1 <- xts(value, order.by = time_index)
    R> attr(eventdata1, 'frequency') <- 24  # set frequency attribute
    R> decompose(as.ts(eventdata1))  # decompose expects a 'ts' object
    
    0 讨论(0)
  • 2021-01-06 11:28

    You can use tbats to decompose hourly data:

    require(forecast)
    set.seed(1)
    time_index1 <- seq(from = as.POSIXct("2012-05-15 07:00"),
                   to = as.POSIXct("2012-05-17 18:00"), by="hour")
    value <- rnorm(n = length(time_index1))
    eventdata1 <- msts(value, seasonal.periods = c(24) )
    seasonaldecomp <- tbats(eventdata1)
    plot(seasonaldecomp)
    

    Additionally, using msts instead of xts allows you to specify multiple seasons/cycles, fore instance hourly as well as daily: c(24, 24*7)

    0 讨论(0)
提交回复
热议问题