我正在使用来自fpp2软件包的数据集和来自预测软件包的预测函数的组合进行森林预测。此预测的输出是带有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)那么有没有人能帮我解决这个问题,只提取均值呢?
发布于 2019-11-28 04:59:09
你就快到了。如果你在消费上使用lapply,它会遍历列表的每个顶级元素,例如SNAIVE_MODELS_ALL [“SNAIVE_MODELS_ALL”]。剩下的就是调用每个元素的平均值。
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.4827860https://stackoverflow.com/questions/59071494
复制相似问题