Masalah menentukan urutan ARIMA

16

Ini adalah posting yang panjang jadi saya harap Anda bisa tahan dengan saya, dan tolong perbaiki saya di mana saya salah.

Tujuan saya adalah menghasilkan ramalan harian berdasarkan 3 atau 4 minggu dari data historis.

Data adalah data 15 menit dari muatan lokal salah satu garis transformator. Saya mengalami kesulitan menemukan urutan model proses ARIMA musiman. Pertimbangkan seri waktu permintaan listrik:

Original Time Series http://i.share.pho.to/80d86574_l.png

Ketika 3 minggu pertama diambil sebagai bagian dan dibedakan, plot ACF / PACF yang mengikuti dihitung:

Subset http://i.share.pho.to/5c165aef_l.png

Perbedaan pertama http://i.share.pho.to/b7300cc2_l.png

Perbedaan musiman dan pertama http://i.share.pho.to/570c5397_l.png

Sepertinya seri ini agak diam. Tetapi musiman juga bisa mingguan (lihat perbedaan Musiman minggu dan perbedaan urutan kedua [sini] http://share.pho.to/3owoq , bagaimana menurut Anda?)

Jadi mari kita simpulkan bahwa modelnya berbentuk:

SEBUAHRsayaM.SEBUAH(hal,1,q)(P,1,Q)96

Pada gambar terakhir lonjakan yang berbeda pada lag 96 menunjukkan komponen MA (1) musiman (mungkin AR (1) juga dapat sama karena ada lonjakan yang berbeda di PACF juga). Paku pada lag 1: 4 menunjukkan komponen MA (4) yang sesuai dengan peluruhan eksponensial dalam PACF dengan sedikit imajinasi. Dengan demikian model awal yang dipilih secara manual dapat berupa: dengan

SEBUAHRsayaM.SEBUAH(0,1,4)(0,1,1)96

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**

Fungsi auto.arima menghitung model berikut (dengan stepwise dan perkiraan pada TRUE, jika tidak diperlukan waktu lama untuk menyatu): dengan

SEBUAHRsayaM.SEBUAH(1,1,1)(2,0,2)96

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**

Yang berarti tidak ada perbedaan musiman yang diterapkan. Berikut adalah residu dari kedua model. Statistik Ljung Box memberikan nilai p yang sangat kecil, menunjukkan bahwa masih ada beberapa autokorelasi yang ada (? Koreksi saya jika saya salah).

Peramalan

Jadi untuk menentukan mana yang lebih baik, tes akurasi sampel out adalah yang terbaik. Jadi untuk kedua model perkiraan dibuat 24 jam ke depan yang dibandingkan satu sama lain. Hasilnya adalah: auto.arima http://i.share.pho.to/5d1dd934_l.png model manual http://i.share.pho.to/7ca69c97_l.png

Mobil:

                      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

Manual

                       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

Pertanyaan

Seperti yang dapat Anda pikirkan, ini adalah analisis pada tiga minggu pertama suatu dataset. Saya berjuang dalam pikiran saya dengan pertanyaan-pertanyaan berikut:

  1. Bagaimana cara memilih model ARIMA terbaik (dengan mencoba semua pesanan yang berbeda dan memeriksa MASE / MAPE / MSE terbaik? Di mana pemilihan pengukuran kinerja dapat menjadi diskusi di dalamnya sendiri ..)
  2. Jika saya membuat model dan perkiraan baru untuk setiap perkiraan hari baru (seperti dalam perkiraan online), apakah saya perlu memperhitungkan tren tahunan dan bagaimana caranya? (Seperti dalam subset kecil seperti dugaan saya adalah bahwa tren diabaikan)
  3. Apakah Anda berharap bahwa urutan model tetap sama di seluruh dataset, yaitu ketika mengambil subset lain yang akan memberi saya model yang sama?
  4. Apa cara yang baik, dalam metode ini untuk mengatasi liburan? Atau apakah ARIMAX dengan boneka liburan eksternal diperlukan untuk ini?
  5. Apakah saya perlu menggunakan pendekatan seri Fourier untuk mencoba model seasonality=672seperti yang dibahas dalam periode musiman yang panjang ?
  6. Jika demikian akan seperti ini fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672) (di mana fungsi fourier sebagaimana didefinisikan dalam posting blog Hyndman)
  7. Apakah komponen P dan Q awal termasuk dalam seri fourier?

Sebagian besar pengetahuan teoritis diperoleh dari FPP , hal-hal hebat!

Sebelum menyarankan untuk menggunakan perataan eksponensial atau regresi linier (dinamis), ini juga sedang dikerjakan untuk membandingkan.

Data

https://www.dropbox.com/sh/mzx61sskya5ze6x/Zq3A7Q6htH/trafo.txt

Kode

data<-read.csv("file", sep=";")
load<-data[,3]

Saya menghapus beberapa nilai nol dengan nilai sebelum minggu

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))

Dimungkinkan juga untuk memposting contoh yang dapat direproduksi tetapi ini akan membuat posting lebih lama, tetapi mungkin jika diperlukan. Jadi, jika ada sesuatu yang harus saya berikan, beri tahu saya.

Peter Nijhuis
sumber

Jawaban:

8
  1. Bagaimana cara memilih model ARIMA terbaik (dengan mencoba semua pesanan yang berbeda dan memeriksa MASE / MAPE / MSE terbaik? Di mana pemilihan pengukuran kinerja dapat menjadi diskusi di dalamnya sendiri ..)

Perkiraan risiko di luar sampel adalah standar emas untuk evaluasi kinerja, dan karenanya untuk pemilihan model. Idealnya, Anda melakukan validasi silang sehingga estimasi risiko Anda dirata-rata berdasarkan lebih banyak data. FPP menjelaskan satu metode validasi silang untuk deret waktu. Lihat Tashman untuk ulasan metode lain:

Tashman, LJ (2000). Tes out-of-sample akurasi peramalan: analisis dan ulasan. International Journal of Forecasting, 16 (4), 437-450. doi: 10.1016 / S0169-2070 (00) 00065-0

Tentu saja, validasi silang memakan waktu dan karena itu orang sering menggunakan kriteria in-sample untuk memilih model, seperti AIC, yang merupakan cara auto.arima memilih model terbaik. Pendekatan ini sangat valid, jika mungkin tidak seoptimal mungkin.

  1. Jika saya membuat model dan perkiraan baru untuk setiap perkiraan hari baru (seperti dalam perkiraan online), apakah saya perlu memperhitungkan tren tahunan dan bagaimana caranya? (Seperti dalam subset kecil seperti dugaan saya adalah bahwa tren diabaikan)

Saya tidak yakin apa yang Anda maksud dengan tren tahunan. Dengan asumsi Anda maksud musiman musiman, sebenarnya tidak ada cara untuk memperhitungkannya dengan data kurang dari satu tahun.

  1. Apakah Anda berharap bahwa urutan model tetap sama di seluruh dataset, yaitu ketika mengambil subset lain yang akan memberi saya model yang sama?

Saya berharap bahwa kecuali beberapa perubahan pada bagaimana data dihasilkan, model dasar yang paling benar akan sama di seluruh dataset. Namun, itu tidak sama dengan mengatakan bahwa model yang dipilih oleh prosedur apa pun (seperti prosedur yang digunakan oleh auto.arima) akan sama jika prosedur itu diterapkan pada subset data yang berbeda. Ini karena variabilitas akibat pengambilan sampel akan menghasilkan variabilitas dalam hasil prosedur pemilihan model.

  1. Apa cara yang baik, dalam metode ini untuk mengatasi liburan? Atau apakah ARIMAX dengan boneka liburan eksternal diperlukan untuk ini?

Dummy liburan eksternal adalah pendekatan terbaik.

  1. Apakah saya perlu menggunakan pendekatan seri Fourier untuk mencoba model seasonality=672seperti yang dibahas dalam periode musiman yang panjang ?

Anda perlu melakukan sesuatu, karena seperti yang disebutkan dalam artikel itu, fungsi arima di R tidak mendukung periode musiman lebih dari 350. Saya sudah cukup berhasil dengan pendekatan Fourier. Pilihan lain termasuk peramalan setelah dekomposisi musiman (juga tercakup dalam FPP), dan model pemulusan eksponensial seperti kelelawar dan tikus.

  1. Jika demikian, apakah ini sepertifit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672) (di mana fungsi fourier sebagaimana didefinisikan dalam posting blog Hyndman)

Itu terlihat benar. Anda harus bereksperimen dengan sejumlah istilah yang berbeda. Perhatikan bahwa sekarang ada fourierfungsi dalam paket perkiraan dengan spesifikasi yang sedikit berbeda yang saya asumsikan menggantikan yang ada di blog Hyndman. Lihat file bantuan untuk sintaks.

  1. Apakah komponen P dan Q awal termasuk dalam seri fourier?

Saya tidak yakin apa yang Anda tanyakan di sini. P dan Q biasanya merujuk pada derajat komponen musiman AR dan MA. Menggunakan pendekatan Fourier, tidak ada komponen musiman dan sebaliknya ada kovariat untuk istilah Fourier yang terkait dengan musim. Ini bukan lagi ARIMA musiman, ini ARIMAX tempat para kovariat memperkirakan musim.

Jeremy Coyle
sumber