pengantar
Saya bertujuan untuk memperkirakan tingkat pertumbuhan tahunan untuk sejumlah indikator ekonomi makro (dilambangkan oleh ). Salah satu tugas adalah untuk menguji kinerja peramalan model deret waktu saingan dengan dan tanpa variabel eksogen ( , a matrix). Daftar model pesaing meliputi:
- Model AR (I) MA (tingkat pertumbuhan tahunan tidak mungkin memiliki "unit Roo", meskipun yang terakhir diasumsikan atau diuji)
- model regresi linier dengan kesalahan ARMA
- model variabel dependen tertinggal (model autoregresif dengan variabel eksogen)
- model regresi linier
Di mana diasumsikan sebagai derau putih yang kuat, proses varians konstan varians nol rata-rata; dan bersifat autoregresif (orde ) dan moving average (orde ) polinomial dengan - operator back-shift (lag).
Perhatikan bahwa tujuan utama dan satu-satunya adalah memperkirakan kinerja, sehingga setiap properti "baik" dari estimasi parameter menjadi perhatian sekunder. Yang saya butuhkan adalah menguji peramal kondisi yang paling pelit, kuat untuk memulai. Keputusan akan dibuat dengan salah satu accuracy()
opsi, tetapi pertama-tama saya harus mendapatkan bahan untuk perbandingan.
Model 1. dan 2. diestimasi auto.arima()
dengan "CSS-ML"
metode estimasi default . Model 3. dan 4. diperkirakan oleh kuadrat terkecil biasa ( lm()
). sekitar perempat.
Pendekatan mencoba sejauh ini
Untuk membuat residu berlekuk-jack, pendekatan pertama yang dilambangkan dengan "rolling" telah diimplementasikan. Mulai dari sub-sampel yang besar dari data deret waktu, parameter diperkirakan dan perkiraan depan dilakukan oleh fungsi (EDIT: ini adalah saran yang sama seperti pada bagian pertama jawaban Rob untuk pertanyaan kedua). Setelah itu satu titik ditambahkan dan langkah estimasi \ prediksi diulang.predict()
Titik lemah dari percobaan tersebut adalah bahwa jumlah kutu waktu (ukuran sampel) yang digunakan untuk memperkirakan parameter berbeda. Sementara saya ingin menguji ketahanan terhadap kondisi awal, menjaga ukuran sampel untuk estimasi tetap.
Dengan mengingat hal ini, saya mencoba mengatur beberapa nilai berikutnya (EDIT: untuk interval ) di menjadi nilai yang hilang (NA). Dalam model 2.-4. ini juga menyiratkan menjatuhkan baris berikutnya yang sesuai dalam matriks data . Prediksi untuk 3. dan 4. mudah (sama dengan baris data dihilangkan berfungsi dengan baik). Semua kekhawatiran saya adalah tentang model 1. dan 2.predict()
Dengan hanya bagian AR ( ) prediksi dilakukan secara berurutan . Tetapi dengan kehadiran MA ( ) seseorang tidak bisa (?) Menggunakan parameter yang diestimasi secara langsung. Dari Brockwell dan Davis "Pengantar Seri Waktu dan Peramalan" Bab 3.3 berikut ini kita perlu algoritma inovasi untuk memperkirakan secara dari sistem persamaan tertentu yang melibatkan estimasi parameter autoregresif dan rata-rata bergerak. EDIT: ini digunakan untuk membuat prediksi ARMA, bukan parameter perkiraan awalnya . Namun demikian bab yang sama bahwamendekati asimptotik jika prosesnya tidak bisa dibalik. Tidak jelas bahwa 30-40 poin sudah cukup untuk hasil asimptotik yang akan digunakan bahkan jika tidak dapat dibalik.
Catatan: Saya tidak ingin membatasi ke nol, karena saya tidak melakukannya dalam peramalan out-of-sample yang sebenarnya. SUNTING: juga bukan berarti tidak ada masalah imputasi nilai, tetapi percobaan perkiraan, bahwa lintasan tidak seharusnya menjembatani dua sub-sampel dengan cara memasukkan nilai yang hilang.
Pertanyaan
- Apakah
auto.arima()
berkinerja dengan benar dengan adanya nilai yang hilang di dalam sampel? [Sudah dijawab oleh Rob.] - (Bagian yang sangat penting dari posting ini) Bagaimana cara memperkirakan dengan benar (TIDAK menyalahkan) titik-titik yang terlewatkan dari model ARMA ketika dan ? (Saya harap ada cara yang sudah diterapkan dalam bahasa R, tapi saya hanya kehilangan sesuatu.)
EDIT: karena parameter untuk bagian ARMA diestimasi dengan benar, bisakah saya mengatur ulang objek arima secara legal untuk memasukkan estimasi parameter dan data hanya untuk subsampel pertama dan kemudian menggunakan fungsi prediksi?
EDIT2: Saya telah mencoba untuk memodifikasi mod
struktur yang diestimasi - perkiraan yang dihasilkan dari predict.Arima
identik (perbedaan presisi ganda) dengan perkiraan di mana saya menggunakan estimasi koefisien MA dan AR yang memprediksi secara langsung sebagai , tanpa . Ini diharapkan karena representasi ruang negara disediakan dengan estimasi yang sama , bukan . Jadi satu-satunya pertanyaan yang tersisa adalah perbedaan antara dan signifikan untuk mempengaruhi perkiraan titik? Saya harap jawabannya negatif.KalmanForecast()
sumber
itsmr
pustaka yang mengimplementasikan prakiraan bagian proses ARMA untuk model 1. dan 2. mengharuskan menjadi nol rata-rata (karena diasumsikan nol rata-rata). Namun output dari menunjukkan bahwa residual bukan rata-rata nol, yaitu bukan rata-rata nol. Apakah saya perlu menambah jangka waktu mencegat dalam objek yang diperkirakan , sebelum membuat ramalan dengan pisau jack? Apakah saya harus melakukan hal yang sama untuk prediksi biasa ?arima
Arima
Arima
itsmr
Arima
Jawaban:
Saya tidak mengerti mengapa Anda berpikir adalah masalah untuk prediksi. Cukup mudah untuk memperkirakan menggunakan model ARIMA dengan ketentuan MA dan Anda tidak perlu menggunakan algoritma inovasi Brockwell dan Davis. Algoritma itu berguna untuk estimasi ; khususnya, dalam mendapatkan nilai awal ketika mengoptimalkan kemungkinan.q>0
Untuk menjawab pertanyaan spesifik Anda:
auto.arima()
panggilanarima()
yang menggunakan representasi ruang negara untuk menghitung kemungkinan. Nilai yang hilang ditangani secara alami dalam format ruang keadaan. Jadi, ya, mereka ditangani dengan benar.Nilai historis yang hilang tidak diperkirakan oleh
arima()
. Jika Anda ingin meramalkannya (yaitu, hanya menggunakan data masa lalu), cukup paskan sebuah model hingga awal urutan yang hilang dan kemudian prakiraan darinya. Jika Anda ingin memperkirakannya (menggunakan data sebelum dan sesudahnya), Anda perlu menggunakan Kalman yang lebih halus berdasarkan model ruang keadaan setara. Tipuan alternatif yang memberikan hasil yang hampir sama adalah rata-rata perkiraan menggunakan data hingga data tidak hilang terakhir dengan backcast menggunakan data hingga data tidak hilang pertama setelah urutan yang hilang.sumber