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

tsibble多输入场景下new_transformation与ARIMA协同失效问题求助

CPI转换函数的修正方案

问题出在你把带双参数的转换函数直接写在响应变量位置,模型将其识别为新的序列名称,而非对原Takings变量的转换处理。在fpp3框架中,带额外参数的自定义转换需要通过模型的transformation参数指定,不能直接包裹响应变量。

修正后的代码如下:

library(fpp3)

# 定义CPI调整的转换与反转换函数,保留cpi参数
cpi_adj <- function(data, cpi) {
  data / cpi * 100
}

cpi_unadj <- function(data, cpi) {
  data * cpi / 100
}

# 创建转换对象
cpi_trans <- new_transformation(cpi_adj, cpi_unadj)

# 建模时通过transformation参数指定转换,并传递数据中的CPI列作为参数
aus_acc_fit <- aus_accommodation %>% 
  model(ARIMA(Takings ~ trend(knots = yearquarter("2008 Q1")) + season(),
              transformation = cpi_trans(cpi = CPI)))

# 查看维多利亚州的模型报告
aus_acc_fit %>% 
  filter(State == "Victoria") %>%
  report()

修正说明

  • 把转换逻辑从响应变量位置移到ARIMA()的transformation参数中,明确告知模型这是对Takings的转换操作
  • 通过cpi_trans(cpi = CPI)将数据中的CPI列作为参数传入转换函数,确保每个观测值使用对应季度的CPI进行调整
  • 修正后模型摘要的Series会显示为Takings,而非转换函数表达式;同时预测时会自动应用反转换,直接得到原始尺度的营业额预测结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 09:03:19