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

固定Holt模型参数对测试集做一步预测时参数变动问题

问题原因

你现有写法的平滑参数发生变动,是因为holt()函数仅传入model参数时,默认仍会基于新的测试集数据重新估计模型参数,不会自动沿用训练阶段得到的固定参数。

解决方法

有两种常用实现方式,都可以达到固定训练好的参数、在测试集直接预测的效果:

方式1:显式传入训练得到的所有参数,关闭参数估计

核心是调用holt()拟合测试集时,手动传入训练阶段得到的平滑参数、初始水平与趋势值,同时设置estimate = FALSE禁止重新估计参数。

library(forecast)
# 训练集拟合初始Holt模型
set.seed(123) # 可加随机种子保证结果可复现
train_data <- rnorm(500) + runif(500)
m_train <- holt(train_data)

# 提取训练得到的固定参数
train_alpha <- m_train$model$par["alpha"]
train_beta <- m_train$model$par["beta"]
train_l0 <- m_train$model$initstate[1]
train_b0 <- m_train$model$initstate[2]

# 测试集拟合时完全沿用训练参数,不重新估计
test_data <- rnorm(100)
m_test <- holt(test_data,
               alpha = train_alpha,
               beta = train_beta,
               initial = list(l = train_l0, b = train_b0),
               estimate = FALSE)

# 验证参数与训练集完全一致
m_train$model$par
m_test$model$par

方式2:使用refit()方法直接复用模型

forecast包为Holt模型对应的ets类提供了更简便的refit()接口,设置reestimate = FALSE即可直接复用训练好的全部参数:

# 直接复用m_train的参数拟合测试集
m_test_refit <- refit(m_train, newdata = test_data, reestimate = FALSE)
# 验证参数一致
m_test_refit$model$par

内容的提问来源于stack exchange,提问作者Szymon Fraś

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:06:02