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

如何调整Fable预测的.mean值并使autoplot显示修改结果?

解决Fable预测对象修改后autoplot不生效的问题

问题核心:fable的autoplot()读取的是预测分布列(比如你的Turnover列),而非单独的.mean列。直接修改.mean只是更新了衍生计算值,并没有改变底层的分布对象,所以绘图不会变化。

解决方案1:更新预测分布列的参数

针对不同的分布类型(比如正态分布、泊松分布等),直接修改分布对象的参数,同步更新.mean列:

以正态分布为例,自定义lift_fc函数:

library(fpp3)
library(distributional)

lift_fc <- function(fable_obj, lift) {
  fable_obj %>%
    mutate(
      # 更新Turnover分布的均值为原均值乘以lift,保留原标准差
      Turnover = dist_normal(mean = .mean * lift, sd = sqrt(Turnover$variance)),
      # 同步更新.mean列
      .mean = .mean * lift
    )
}

如果你的预测分布是其他类型(比如dist_poisson),需要对应调整分布构造函数的参数,比如泊松分布只需修改lambda参数:

Turnover = dist_poisson(lambda = .mean * lift)

解决方案2:将分布转为点预测(丢失区间信息)

如果不需要预测区间,只想基于修改后的.mean绘图,可以把分布列替换为点预测类型:

lift_fc <- function(fable_obj, lift) {
  fable_obj %>%
    mutate(
      .mean = .mean * lift,
      # 将分布列转为点预测
      Turnover = as_distribution(.mean, dist_type = "point")
    )
}

验证效果

修改后调用autoplot(level = NULL)就能看到翻倍后的预测曲线了:

cafe_fc %>% lift_fc(lift = 2) %>% autoplot(level = NULL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:12:12