我的目标是预测每日在两个不同渠道登记的人数。
周的季节性很强,尤其是周末,而且每年都会受到影响。此外,我有几个特别的活动日,这与其他日子有很大的不同。
首先,我在这两个通道上应用了TBATS模型。
x.msts <- msts(Channel1_reg,seasonal.periods=c(7,365.25))
# fit model
fit <- tbats(x.msts)
fit
plot(fit)
forecast_channel1 <- forecast(fit,h=30)第一频道:
TBATS(0, {2,3}, -, {<7,3>, <365.25,2>})
Call: tbats(y = x.msts)
Parameters
Lambda: 0
Alpha: 0.0001804516
Gamma-1 Values: -1.517954e-05 1.004701e-05
Gamma-2 Values: -3.059654e-06 -2.796211e-05
AR coefficients: 0.249944 0.544593
MA coefficients: 0.215696 -0.361379 -0.21082第二频道:
BATS(0, {2,2}, 0.929, -)
Call: tbats(y = y.msts)
Parameters
Lambda: 0
Alpha: 0.1652762
Beta: -0.008057904
Damping Parameter: 0.928972
AR coefficients: -0.586163 -0.676921
MA coefficients: 0.924758 0.743675如果我预测第二个频道,我只能得到空白值,而不是任何预测。
谢谢大家!
发布于 2016-02-28 22:32:43
tbats和bats有时是不稳定的,您的第二个模型显示了无限的预测。已经有一些关于类似问题的错误报告。
在任何情况下,由于您希望使用事件信息,您将更好地构建带有ARMA错误的调和回归模型。
例如,假设您的事件信息被记录为虚拟变量event1。然后,可以按以下方式对模型进行拟合:
harmonics <- fourier(x.msts, K=c(2,2))
fit1 <- auto.arima(x.msts, lambda=0,
xreg=cbind(harmonics,event1), seasonal=FALSE)
f1 <- forecast(fit1,
xreg=cbind(fourierf(x.msts, K=c(2,2), h=200), rep(0,200)))这假设事件不会在接下来的200天内发生(因此是200天)。我使用2级谐波已经有几周和几年了。调整这些以最小化模型的AICc。
这个模型实际上非常类似于您正在拟合的TBATS模型,只不过lambda值是指定的,而不是估计的,季节性是随着时间而固定的,而不是允许演化的。其优点是谐波回归模型趋于更稳定,并允许包含协变量。
https://stackoverflow.com/questions/35649734
复制相似问题