Cara memprediksi satu deret waktu dari deret waktu lain, jika terkait

14

Saya telah mencoba menyelesaikan masalah ini selama lebih dari setahun tanpa banyak kemajuan. Ini adalah bagian dari proyek penelitian yang saya lakukan, tetapi saya akan mengilustrasikannya dengan contoh cerita yang saya buat, karena domain sebenarnya dari masalah ini agak membingungkan (eye-tracking).

Anda adalah pesawat yang melacak kapal musuh yang melakukan perjalanan melintasi lautan, jadi Anda telah mengumpulkan serangkaian koordinat (x, y, waktu) dari kapal tersebut. Anda tahu bahwa kapal selam tersembunyi melakukan perjalanan dengan kapal untuk melindunginya, tetapi sementara ada korelasi antara posisi mereka, kapal selam itu sering mengembara dari kapal, jadi meskipun sering dekat, kapal selam itu bisa juga berada di sisi lain dari kapal selam itu. dunia sesekali. Anda ingin memprediksi jalur kapal selam, tetapi sayangnya itu tersembunyi dari Anda.

Tapi satu bulan di bulan April Anda melihat kapal selam lupa untuk menyembunyikan diri, jadi Anda memiliki serangkaian koordinat untuk kapal selam dan kapal sepanjang 1.000 perjalanan. Dengan menggunakan data ini, Anda ingin membuat model untuk memprediksi jalur kapal selam tersembunyi hanya dengan pergerakan kapal. Garis dasar naif adalah untuk mengatakan "posisi kapal selam menebak =" posisi kapal saat ini "tetapi dari data April di mana kapal selam itu terlihat, Anda melihat ada kecenderungan kapal selam sedikit lebih maju dari kapal, jadi" posisi kapal selam sedikit " tebak = posisi kapal dalam 1 menit "bahkan merupakan perkiraan yang lebih baik. Selanjutnya, data April menunjukkan bahwa ketika kapal berhenti di dalam air untuk waktu yang lama, kapal selam itu kemungkinan jauh berada berpatroli di perairan pantai. Ada pola lain tentu saja.

Bagaimana Anda membangun model ini, mengingat data April sebagai data pelatihan, untuk memprediksi jalur kapal selam? Solusi saya saat ini adalah regresi linier ad-hoc di mana faktor-faktornya adalah "waktu perjalanan", "koordinat x kapal", "adalah kapal menganggur selama 1 hari", dll. Dan kemudian meminta R mengetahui bobot dan melakukan validasi silang . Tetapi saya akan sangat suka cara untuk menghasilkan faktor-faktor ini secara otomatis dari data April. Juga, model yang menggunakan urutan atau waktu akan menyenangkan, karena regresi linier tidak dan saya pikir itu relevan.

Terima kasih telah membaca semua ini dan saya akan dengan senang hati menjelaskan apa pun.

Kargo dan Kapal Selam
sumber
5
Salah satu cara yang mungkin membuatnya lebih mudah untuk membangun model Anda adalah dengan menggunakan koordinat polar daripada yang kartesian. Jika Anda mengatur asal sama dengan kapal musuh, dan memiliki kapal menghadap ke utara selalu, maka Anda bisa mengatakan sesuatu seperti posisi sub pada saat adalah ( r ( t j ) , θ ( t j ) ) dengan r sedang jarak dan sudut θ menjadi. Sekarang kami berharap | θ | menjadi kecil karena kapal selam biasanya di depan kapal, dan r harus kecil tetapi tidak mendekati nol (kalau tidak kapal selam menabrak kapal). Kamu juga punyatj(r(tj),θ(tj))rθ|θ|r semakin besar untuk kapal yang berhenti sebentar. r
probabilityislogic
2
Saya akan menyarankan sesuatu yang mirip dengan probabilityislogic - Anda perlu variabel yaitu jarak antara kapal dan kapal selam. Yang menyenangkan tentang koordinat kutub adalah bahwa informasi ini, dan juga arah, juga disertakan. Anda kemudian dapat mencoba regresi linier pada variabel baru ini.
pelajar
Terima kasih atas sarannya. Satu hal yang saya perjuangkan dengan koordinat kutub adalah bahwa jika saya mencoba dan memprediksi variabel sudut, itu "berputar" jadi 0 == 360, yang tidak masuk akal dalam sudut pandang prediksi. Ada saran bagaimana menghadapinya?
Cargoship And Submarine
@probabilityislogic Setelah memikirkan ini sedikit lagi, apakah masuk akal untuk menggunakan koordinat kutub tetapi menggunakan sin (theta) alih-alih theta sebagai variabel untuk memprediksi? Meskipun kemudian akan berperilaku lebih seperti delta_y.
Cargoship And Submarine
Mengenai penggunaan koordinat kutub, Anda mungkin ingin membaca tentang Statistik Directional .
mantap

Jawaban:

3

Berikut ini adalah pendekatan yang tidak menggunakan informasi "kontekstual" apa pun yaitu gagal memperhitungkan fakta bahwa "sub mengikuti kapal". Di sisi lain mudah untuk memulai dengan:

Ditunjukkan oleh

xskamub(t),yskamub(t)

xshsayahal(t),yshsayahal(t)

t

xdsayast(t)=xshsayahal(t)-xskamub(t)

ydsayast(t)=yshsayahal(t)-yskamub(t)

Saran saya adalah Anda memprediksi masing-masing secara terpisah (Anda dapat mengikat mereka nanti).

x

Kemudian

xdsayast(t)=100±10wsayaggle(t)

wsayaggle

xywsayaggleμσxdsayast

xdsayast(t)=μ+σWx(t)

Wx(t)xdsayast

Strategi lain yang digunakan orang (yang saya pikir akan berhasil untuk Anda) adalah mereka memecah seri mereka menjadi

Polynomial base + Cyclic pattern + Bounded randomness

Dalam kasus kapal selam dan kapal laut, bagian polinom mungkin akan konstan dan bagian siklik sejumlah sinus dan kosinus (dari gelombang laut ...). Ini mungkin bukan kasus pelacakan mata.

Ada alat yang bisa mencari tahu ini untuk Anda. Berikut adalah dua yang saya ketahui:

  1. DTREG (lisensi evaluasi 30 hari)
  2. Microsoft Time Series Algorithm yang merupakan bagian dari produk SQL Server mereka. Saat ini saya menggunakan edisi evaluasi 180 hari mereka, mudah digunakan.

Berikut ini adalah tangkapan layar dari alat SQL Server (bagian bertitik adalah prediksi):

masukkan deskripsi gambar di sini

Salah satu algoritma yang mereka gunakan disebut ARIMA. Ingin mengetahui cara kerjanya, saya melakukan beberapa Googling dan menemukan buku ini: First Course on Time Series (dan jangan khawatir, Anda tidak perlu memiliki SAS untuk diikuti. Saya tidak.). Sangat mudah dibaca.

Anda tidak harus tahu bagaimana ARIMA bekerja untuk menggunakan alat-alat ini, tapi saya pikir itu selalu lebih mudah jika Anda memiliki konteks, karena ada "parameter model" yang harus ditetapkan dll.

Rohit Chatterjee
sumber