【问题标题】:Weekly Data into Time Series for Forecasting in R将每周数据转换为时间序列以在 R 中进行预测
【发布时间】:2018-05-16 22:27:23
【问题描述】:

我的数据如下所示:

df <- structure(list(Variable =c("A", "B", "A", "B", "A", "B", "A", "B", "A"), 
 Quantity=c("1", "100", "2", "5", "6", "30", "8", "15", "133"),
 YearQuarter=c("2017Q2", "2017Q2", "2017Q3", "2017Q3", "2017Q4", "2017Q4", "2018Q1", "2018Q1", "2018Q2"),
 Week=c("1", "10", "1", "2", "1", "6", "2", "9", "13")),
 class= "data.frame", row.names=c(NA, -9L))

没有实际日期,但我想将其转换为时间序列数据集,以便进行预测。时间序列的格式是每年/季度的第 1-13 周。理想情况下,我可以将其设置为 52 周的频率,这样我就可以为每个预测预测接下来的 52 周。

【问题讨论】:

    标签: r time-series


    【解决方案1】:

    不清楚您想要什么结果,但如果我们假设 df 代表两个系列 AB 并且您想要一个规则间隔的 ts 系列频率为 52,然后使用以下。

    library(zoo)
    
    df2 <- transform(df, Quantity = as.numeric(Quantity))
    toTime <- function(yq, wk) as.numeric(as.yearqtr(yq)) + (as.numeric(wk) - 1)/13/4
    z <- read.zoo(df2, index = c("YearQuarter", "Week"), split = "Variable", FUN = toTime)
    tt <- as.ts(z)
    frequency(tt)
    ## [1] 52
    

    如果您想将 Variable 视为一系列 1 和 2(分别为 AB):

    df3 <- transform(df, Quantity = as.numeric(Quantity), 
                         Variable = match(Variable, c("A", "B")))
    z3 <- read.zoo(df3, index = c("YearQuarter", "Week"), FUN = toTime)
    tt3 <- as.ts(z3)
    

    请注意,大多数时间序列预测例程都需要规则间隔的非缺失数据,并且问题中显示的数据在规则间隔时会产生许多 NA。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-16
      • 2022-09-23
      • 2021-05-05
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 2020-06-13
      • 2014-07-17
      相关资源
      最近更新 更多