这篇文章很长,希望大家多多包涵,有错误的地方请指正。
我的目标是根据 3 或 4 周的历史数据生成每日预测。
该数据是其中一条变压器线路的本地负载的 15 分钟数据。我无法找到季节性 ARIMA 过程的模型顺序。考虑电力需求时间序列:
原始时间序列 http://i.share.pho.to/80d86574_l.png
当将前 3 周作为子集并进行差分时,计算以下 ACF/PACF 图:
子集 http://i.share.pho.to/5c165aef_l.png
第一个区别 http://i.share.pho.to/b7300cc2_l.png
季节性和第一个差异 http://i.share.pho.to/570c5397_l.png
这看起来像这个系列有点固定。但季节性也可以是每周一次(请参阅季节性差异周和二阶差异 [此处] http://share.pho.to/3owoq,您怎么看?)
所以让我们得出结论,模型的形状为:
在最后一个图中,滞后 96 处的明显尖峰表明存在季节性 MA(1) 分量(也许 AR(1) 可能以及 PACF 中也存在明显尖峰)。滞后 1:4 处的尖峰表示 MA(4) 分量,它与 PACF 中的指数衰减相对应,具有一点想象力。
因此,手动选择的初始模型可能是:
Series: x
ARIMA(0,1,4)(0,1,1)[96]
Coefficients:
ma1 ma2 ma3 ma4 sma1
-0.2187 -0.2233 -0.0996 -0.0983 -0.9796
s.e. 0.0231 0.0234 0.0257 0.0251 0.0804
sigma^2 estimated as 364612: log likelihood=-15138.91
**AIC=30289.82 AICc=30289.87 BIC=30323.18**
auto.arima 函数计算以下模型(逐步逼近 TRUE,否则需要很长时间才能收敛):
}
Series: x
ARIMA(1,1,1)(2,0,2)[96]
Coefficients:
ar1 ma1 sar1 sar2 sma1 sma2
0.7607 -1.0010 0.4834 0.4979 -0.3369 -0.4168
s.e. 0.0163 0.0001 0.0033 0.0116 0.0216 0.0255
sigma^2 estimated as 406766: log likelihood=-15872.02
**AIC=31744.99 AICc=31745.05 BIC=31784.25**
这意味着没有应用季节性差异。这 是两个模型的残差。Ljung Box 统计量给出了一个非常小的 p 值,表明仍然存在一些自相关(如果我错了,请纠正我)。
预测
因此,要确定哪个更好,那么样本外准确度测试是最好的。因此,对于这两种模型,都会提前 24 小时进行预测,并相互比较。结果是: auto.arima http://i.share.pho.to/5d1dd934_l.png 手动模型 http://i.share.pho.to/7ca69c97_l.png
汽车:
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set -2.586653 606.3188 439.1367 -1.284165 7.599403 0.4914563 -0.01219792 NA
Test set -330.144797 896.6998 754.0080 -7.749675 13.268985 0.8438420 0.70219229 1.617834
手动的
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U
Training set 2.456596e-03 589.1267 435.6571 -0.7815229 7.509774 0.4875621 -0.002034122 NA
Test set 2.878919e+02 919.7398 696.0593 3.4756363 10.317420 0.7789892 0.731013599 1.281764
问题
您可以认为这是对数据集前三周的分析。我在脑海中挣扎着以下问题:
- 如何选择最好的 ARIMA 模型(通过尝试所有不同的顺序并检查最好的 MASE/MAPE/MSE?其中性能测量的选择可以自己讨论..)
- 如果我为每一天的预测(如在线预测)生成一个新模型和预测,我是否需要考虑年度趋势以及如何考虑?(因为在这么小的一个子集中,我的猜测是趋势可以忽略不计)
- 您是否期望模型顺序在整个数据集中保持不变,即当采用另一个子集时会给我相同的模型?
- 有什么好的方法,在这个方法内应付假期?或者为此需要带有外部假日假人的 ARIMAX 吗?
- 我是否需要使用傅里叶级数方法来尝试长季节性周期
seasonality=672
中讨论的模型 ? - 如果是这样
fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)
的话(函数傅立叶在 Hyndman 的博客文章中定义) - 傅立叶级数中是否包含初始 P 和 Q 分量?
从FPP获得的大部分理论知识,很棒的东西!
在建议使用指数平滑或(动态)线性回归之前,这也在进行比较。
数据
https://www.dropbox.com/sh/mzx61sskya5ze6x/Zq3A7Q6htH/trafo.txt
代码
data<-read.csv("file", sep=";")
load<-data[,3]
我在值前一周删除了几个零值
stepback<-672
load[is.na(load)] <- 0 # Assumed no 0's in first 672 values!
idx <- which(load == 0)
idx <- idx[which(idx>stepback)]
load[idx] <- load[idx-stepback]
ED<-ts(load,start=0, end=c(760,96),frequency=96)
x<-window(ED,start=0, end=c(20,96))
也可以发布一个可重现的示例,但这会使帖子更长,但如果需要,可以。所以如果有什么我应该提供的,请告诉我。