Memasang model ARIMAX dengan regularisasi atau hukuman (misalnya dengan laso, jaring elastis, atau regresi ridge)

29

Saya menggunakan fungsi auto.arima () dalam paket perkiraan agar sesuai dengan model ARMAX dengan beragam kovariat. Namun, saya sering memiliki sejumlah besar variabel untuk dipilih dan biasanya berakhir dengan model akhir yang berfungsi dengan subset dari mereka. Saya tidak suka teknik ad-hoc untuk pemilihan variabel karena saya manusia dan cenderung bias, tetapi deret waktu validasi silang sulit , jadi saya belum menemukan cara yang baik untuk secara otomatis mencoba subset berbeda dari variabel saya yang tersedia, dan Saya terjebak menyetel model saya menggunakan penilaian terbaik saya sendiri.

Ketika saya cocok dengan model glm, saya dapat menggunakan jaring elastis atau laso untuk regularisasi dan pemilihan variabel, melalui paket glmnet . Apakah ada toolkit yang ada di R untuk menggunakan jaring elastis pada model ARMAX, atau apakah saya harus roll sendiri? Apakah ini ide yang bagus?

sunting: Apakah masuk akal untuk secara manual menghitung AR dan MA (katakan sampai AR5 dan MA5) dan gunakan glmnet agar sesuai dengan model?

sunting 2: Tampaknya paket FitAR memberi saya bagian, tetapi tidak semua, dari perjalanan ke sana.

Zach
sumber
2
Saya ingin tahu jika Anda pernah berhasil melakukan sesuatu tentang masalah ini. Saya telah menandai untuk setiap pembaruan - jadi hanya menyentuh basis di sini.
Vishal Belsare
Jangan pernah manged untuk memecahkan ini. Saya berpikir untuk menulis implementasi saya sendiri tetapi tidak menyiasatinya. Mungkin Anda bisa secara manual menghitung persyaratan AR dan MA dan kemudian menerapkan glmnet ke data itu?
Zach
1
Hai Zach, saya bertanya-tanya apakah Anda telah mengambil ini lebih jauh atau apakah masih diparkir. Saya membutuhkan algoritma seperti itu untuk memperkirakan sejumlah besar seri.
Matt Weller
3
@MattWeller Saya berbicara sedikit dengan Rob Hyndman, penulis forecastpaket yang sangat baik untuk R. Dia mengatakan itu akan sulit dengan ARIMA lengkap, karena Anda harus membungkus laso di sekitar pengoptimal ARIMA nonlinear. Salah satu solusi parsial adalah menyesuaikan model AR menggunakan glmnetdengan variabel lagged Sejauh yang saya tahu, belum ada yang melakukan ini dengan model ARIMA lengkap.
Zach

Jawaban:

7

Ini bukan solusi tetapi beberapa refleksi pada kemungkinan dan kesulitan yang saya ketahui.

Setiap kali adalah mungkin untuk menentukan model time-series sebagai dengan x t dihitung dari kovariat dan pengamatan waktu-lag, juga memungkinkan untuk menghitung kuadrat-net elastis dihukum estimator dari β menggunakan glmnet di R. Hal ini membutuhkan bahwa Anda menulis kode untuk menghitung x t untuk membentuk matriks model yang akan ditentukan dalam glmnet. Ini berfungsi untuk AR-model tetapi tidak secara langsung untuk ARMA-model, katakanlah. Selain itu, prosedur cross-validasi glmnet tidak masuk akal per se untuk data time-series.

Yt+1=xtβ+ϵt+1
xtβxt

Yt+1=f(xt,β)+ϵt+1
β
Yt+1=xtg(β)+ϵt+1
βg(β)-

Masalah lainnya adalah pemilihan jumlah hukuman (parameter tuning). Biasanya akan memerlukan bentuk validasi silang untuk deret waktu, tetapi saya berharap dapat menemukan beberapa metode yang tidak terlalu menuntut komputasi untuk model tertentu.

NRH
sumber
Paket caret untuk R memiliki implementasi validasi cross time series yang baik yang dapat digunakan untuk memilih parameter untuk glmnet. Terima kasih atas jawabannya.
Zach
2

Saya ditantang oleh klien untuk menyelesaikan masalah ini dengan cara turnkey otomatis. Saya menerapkan pendekatan yang untuk setiap pasangan (yaitu y dan kandidat x), prewhiten, menghitung korelasi silang dari seri pra-memutihkan, mengidentifikasi PDL (ATAU ADL MODEL LAG DISTRIBUSI AUTOREGRESSIVE termasuk WAKTU MATI) saat memasukkan Deteksi Intervensi ke hasilkan estimasi yang kuat, kembangkan "ukuran" untuk struktur ini. Setelah melakukan ini untuk SEMUA kandidat regresor, rangking mereka dengan "takaran" dan kemudian pilih regresor K atas berdasarkan "takaran". Ini kadang-kadang disebut sebagai Linear Filtering. Kami berhasil memasukkan heuristik ini ke dalam paket seri waktu kami yang tersedia secara komersial. Anda harus dapat "MENGGULIRKAN SENDIRI"

IrishStat
sumber
Saya secara khusus ingin memasukkan laso atau jaring elastis ke dalam model ARIMA.
Zach
3
Saya tidak benar-benar mencari filter linier (meskipun ini berguna). Saya secara khusus menginginkan cara untuk memasukkan laso, regresi ridge, atau jaring elastis ke dalam model ARIMAX.
Zach
2
Saat ini saya tidak tertarik dengan perubahan level, tren waktu lokal, perubahan koefisien, atau varian kesalahan yang tidak konstan. Saya sangat khusus tertarik menerapkan laso, ridge, atau regularisasi jaring elastis untuk model ARIMAX.
Zach
2
Jika Anda dapat memasukkan laso, ridge, atau regularisasi jaring elastis ke dalam metodologi di atas dan memposting beberapa contoh kode dalam bahasa pemrograman open source, saya akan dengan senang hati memberi Anda hadiah.
Zach
1
@ jujur ​​Anda mencoba melakukan identifikasi melalui estimasi (step-down) dan itu tidak berhasil karena ada toooooo banyak kombinasi pulsa yang mungkin, perubahan level, pulsa musiman dan tren waktu.,. Jika struktur ini diperlukan tetapi diabaikan, estimasi parameter bias dan uji parametrik signifikansi keluar jendela.
IrishStat