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

R语言SSM状态空间模型协变量预测报错求助

状态空间模型(SSM)协变量预测销售的报错解决

第一个报错原因与解决方向

Model contains time varying system matrices, cannot use argument 'n.ahead'. Use 'newdata' instead.

你的模型包含SSMregression模块,协变量energy_tr是随时间变化的序列,导致系统矩阵具有时变性。n.ahead参数仅适用于系统矩阵固定的模型(如纯趋势/季节模型),时变矩阵的预测必须通过newdata传入未来的协变量数据,这是框架的硬性要求。

第二个报错原因与修正方案

System matrices (excluding Z) contain NA or infinite values, covariance matrices contain values larger than 1e+07

你创建newdata时,重新将所有模型参数(Q、H等)设为NA,但训练好的model_ssm已经包含了估计完成的参数值。newdata不需要重新声明模型结构和待估参数,只需传入未来的协变量和占位用的NA因变量即可,否则系统会因参数缺失报错。

修正后的代码示例

1. 测试集模型性能评估

假设测试集协变量为energy_te,长度与y_test一致:

# 构造测试集newdata,复用训练模型的参数
newdata_test <- SSModel(rep(NA, length(y_test)) ~ 
                          SSMtrend(2, Q = model_ssm$Q) + 
                          SSMregression(~ energy_te, Q = model_ssm$Q[3:3, 3:3]) + 
                          SSMseasonal(period = 12, sea.type = "dummy", Q = model_ssm$Q[4:15, 4:15]), 
                        H = model_ssm$H)

# 生成测试集预测结果
pred_test <- predict(model_ssm, interval = "prediction", level = 0.90, newdata = newdata_test, filtered = TRUE)

# 计算评估指标(MAE、RMSE)
mae <- mean(abs(y_test - pred_test$fit))
rmse <- sqrt(mean((y_test - pred_test$fit)^2))

2. 不同场景的未来销售预测

针对未来场景(如通胀下降对应的协变量序列):

scenario <- read_excel("path")
energy_new <- log(scenario$energy_basecase)  # 场景对应的协变量序列

# 构造场景预测的newdata,复用训练好的模型参数
newdata_scenario <- SSModel(rep(NA, length(energy_new)) ~ 
                              SSMtrend(2, Q = model_ssm$Q) + 
                              SSMregression(~ energy_new, Q = model_ssm$Q[3:3, 3:3]) + 
                              SSMseasonal(period = 12, sea.type = "dummy", Q = model_ssm$Q[4:15, 4:15]), 
                            H = model_ssm$H)

# 生成场景下的销售预测
pred_scenario <- predict(model_ssm, interval = "prediction", level = 0.90, newdata = newdata_scenario, filtered = TRUE)

关键注意事项

  • newdata的模型结构(趋势阶数、季节周期、回归项数量)必须与训练模型完全一致,否则会出现维度不匹配错误。
  • model_ssm$Q是训练后得到的状态协方差矩阵,按顺序对应:趋势项(前2x2)、回归项(第3行/列)、季节项(剩余12x12),提取时需注意索引正确。若不确定维度,可先用dim(model_ssm$Q)查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:31:22