1

我想创建一个对一个月的工作日数敏感的预测模型。例如,今年(2012 年)圣诞节在一周的中间,因此 12 月明显短于圣诞节在周末期间。我知道像 ForecastPro 这样的商业软件包有能力在他们所谓的“帮助文件”的帮助下做到这一点。我想知道是否有人能够在 R 中证明这一点?

我有以下时间序列,我想预测上一个时期之后的情况。

ts <- structure(c(88.3, 97.1, 110.2, 93.1, 104.7, 102.6, 94.8, 85.6, 
103.8, 109.6, 111.4, 98.6, 102.5, 101.8, 113.6, 99, 104.6, 106, 
99.2, 87.5, 101.6, 111.3, 106.9, 91.6, 99.4, 100.3, 108.3, 106.2, 
104.1, 105.2, 103.9, 85.8, 107.5, 113.7, 110, 97, 101.6, 102.4, 
112, 104.1, 103.3, 104.4, 106.1, 83.9, 112.2, 117.7, 110.2, 104.7, 
101.8, 106.9, 123.3, 112.5, 108.7, 117.4, 109.3, 92.3, 118, 117.6, 
121.3, 108, 106.5, 109.6, 121, 116.3, 114, 121.8, 109.9, 99.1, 
124, 121.2, 128.2, 113.1, 117.5, 119.4, 139.9, 119.4, 131, 131.3, 
117.1, 107.1, 128.7, 133.7, 134.6, 115.3, 126.3, 124.9, 140.5, 
123.6, 129.9, 132.9, 127.6, 113.1, 130, 141.5, 139.4, 112.8, 
132.5, 133.8, 132.7, 138.7, 128.5, 133.2, 130.8, 105.5, 134.4, 
134.4, 118.3, 99.9, 102.8, 103.3, 113.8, 104.6, 101.4, 109.9, 
109.9, 90.6, 118.1, 119.8, 115.8, 104.2, 104.3, 109.5, 128.7, 
116.2, 115.2, 126.2, 116.9, 102.6, 127, 126.6, 129, 115.3, 115.8, 
118.4, 137.3, 119.4, 128.1, 125.7, 117.1, 109.4, 130.3, 123.7, 
127.9, 111.3, 117.1, 120.5, 132, 115.5, 123.3, 122.9, 118.3), .Tsp = c(2000, 
2012.5, 12), class = "ts")

我还有以下关于工作日的信息(尚未映射所有假期),但这不应该限制我们查看这个概念。

workingdays <- structure(c(21L, 21L, 23L, 20L, 23L, 22L, 21L, 23L, 21L, 22L, 
22L, 21L, 23L, 20L, 22L, 21L, 23L, 21L, 22L, 23L, 20L, 23L, 22L, 
21L, 23L, 20L, 21L, 22L, 23L, 20L, 23L, 22L, 21L, 23L, 21L, 22L, 
23L, 20L, 21L, 22L, 22L, 21L, 23L, 21L, 22L, 23L, 20L, 23L, 22L, 
20L, 23L, 22L, 21L, 22L, 22L, 22L, 22L, 21L, 22L, 23L, 21L, 20L, 
23L, 21L, 22L, 22L, 21L, 23L, 22L, 21L, 22L, 22L, 22L, 20L, 23L, 
20L, 23L, 22L, 21L, 23L, 21L, 22L, 22L, 21L, 23L, 20L, 22L, 21L, 
23L, 21L, 22L, 23L, 20L, 23L, 22L, 21L, 23L, 21L, 21L, 22L, 22L, 
21L, 23L, 21L, 22L, 23L, 20L, 23L, 22L, 20L, 22L, 22L, 21L, 22L, 
23L, 21L, 22L, 22L, 21L, 23L, 21L, 20L, 23L, 22L, 21L, 22L, 22L, 
22L, 22L, 21L, 22L, 23L, 21L, 20L, 23L, 21L, 22L, 22L, 21L, 23L, 
22L, 21L, 22L, 22L, 22L, 21L, 22L, 21L, 23L, 21L, 22L, 23L, 20L, 
23L, 22L, 21L, 23L, 20L, 21L, 22L, 23L, 20L, 23L, 22L, 21L, 23L, 
21L, 22L), .Tsp = c(2000, 2013.91666666667, 12), class = "ts")

您会注意到包含工作日的月数大大超出了第一个时间序列 (ts) 的范围。

感谢是否有人可以为我指出正确的方向(例如使用什么函数)来创建一个预测模型,使我能够在考虑工作日系列的同时预测 ts 系列。在预测中,这意味着它将根据预测月份的工作日数调整值。我有点卡住了,似乎无法想象如何使用我所知道的任何预测/时间序列函数来做到这一点。

谢谢你的帮助!约赫姆

4

2 回答 2

4

尝试这个:

require(forecast)
fit <- auto.arima(ts,xreg=window(workingdays,end=2012.5))
fcast <- forecast(fit,xreg=window(workingdays,start=2012.51))
于 2012-11-12T09:20:04.140 回答
2

我会查看与您的问题相关的包的CRAN Timeseries Taskview 。如果您对特定功能/包有任何具体问题,您可以在此处提出新问题。

于 2012-11-11T08:45:07.493 回答