首页 > 解决方案 > 提取预测数据

问题描述

我有一个数据框,它由三列(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

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

标签: rfor-loopdplyrforecasting

解决方案


您可以使用:

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

推荐阅读