Saya ingin membangun sebuah algoritma yang akan dapat menganalisis deret waktu dan "secara otomatis" memilih metode peramalan tradisional / statiskal terbaik (dan parameternya) untuk data deret waktu yang dianalisis.
Mungkinkah melakukan hal seperti ini? Jika ya, dapatkah Anda memberi saya beberapa tips tentang bagaimana hal ini dapat didekati?
time-series
forecasting
python
StatsNewbie123
sumber
sumber
Jawaban:
Pertama, Anda perlu mencatat bahwa pendekatan yang digariskan oleh IrishStat khusus untuk model ARIMA, bukan untuk set model umum.
Untuk menjawab pertanyaan utama Anda, "Apakah mungkin untuk mengotomatisasi perkiraan rangkaian waktu?":
Ya itu. Di bidang peramalan permintaan saya, sebagian besar paket peramalan komersial melakukannya. Beberapa paket sumber terbuka juga melakukannya, terutama Rob Hyndman auto.arima () (peramalan ARIMA otomatis) dan ETS () (peramalan eksponensial otomatis) berfungsi dari paket Prakiraan sumber terbuka di R lihat di sini untuk perincian tentang dua fungsi ini . Ada juga implementasi Python dari auto.arima yang disebut Piramida , meskipun menurut pengalaman saya itu tidak setua paket R.
Baik produk komersial yang saya sebutkan dan paket open source yang saya sebutkan bekerja berdasarkan ide menggunakan kriteria informasi untuk memilih perkiraan terbaik: Anda cocok dengan banyak model, dan kemudian pilih model dengan AIC, BIC, AICc terendah, dll .... (biasanya ini dilakukan sebagai pengganti dari validasi sampel).
Namun ada peringatan utama: semua metode ini bekerja dalam satu keluarga model. Mereka memilih model terbaik di antara seperangkat model ARIMA, atau model terbaik di antara serangkaian model pemulusan eksponensial.
Jauh lebih sulit untuk melakukannya jika Anda ingin memilih dari keluarga model yang berbeda, misalnya jika Anda ingin memilih model terbaik dari ARIMA, perataan eksponensial dan metode Theta. Secara teori, Anda dapat melakukannya dengan cara yang sama seperti yang Anda lakukan dalam satu keluarga model, yaitu dengan menggunakan kriteria informasi. Namun dalam praktiknya, Anda perlu menghitung AIC atau BIC dengan cara yang persis sama untuk semua model yang dipertimbangkan, dan itu merupakan tantangan yang signifikan. Mungkin lebih baik menggunakan validasi silang seri waktu , atau keluar dari validasi sampel daripada kriteria informasi, tetapi itu akan jauh lebih intensif secara komputasi (dan membosankan untuk kode).
Paket Nabi Facebook juga mengotomatiskan pembuatan ramalan berdasarkan Model Aditif Umum. Lihat di sini untuk detailnya . Namun Nabi hanya cocok untuk satu model tunggal, meskipun model yang sangat fleksibel dengan banyak parameter. Asumsi tersirat Nabi adalah bahwa GAM adalah "satu-satunya model untuk memerintah mereka semua", yang mungkin tidak bisa dibenarkan secara teoretis tetapi sangat pragmatis dan berguna untuk skenario dunia nyata.
Peringatan lain yang berlaku untuk semua metode yang disebutkan di atas: Mungkin Anda ingin melakukan peramalan deret waktu otomatis karena Anda ingin meramalkan deret waktu banyak, terlalu banyak untuk dianalisis secara manual. Kalau tidak, Anda bisa melakukan eksperimen sendiri dan menemukan model terbaik sendiri. Anda harus ingat bahwa pendekatan peramalan otomatis tidak akan pernah menemukan model terbaik untuk setiap seri waktu - ini akan memberikan model rata-rata yang cukup baik di atas semua seri waktu, tetapi masih mungkin bahwa beberapa seri waktu tersebut akan memiliki model yang lebih baik daripada yang dipilih oleh metode otomatis. Lihat posting iniuntuk contoh ini. Sederhananya, jika Anda akan menggunakan peramalan otomatis - Anda harus mentolerir prakiraan "cukup baik" alih-alih perkiraan terbaik untuk setiap rangkaian waktu.
sumber
Pendekatan yang saya sarankan mencakup model yang jauh lebih umum daripada ARIMA karena mencakup potensi boneka musiman yang dapat berubah dari waktu ke waktu, beberapa tingkat, beberapa tren, parameter yang dapat berubah dari waktu ke waktu dan bahkan varian kesalahan yang dapat berubah dari waktu ke waktu. Keluarga ini lebih tepatnya disebut model ARMAX tetapi untuk transparansi lengkap tidak mengecualikan varian (jarang) yang memiliki struktur multiplikasi.
Anda meminta tip dan saya percaya ini mungkin bagus untuk Anda mulai.
Saya menyarankan agar Anda menulis kode untuk mengikuti / meniru alur / alur kerja ini. "Model terbaik" dapat ditemukan dengan mengevaluasi kriteria yang Anda tentukan ... itu bisa MSE / AIC dari data yang dipasang atau bisa juga MAPE / SMAPE dari data yang ditahan atau kriteria apa pun yang Anda pilih.
Berhati-hatilah karena perincian dari masing-masing langkah ini bisa sangat sederhana jika Anda tidak mengetahui beberapa persyaratan / tujuan / kendala spesifik dari analisis deret waktu TETAPI itu bisa (seharusnya!) Lebih rumit jika Anda memiliki pemahaman yang lebih dalam / belajar / menghargai kompleksitas / peluang yang ada dalam analisis deret waktu yang menyeluruh.
Saya telah diminta untuk memberikan arahan lebih lanjut tentang bagaimana seseorang harus mengotomatiskan pemodelan seri waktu (atau pemodelan secara umum) /stats//search?q=peeling+an+onion berisi beberapa panduan saya tentang "mengupas bawang" dan tugas-tugas terkait.
AUTOBOX sebenarnya merinci dan menunjukkan langkah-langkah sementara karena membentuk model yang berguna dan bisa menjadi guru yang berguna dalam hal ini. Seluruh gagasan ilmiah adalah untuk "menambahkan apa yang tampaknya dibutuhkan" dan "menghapus apa yang tampaknya kurang bermanfaat". Ini adalah proses berulang yang disarankan oleh Box dan Bacon di masa lalu.
Model harus cukup kompleks (cukup mewah) tetapi tidak terlalu kompleks (mewah). Dengan asumsi bahwa metode sederhana bekerja dengan masalah kompleks tidak konsisten dengan metode ilmiah setelah Roger Bacon dan banyak pengikut Bacon. Seperti yang pernah dikatakan Roger Bacon dan saya sering diparafrasekan: Melakukan sains berarti mencari pola yang berulang. Untuk mendeteksi anomali adalah mengidentifikasi nilai-nilai yang tidak mengikuti pola berulang. Karena siapa pun yang tahu cara-cara Alam akan lebih mudah melihat penyimpangannya dan, di sisi lain, siapa pun yang tahu penyimpangannya akan lebih akurat menggambarkan jalannya. Seseorang belajar aturan dengan mengamati ketika aturan saat ini gagal. Dalam percikan pf Bacon dengan mengidentifikasi ketika "model / teori terbaik" yang diidentifikasi saat ini tidak memadai, seseorang kemudian dapat beralih ke "representasi yang lebih baik"
Dalam kata-kata saya "Tukey mengusulkan Analisis Data Eksplorasi (EDA) yang menyarankan skema penyempurnaan model berdasarkan kekurangan model terbukti yang disarankan oleh data". Ini adalah jantung dari AUTOBOX dan sains. EDA adalah untuk melihat apa yang dapat disampaikan oleh data di luar pemodelan formal atau tugas pengujian hipotesis.
Tes lakmus dari program pemodelan otomatis cukup sederhana. Apakah ini memisahkan sinyal dan noise tanpa terlalu pas? Bukti empiris menunjukkan bahwa ini dapat dan telah dilakukan. Akurasi peramalan sering menyesatkan karena masa depan tidak bertanggung jawab atas masa lalu dan tergantung pada asal mana Anda memilih hasil dapat dan memang bervariasi.
sumber