Saya pikir Anda sudah benar, tetapi ketika membangun model VAR, saya biasanya memastikan saya mengikuti langkah-langkah ini:
1. Pilih variabel
Ini adalah bagian terpenting dari membangun model Anda. Jika Anda ingin memperkirakan harga suatu aset, Anda perlu memasukkan variabel yang terkait dengan mekanisme pembentukan harga. Cara terbaik untuk melakukan ini adalah melalui model teoretis. Karena Anda tidak menyebutkan aset apa dan variabel apa yang Anda masukkan dalam model Anda, saya benar-benar tidak bisa mengatakan banyak tentang item ini, tetapi Anda dapat menemukan ringkasan model penetapan harga aset di sini .
2. Periksa data dan lakukan penyesuaian yang tepat
Setelah memilih variabel, Anda dapat membuat beberapa penyesuaian pada data yang akan meningkatkan estimasi dan interpretasi model. Sangat berguna untuk menggunakan statistik ringkasan dan melihat plot dari seri untuk mendeteksi pencilan, data yang hilang dan perilaku aneh lainnya. Ketika bekerja dengan data harga, orang biasanya mengambil log alami, yang merupakan transformasi penstabilan varian dan juga memiliki interpretasi yang baik (perbedaan harga dalam log menjadi pengembalian berulang secara terus-menerus). Saya tidak yakin apakah Anda telah mengambil log sebelum memperkirakan model, tetapi itu ide yang baik untuk melakukannya jika Anda bekerja dengan harga aset.
3. Periksa apakah data mengandung komponen yang tidak stasioner
Sekarang Anda dapat menggunakan tes root unit untuk memeriksa apakah seri Anda stasioner. Jika Anda hanya tertarik pada peramalan, seperti dicatat oleh @JacobH, Anda dapat menjalankan level VAR bahkan ketika seri Anda tidak stasioner, tetapi kemudian kesalahan standar Anda tidak dapat dipercaya, artinya Anda tidak dapat membuat kesimpulan tentang nilai dari koefisien. Anda telah menguji stasioner menggunakan tes ADF, yang sangat umum digunakan dalam aplikasi ini, tetapi perhatikan bahwa Anda harus menentukan jika Anda ingin menjalankan tes dengan i) tidak ada konstan dan tidak ada tren; ii) tren konstan dan tidak ada; dan iii) konstan dan tren. Biasanya seri harga memiliki tren stokastik, sehingga tren linier tidak akan akurat. Dalam hal ini Anda dapat memilih spesifikasi ii. Dalam kode Anda, Anda menggunakanndiffs
fungsi dari paket perkiraan. Saya tidak yakin yang mana dari tiga alternatif yang mengimplementasikan fungsi ini untuk menghitung jumlah perbedaan (saya tidak dapat menemukannya dalam dokumentasi). Untuk memeriksa hasil Anda, Anda mungkin ingin menggunakan ur.df
fungsi dalam paket "urca":
adf <- ur.df(x[, "VAR1"], type = "drift", lags = 10, selectlags = "AIC")
Perhatikan bahwa perintah ini akan menjalankan tes ADF dengan konstanta dan kelambatan yang dipilih oleh perintah AIC, dengan kelambatan maksimum 10. Jika Anda memiliki masalah menafsirkan hasil, lihat saja pertanyaan ini . Jika seri I (1) gunakan saja perbedaannya, yang akan sama dengan pengembalian yang terus menerus ditambah. Jika tes menunjukkan bahwa seri ini I (2) dan Anda ragu tentang itu Anda dapat menggunakan tes lain, misalnya tes Phillips-Perron (PP.test
fungsi dalam R). Jika semua tes mengkonfirmasi bahwa seri Anda adalah I (2) (ingat untuk menggunakan log seri sebelum menjalankan tes) maka ambil perbedaan kedua, tetapi perhatikan bahwa interpretasi Anda terhadap hasil akan berubah, karena sekarang Anda bekerja dengan perbedaan pengembalian yang terus bertambah. Harga aset biasanya I (1) karena mereka dekat dengan jalan acak, yang merupakan white noise saat menerapkan perbedaan pertama.
4. Pilih urutan model
Ini dapat dilakukan dengan kriteria yang umum digunakan seperti Akaike, Schwarz (BIC) dan Hannan-Quinn. Anda telah melakukannya dengan VARselect
fungsi dan itu benar, tetapi ingat kriteria apa yang Anda gunakan untuk membuat keputusan. Biasanya kriteria yang berbeda menunjukkan pesanan yang berbeda untuk VAR.
5. Periksa apakah ada hubungan kointegrasi
Jika semua seri Anda I (1) atau I (2), sebelum menjalankan model VAR, biasanya ide yang baik untuk memeriksa apakah tidak ada hubungan kointegrasi antara seri, khususnya jika Anda ingin membuat analisis respon impuls dengan residu. Anda dapat melakukannya menggunakan tes Johansenn atau Engle-Granger (hanya untuk model bivariat). Di R Anda dapat menjalankan tes Johansen dengan ca.jo
fungsi paket "urca". Perhatikan bahwa tes ini juga memiliki spesifikasi yang berbeda. Untuk seri harga, saya biasanya menggunakan kode berikut (di mana p
panjang lag item 4, dilakukan dengan seri di level):
jo_eigen <- ca.jo(x, type = "eigen", ecdet = "const", K = p)
jo_trace <- ca.jo(x, type = "trace", ecdet = "const", K = p)
6. Perkirakan model
Jika seri Anda tidak terkointegrasi, Anda dapat dengan mudah memperkirakan model dengan VAR
perintah, seperti yang dilakukan dalam kode Anda. Jika seri terkointegrasi, Anda perlu mempertimbangkan hubungan jangka panjang dengan memperkirakan model Koreksi Kesalahan Vektor dengan kode berikut (di mana k
urutan kointegrasi):
vecm <- cajorls(joeigen, r = k)
7. Jalankan tes diagnostik
Untuk menguji apakah model Anda ditentukan dengan baik, Anda dapat menjalankan uji korelasi serial pada residu. Dalam kode Anda, Anda menggunakan tes Portmanteau dengan serial.test
fungsi. Saya tidak pernah menggunakan fungsi ini tapi saya pikir itu OK. Ada juga versi multivarian dari tes Ljung-Box yang diimplementasikan dalam paket MTS yang dapat Anda jalankan dengan fungsinya mq
.
8. Buat prediksi
Setelah Anda yakin model Anda ditentukan dengan baik, Anda dapat menggunakan predict
fungsi seperti yang Anda lakukan dalam kode Anda. Anda bahkan dapat memplot fungsi respons impuls untuk memeriksa bagaimana variabel merespons kejutan tertentu menggunakan irf
fungsi tersebut.
9. Mengevaluasi prediksi
Setelah Anda membuat prediksi, Anda harus mengevaluasi dan membandingkannya dengan model lain. Beberapa metode untuk mengevaluasi keakuratan ramalan dapat ditemukan di sini , tetapi untuk melakukan itu sangat penting bagi Anda untuk membagi seri Anda dalam pelatihan dan satu set tes, seperti yang dijelaskan dalam tautan.