如何在fable包中使用新训练数据重拟合已训练的ARIMA模型
解决方案
fable框架下已拟合的模型对象(mable类型)本身存储了完整的模型结构定义,不需要额外传入原始公式,你可以用fabletools::refit()函数直接完成新数据上的重拟合,这是最简洁的实现方案。
方法1:直接使用refit()函数(推荐)
refit()就是专门设计用来在新数据集上复用已有模型结构重拟合的接口,不需要手动提取公式,默认会保留原模型已经确定的阶数、正则项等配置,仅用新数据重估参数,完全匹配步进交叉验证的使用场景:
# 首先把新训练数据转为和原始数据结构一致的tsibble # 需包含相同的索引列、解释变量x和响应变量y new_tsibble <- as_tsibble(new_training_data) # 直接传入已拟合的my_arima完成重拟合 refit_arima <- refit(my_arima, new_data = new_tsibble)
方法2:手动提取模型定义重拟合
如果需要更灵活的自定义操作,也可以从已拟合的mable对象中提取模型定义,再传入model()完成拟合:
library(fabletools) # 从已拟合模型中提取完整模型定义 model_def <- my_arima %>% extract_model_def() # 新数据转tsibble后用提取到的定义拟合 refit_arima <- as_tsibble(new_training_data) %>% model(!!model_def)
注意事项
- 两种方法都不需要提前持有原始拟合公式,所有模型结构信息都从已传入的已拟合模型对象中读取,符合你的函数入参要求。
- 传入的
new_training_data需要和原始训练数据的变量名、tsibble索引结构完全一致,否则会拟合失败。
内容的提问来源于stack exchange,提问作者jay
相关产品推荐
相关产品推荐

