如何使用R的fable包创建以中位数替代均值的组合模型?
用fable/fabletools实现中位数组合预测模型
你当前的代码存在两处关键问题:一是括号匹配错误(ARIMA()后面多了一个右括号),二是向cmbn_args传参的方式不对,导致无法正确调用中位数聚合逻辑。
以下是修正后的可运行代码:
首先加载依赖包:
library(fable) library(fabletools) library(tsibble)
模拟示例时间序列数据(可替换为你的实际数据集):
set.seed(123) y <- tsibble( date = seq.Date(as.Date("2020-01-01"), by = "month", length.out = 60), y = exp(rnorm(60, mean = 5, sd = 0.2) + 0.01*1:60 + sin(2*pi*1:60/12)) )
构建基于中位数的组合模型:
comb1 <- combination_model( TSLM(log(y) ~ trend() + season()), ARIMA(log(y), stepwise = TRUE, approximation = TRUE), THETA(log(y)), ETS(log(y)), cmbn_fn = combination_ensemble, cmbn_args = list(fun = median) ) # 拟合模型并生成预测 fit <- y %>% model(comb = comb1) fc <- fit %>% forecast(h = 12)
关键说明:
combination_ensemble函数的fun参数用于指定聚合单个模型预测结果的函数,直接传入fun = median即可实现中位数组合- 需修正原始代码中的括号错误,所有子模型都要放在
combination_model()的前序参数位置,不能提前闭合括号
内容的提问来源于stack exchange,提问作者Brian Head
相关产品推荐
相关产品推荐

