从预测对象中提取价值
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
我正在结合 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