在 R 中重新训练 ROBETS 时间序列预测模型时出错

Error in retraining ROBETS time series forecasting model in R

我正在使用 R 中的 ROBETS 包进行预测。我需要在延长的时间序列上重新训练我的模型。以下是 MWE:

library(robets)
ts.train <- ts(c(60,209,51,34,208,64,122,99,82,194,136,177,110,332,300,151,128,206,129,92,164,814,1286,826,893,949,1014,830,877,605,773,870,1610,970,1192,1222,466,1963,841), start=c(20001, 1), frequency=12)
model.robets <- robets(ts.train)
ts.train.dev <- ts(c(60,209,51,34,208,64,122,99,82,194,136,177,110,332,300,151,128,206,129,92,164,814,1286,826,893,949,1014,830,877,605,773,870,1610,970,1192,1222,466,1963,841,830,812,160,238,53,760), start=c(20001, 1), frequency=12)
model.robets.retrain <- robets(ts.train.dev, model=model.robets) 

我收到以下错误:

Error in robetsTargetFunctionInit(par = par, y = y, errortype = errortype,  : 
  k Problem!

解决您的问题的一个简单方法是添加参数 use.initial.values = TRUE。此参数声明 model.robetsmodel.robets.retrain 使用相同的初始值。这是有道理的,因为默认情况下,初始值是在较短的启动期内估算的,这对于两个时间序列都是相同的。

解决方法:

library(robets)
ts.train <- ts(c(60,209,51,34,208,64,122,99,82,194,136,177,110,332,300,151,128,206,129,92,164,814,1286,826,893,949,1014,830,877,605,773,870,1610,970,1192,1222,466,1963,841), start=c(20001, 1), frequency=12)
model.robets <- robets(ts.train)
ts.train.dev <- ts(c(60,209,51,34,208,64,122,99,82,194,136,177,110,332,300,151,128,206,129,92,164,814,1286,826,893,949,1014,830,877,605,773,870,1610,970,1192,1222,466,1963,841,830,812,160,238,53,760), start=c(20001, 1), frequency=12)
model.robets.retrain <- robets(ts.train.dev, model=model.robets, use.initial.values = TRUE) 

但是,您描述的错误应该不会发生。因此我更改了默认设置,并解决了您发现的错误。 robets 的新版本即将出现在 CRAN 上。