如何 return 从 R 中具有傅里叶季节性的 TSLM 模型进行预测?

How to return forecasts from a TSLM model with Fourier Seasonality in R?

我有以下时间序列,用于每周在特定位置捕获的鱼(每周数据的周期 = 52)并且只有 55 个数据点

Time Series:
Start = c(1, 1)
End = c(2, 3)
Frequency = 52
 [1]  773 1239  842  567  686  930 1165  952 1277  820  364  343  342  444
[15]  432  503  463  372  372  367  423  378  423  459  350  399  433  439
[29]  382  331  326  345  497  579  381  306  423  403  549  412  354  471
[43]  435  420  410  455  534 1064  816  485  744 2260 1542 1988 1233

我一直在按照 Rob J Hyndman 的方法对 TSLM 代码的季节性 https://robjhyndman.com/hyndsight/tslm-decomposition/ 方面使用傅立叶变换,并且网格在 1:26 和最小值之间搜索了正确的 K AIC 是 26。

所以,基本上,我有以下 TSLM 代码:

decompose_df <- tslm(fish_ts ~ trend + fourier(fish_ts,26))

然后尝试使用预测函数获取接下来 10 个周期的预测:

fish_fcst <- forecast(decompose_df, newdata=data.frame(fourier(fish_ts,26,10)))

但我收到此警告:Warning: 'newdata' had 10 rows but variables have 55 rows 和预测 returns 55 个值与输入 ts 对象略有不同,但似乎遵循类似的趋势,而不是 10 个预测周期。谁能告诉我如何获得预测或我做错了什么?

正在使用 dput 进行编辑,抱歉!

structure(c(773, 1239, 842, 567, 686, 930, 1165, 952, 1277, 820, 
364, 343, 342, 444, 432, 503, 463, 372, 372, 367, 423, 378, 423, 
459, 350, 399, 433, 439, 382, 331, 326, 345, 497, 579, 381, 306, 
423, 403, 549, 412, 354, 471, 435, 420, 410, 455, 534, 1064, 
816, 485, 744, 2260, 1542, 1988, 1233), .Tsp = c(1, 2.03846153846154, 
52), class = "ts")

提前致谢!

使用 forecast 软件包的 v8.15,您的代码对我有用。因此,也许您使用的是旧版本的包——几个版本前匹配回归变量名称存在一些问题。

无论如何,这个模型是没有意义的。您有 55 个观测值,但您的模型有 53 个自由度。也许您误解了 AIC 值。它们的范围从 -∞ 到 ∞,您想要最接近 -∞ 的那个, 而不是 最接近零的那个。我希望 K 的值小于 5,观察很少。