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

如何用autoplot按原始刻度绘制训练集与预测结果对比图?

Prophet预测后autoplot显示转换后刻度而非原始刻度的解决方法

问题描述

我尝试用autoplot将训练集与预测结果绘制在同一张图中,但输出的是Box-Cox转换后刻度的值,而非原始刻度的值。我的训练集同时包含原始刻度和转换后的刻度数据,求解决方法。

原始代码

# 训练模型
fit_prophet <- train %>% model(prophet(OrdAdj))

# 生成预测
fc_prophet <- fit_prophet %>% 
  forecast(h = "1 month")

# 转换回原始刻度
fc_prophet$QtyEur <- InvBoxCox(fc_prophet$.mean, lambda)

class(fc_prophet$QtyEur)

# 绘图
fc_prophet %>% autoplot(train)

解决方法

核心是在Prophet模型内部直接执行Box-Cox转换,而非提前转换数据再训练模型。这种方式下,预测结果会自动反转换回原始刻度,autoplot就能直接渲染原始刻度的数值。

修改后的代码

# 训练模型(内部做Box-Cox转换)
fit_prophet <- train %>% model(prophet(box_cox(QtyEur, lambda=lambda)))

# 生成预测
fc_prophet <- fit_prophet %>% 
  forecast(h = "1 month")

# 绘图并叠加测试集
fc_prophet %>%
  autoplot(train %>% filter(Date>="2023-01-01")) +
  geom_line(data=test, mapping=aes(y=QtyEur, x=Date), col="red") +
  labs(title="训练集+测试集 vs 预测结果")

效果说明

修改后绘图时,纵轴将直接显示原始的QtyEur刻度值,还能叠加测试集数据进行对比,生成的图可直观展示训练集、测试集与预测结果的原始数值差异:

  • 在Prophet内部做Box-Cox转换的效果图
  • 外部做Box-Cox转换的对比图
  • 修改后autoplot的输出图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 22:00:07