Meramalkan data deret waktu dengan variabel eksternal

10

Saat ini saya sedang mengerjakan proyek untuk melakukan peramalan data deret waktu (data bulanan). Saya menggunakan R untuk melakukan peramalan. Saya memiliki 1 variabel dependen (y) dan 3 variabel independen (x1, x2, x3). Variabel y memiliki 73 pengamatan, dan begitu pula 3 variabel lainnya (juga 73). Dari Januari 2009 hingga Januari 2015. Saya telah memeriksa korelasi dan p-value, dan itu semua penting untuk dimasukkan ke dalam model. Pertanyaan saya adalah: Bagaimana saya bisa membuat prediksi yang baik menggunakan semua variabel independen? Saya tidak memiliki nilai mendatang untuk variabel-variabel ini. Katakanlah saya ingin memprediksi apa variabel y saya dalam lebih dari 2 tahun (pada 2017). Bagaimana saya bisa melakukan ini?

Saya mencoba kode berikut:

    model = arima(y, order(0,2,0), xreg = externaldata) 

Bisakah saya melakukan prediksi nilai y lebih dari 2 tahun dengan kode ini?

Saya juga mencoba kode regresi:

    reg = lm(y ~ x1 + x2 + x3) 

Tetapi bagaimana saya meluangkan waktu dalam kode ini? Bagaimana saya bisa meramalkan berapa nilai y saya akan berakhir katakanlah 2 tahun? Saya baru mengenal statistik dan perkiraan. Saya telah melakukan beberapa pembacaan dan cam melintasi nilai lag, tetapi bagaimana saya bisa menggunakan nilai lag dalam model untuk melakukan peramalan?

Sebenarnya pertanyaan saya secara keseluruhan adalah bagaimana saya bisa meramalkan data deret waktu dengan variabel eksternal tanpa nilai masa depan?

SB
sumber
Jangan pernah gunakan regresi dengan data deret waktu. Gunakan pendekatan model Fungsi Transfer.
Tom Reilly
2
Hai pak, bisakah Anda ceritakan lebih lanjut tentang model fungsi transfer? Dan mengapa saya tidak pernah menggunakan regresi dengan data deret waktu? Sebagian besar penelitian menyarankan menggunakan regresi dengan deret waktu.
SB
Model Fungsi Transfer dijelaskan dalam buku teks Box-Jenkins di Bab 10. Tujuannya adalah untuk membangun model untuk setiap penyebab (pre-whitening) dan kemudian menggunakan residu untuk menemukan korelasi terhadap Y (korelasi silang). Ini akan membantu Anda mengidentifikasi variabel mana yang penting dan jika ada hubungan lead atau lag. Mungkin ada kebutuhan untuk ARIMA dalam persamaan ini atau penyebut pada variabel X. Anda mungkin juga memiliki outlier, perubahan tren, level, musim, parameter, dan varians.
Tom Reilly
Mungkin juga ada Regresi yang menganggap waktu tidak penting. Regresi digunakan oleh Galton untuk mempelajari Sweat Peas ... bukan masalah deret waktu. Fungsi Transfer menggunakan bagian dari proses untuk memperkirakan masalahnya.
Tom Reilly

Jawaban:

11

Jika Anda mencocokkan suatu model menggunakan variabel eksternal dan ingin meramalkan dari model ini, Anda akan memerlukan (perkiraan) nilai-nilai masa depan dari variabel eksternal, polos dan sederhana. Tidak ada jalan lain untuk ini.

Tentu saja ada berbagai cara untuk memperkirakan variabel penjelas Anda. Anda dapat menggunakan nilai yang diamati terakhir (perkiraan "jalan acak naive") atau rata-rata keseluruhan. Anda dapat mengaturnya menjadi nol jika ini merupakan nilai yang berguna bagi mereka (mis., Peristiwa khusus yang terjadi di masa lalu seperti gempa bumi, yang tidak Anda duga akan terjadi lagi). Atau Anda bisa menyesuaikan dan memperkirakan model deret waktu untuk variabel-variabel penjelas ini sendiri, misalnya menggunakan auto.arima.

Alternatifnya adalah menyesuaikan model dengan Andayxregy

Saya merekomendasikan buku teks peramalan online gratis ini , terutama bagian ini tentang regresi berganda (sayangnya, tidak ada tentang ARIMAX di sana), serta posting blog Rob Hyndman "The ARIMAX model muddle" .

Stephan Kolassa
sumber
1

Seperti yang dikatakan Yogi Berra, "Sulit membuat prediksi, terutama tentang masa depan."

Banyak modul perangkat lunak stat akan menghasilkan prakiraan berdasarkan aliran deret waktu secara univariat tanpa adanya informasi di masa depan, misalnya, Prakiraan Proc dalam SAS atau sejumlah modul ARIMA yang tersedia. Prakiraan ini adalah proyeksi berdasarkan perilaku historis data Anda.

Anda memberi tahu kami bahwa data Anda bulanan, tetapi jangan beri tahu kami berapa periode yang Anda miliki. Pendekatan lain adalah mengatur kembali tiga infus Anda 24 bulan ke DV sehingga periode yang mereka prediksi adalah t + 24. Ini mengasumsikan bahwa Anda memiliki jumlah tanggal yang memadai untuk menginisialisasi model dan mengkalibrasi setiap musim yang relevan, yang sesuai.

Mike Hunter
sumber
Saya telah mengedit teks saya. Bisakah Anda menjawab pertanyaan saya sekarang?
SB
Mengingat Anda memiliki jumlah informasi yang cukup, ada banyak cara untuk mengintegrasikan waktu ke dalam model Anda. Anda dapat membuat variabel dummy untuk tahun-tahun tersebut (misalnya, 2009, 2010, dll.), Untuk kuartal, untuk setiap bulan dalam deret waktu atau, sebagai pendekatan untuk menghitung musiman, setiap bulan dalam setahun. Pendekatan lain adalah memperlakukan waktu sebagai fungsi tren numerik, misalnya linier (seperti dalam hitungan periode yang dimulai dengan Jan 2009 = 1, Februari = 2, dll.) Atau sejumlah tren polinom berdasarkan tren linear, misalnya, kuadrat (tren linear kuadrat) dan naik. Apalagi yang ingin kamu ketahui?
Mike Hunter
Tapi waktu tidak bisa menjadi variabel independen, kan? Jadi bagaimana saya bisa memprediksi variabel y saya menggunakan 3 variabel eksternal? Saya mengalami kesulitan sebenarnya memilih model yang akan melakukan prediksi?
SB
Sebagaimana diuraikan dalam komentar sebelumnya, waktu akan menjadi variabel independen. Saya pikir Anda perlu membaca tentang regresi, ekonometrika, dan literatur seri waktu. Ada banyak utas di situs ini yang membahas pertanyaan-pertanyaan ini dan menyarankan artikel, buku, dll. Jelajahi sisi kanan halaman web ini untuk lebih banyak utas terkait dengan masalah Anda.
Mike Hunter
Saya sudah banyak membaca dan belum bisa menemukan solusi. Itulah alasan saya mengajukan pertanyaan ini di sini. Bisakah Anda menyebutkan beberapa utas literatur yang dapat saya gunakan? Atau halaman web yang benar?
SB
1

Seperti yang saya lihat, Anda memiliki tiga opsi:

  1. Gunakan ramalan yang dipublikasikan untuk variabel independen Anda atau temukan model untuk memperkirakannya. Misalnya, Sensus akan memperkirakan data populasi.
  2. Menggunakan dataset yang Anda miliki, mundur setiap variabel independen Anda terhadap waktu & kemudian gunakan hasil ini model perkiraan Anda untuk variabel independen
  3. Jatuhkan variabel independen dan hanya memodelkan variabel dependen Anda sebagai fungsi waktu dan nilai-nilai lag dari y.

Setiap pendekatan memiliki kekuatan dan kelemahannya sendiri, sehingga yang terbaik tergantung pada konteks spesifik.

Ezra Boyd
sumber