You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何绘制workflow_set模型回测结果、实际值与预测值对比图

解决方法

步骤1:生成历史回测拟合值

你已经完成了最优模型的训练,只需要将训练集(历史实际数据)传入训练好的best_finalized模型即可得到回测拟合结果,在你现有代码基础上新增以下代码:

# 生成历史回测拟合值
backtest_tbl <- best_finalized %>%
  predict(new_data = train_tbl) %>%
  bind_cols(train_tbl %>% select(Date)) %>%
  mutate(type = "回测趋势线") %>%
  rename(Close = .pred)

小提示:如果运行时提示找不到cart_spec报错,是因为你示例代码中仅定义了cubist_spec和rf_spec,没有定义CART模型的参数规范,可以将base的models列表中的cart_base = cart_spec替换为rf_base = rf_spec即可正常运行。

步骤2:合并三类数据绘图

现在你有三类需要绘制的数据:历史实际收盘价、历史回测拟合值、未来预测值,直接合并后绘图即可得到三条曲线的对比效果,替换你原有的绘图代码为:

# 合并三类数据并绘图
bind_rows(
  # 历史实际收盘价
  train_tbl %>% mutate(type = "实际收盘价"),
  # 历史回测拟合值
  backtest_tbl,
  # 未来预测值
  prediction_tbl %>% mutate(type = "预测值")
) %>%
  ggplot(aes(x = Date, y = Close, color = type)) +
  geom_line(linewidth = 1.2) +
  labs(x = "日期", y = "收盘价", color = "数据类型") +
  theme_minimal()

可选:获取无数据泄露的滑窗回测结果

如果你需要更贴近实盘效果、无数据泄露的回测结果,可以直接从滑窗调参的结果中提取最优参数对应的交叉验证预测值,避免全量训练集拟合带来的效果高估:

# 提取滑窗交叉验证的回测结果
backtest_cv_tbl <- wflwset_tune_results %>%
  extract_workflow_set_result(id = b_mod) %>%
  collect_predictions(parameters = best_param) %>%
  bind_cols(train_tbl %>% slice(.$.row) %>% select(Date)) %>%
  select(.pred, Date) %>%
  mutate(type = "滑窗回测结果") %>%
  rename(Close = .pred)

将backtest_tbl替换为backtest_cv_tbl即可绘制更客观的回测表现。

内容的提问来源于stack exchange,提问作者KBE11416

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:06:00