【问题标题】:Extract forecasting data提取预测数据
【发布时间】:2019-04-18 12:17:09
【问题描述】:

我有一个数据框,它由三列(AJT、NET 和 SAT)组成。我的意图是使用预测包对这三个时间序列中的每一个进行预测。为此,我将数据框转换为 ts 对象并使用 snaive 函数进行预测,所以我写了这行代码:

#CODE
      library(forecast)

# Data set
      DATA_SET<-data.frame(
        AJT=seq(1, 48, by = 2),
        NET=seq(1, 24, by = 1),
        SAT=seq(1, 94, by = 4)
        )

      # Making TS object
      TS_SALES<-ts(DATA_SET,start=c(2016,1),frequency = 12)

# Making forecasting with Forecast package      
      SNAIVE_AJT<-snaive(TS_SALES[, 'AJT'],h=5) 
      SNAIVE_NET<-snaive(TS_SALES[, 'NET'],h=5) 
      SNAIVE_SAT<-snaive(TS_SALES[, 'SAT'],h=5) 

# Union forecast in list
      SNAIVE_UNION<-mapply(SNAIVE_AJT, SNAIVE_NET,SNAIVE_SAT, FUN=list, SIMPLIFY=FALSE) 

我放入 SNAIVE_UNION 的 snaive 函数的所有输出,其中包含预测的所有结果。所以这里最重要的部分是“平均值”,它包含按月预测的结果。

SNAIVE_UNION[["mean"]]
  # 
  # # [[1]]
  # # Jan Feb Mar Apr May
  # # 2018  25  27  29  31  33
  # # 
  # # [[2]]
  # # Jan Feb Mar Apr May
  # # 2018  13  14  15  16  17
  # # 
  # # [[3]]
  # # Jan Feb Mar Apr May
  # # 2018  49  53  57  61  65

所以在这里,我的意图是将结果从 SNAIVE_UNION[["mean"]] 放入带有一些函数循环、for 或其他函数的数据表中,如下表所示

        Jan Feb Mar Apr May
------------------------------
AJT     25  27  29  31  33
NET     13  14  15  16  17
SAT     49  53  57  61  65

我问这个是因为这个时间序列只是整个系列的一小部分,我想自动化这个代码。

【问题讨论】:

    标签: r for-loop dplyr forecasting


    【解决方案1】:

    你可以使用:

    pred <- do.call(rbind, SNAIVE_UNION[["mean"]])
    
    #      [,1] [,2] [,3] [,4] [,5]
    # [1,]   25   27   29   31   33
    # [2,]   13   14   15   16   17
    # [3,]   49   53   57   61   65
    

    【讨论】:

      猜你喜欢
      • 2023-01-26
      • 2018-07-31
      • 2018-11-05
      • 2021-09-16
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多