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
相关产品推荐
相关产品推荐

