从预测对象中提取价值

Extracting value from forecasting object

我正在结合 fpp2 包中的数据集和 forecast 包中的预测功能进行造林。此预测的输出是对象列表,其中 SNAIVE_MODELS_ALL.This 个对象包含来自消费、收入、生产和储蓄的预测。

library(dplyr)
library(forecast)
library(fpp2)

MY_DATA<-uschange[,1:4]

# 1.FORECAST FUNCTION          
FORECASTING_FUNCTION_SNAIVE <- function(Z, hrz = 5) {
  timeseries <- msts(Z, start = 1970, seasonal.periods = 4)
  forecast <- snaive(timeseries, biasadj = TRUE, h =  hrz)
}     
FORECASTING_LIST_SNAIVE <- lapply(X = MY_DATA, FORECASTING_FUNCTION_SNAIVE)

# 2.FORECASTING
 SNAIVE_MODELS_ALL<-lapply(FORECASTING_LIST_SNAIVE,  forecast)  

所以我的意图是仅从 SNAIVE_MODELS_ALL 列表的所有预测序列(消费、收入、生产和储蓄)中提取平均预测值。实际上这个值的路径是:

SNAIVE_MODELS_ALL$Consumption$mean
SNAIVE_MODELS_ALL$Income$mean
SNAIVE_MODELS_ALL$Production$mean
SNAIVE_MODELS_ALL$Savings$mean

我尝试使用这段代码,但我不能只提取平均值

test<-lapply(SNAIVE_MODELS_ALL,ts.union)

那么谁能帮我解决这个问题并只提取平均值?

你快到了。如果您在 SNAIVE_MODELS_ALL 上执行 lapply,它会遍历列表的每个顶级元素,例如 SNAIVE_MODELS_ALL[["Consumption"]]。所以剩下的就是为每个元素调出平均值。

lapply(SNAIVE_MODELS_ALL,function(i)i$mean)
# or lapply(SNAIVE_MODELS_ALL,"[[","mean")

$Consumption
          Qtr1      Qtr2      Qtr3      Qtr4
2016                               0.5616798
2017 0.4046822 1.0477074 0.7295978 0.5616798

$Income
          Qtr1      Qtr2      Qtr3      Qtr4
2016                               0.7400626
2017 0.5190254 0.7237208 0.6447008 0.7400626

$Production
           Qtr1       Qtr2       Qtr3       Qtr4
2016                                  -0.8455464
2017 -0.4179305 -0.2033188  0.4749184 -0.8455464

$Savings
           Qtr1       Qtr2       Qtr3       Qtr4
2016                                   3.4827860
2017  2.2365341 -2.7215011 -0.5728579  3.4827860