これは長い投稿なので、あなたが私と一緒に耐えられることを願っています、そして私が間違っているところで私を修正してください。
私の目標は、3週間または4週間の履歴データに基づいて毎日の予測を作成することです。
データは、変圧器ラインの1つのローカル負荷の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
これは、シリーズが少し静止しているように見えます。しかし、季節性は週単位でもあります(季節差の週と2次の差[こちら] http://share.pho.to/3owoqをご覧ください。)
したがって、モデルは次の形を取ると結論付けましょう:
最後の図では、ラグ96での明確なスパイクは、季節的なMA(1)コンポーネントを示しています(PACFにも明確なスパイクがあるので、AR(1)も同様である可能性があります)。ラグ1:4のスパイクは、PACFの指数関数的な減衰に対応するMA(4)コンポーネントを示しています。したがって、手動で選択される初期モデルは次のようになります
with
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に設定、そうでない場合は収束に時間がかかります):
with
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
ご質問
ご想像のとおり、これはデータセットの最初の3週間の分析です。私は次の質問に頭を悩ませています。
- 最適なARIMAモデルを選択するにはどうすればよいですか(すべての異なる注文を試行し、最適なMASE / MAPE / MSEをチェックしますか?パフォーマンス測定の選択はそれ自体で議論できます)。
- (オンライン予測のように)新しい日の予測ごとに新しいモデルと予測を生成する場合、年間トレンドをどのように考慮する必要がありますか?(このような小さなサブセットのように、私の推測ではトレンドは無視できるだろう)
- モデルの順序がデータセット全体で同じままであることを期待しますか?つまり、別のサブセットを取得するときに同じモデルが得られますか?
- この方法で休日に対処するための良い方法は何ですか?または、これに外部の休日ダミーを備えたARIMAXは必要ですか?
- 長い季節期間で
seasonality=672
説明したように、フーリエ級数アプローチを使用してモデルを試す必要があります か? - もしそうなら、これは次のようになります
fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)
(関数fourierはHyndmanのブログ投稿で定義されているとおりです) - 初期のPおよびQコンポーネントは、Fourierシリーズに含まれていますか?
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))
再現可能な例を投稿することもできますが、これにより投稿がさらに長くなりますが、必要に応じて可能です。それで、私が提供する必要がある何かがあるならば、私に知らせてください。