我有 4 周上午 9 点到下午 5 点之间咖啡店的 10 分钟间隔等待时间数据。我使用 R 的 ts 进行分析。频率参数应该是多少?
是(48 = 每天间隔数)还是只有 1 个?
我有 4 周上午 9 点到下午 5 点之间咖啡店的 10 分钟间隔等待时间数据。我使用 R 的 ts 进行分析。频率参数应该是多少?
是(48 = 每天间隔数)还是只有 1 个?
您很可能有两个季节性周期:48(每天的间隔数)和 48x5(假设每周 5 天的间隔数)。
R 中的包中的tbats()函数forecast将处理多个季节性时段。例如(x数据在哪里):
library(forecast)
x <- msts(x, seasonal.periods=c(48, 48*5))
fit <- tbats(x)
fc <- forecast(fit, h=48*5)
plot(fc)
或者(如果缺少数据,唯一简单的选择)是使用季节性周期的傅立叶项和 ARMA 错误来处理任何剩余的序列相关性。R 中的 ARIMA 函数不会自动处理多个季节性周期,但以下 R 代码应该可以工作:
x <- ts(x, frequency=48)
seas1 <- fourier(x, K=3)
seas2 <- fourier(ts(x, freq=48*5), K=3)
fit <- auto.arima(x, xreg=cbind(seas1,seas2))
seas1.f <- fourierf(x, K=3, h=48*5)
seas2.f <- fourierf(ts(x, freq=48*5), K=3, h=48*5)
fc <- forecast(fit, xreg=cbind(seas1.f,seas2.f))
可以通过最小化 AIC 来选择傅立叶项的数量(在上述代码中的两个季节期间任意设置为 3)。