Saya mencoba menentukan metode untuk membandingkan satu deret waktu tertentu dengan sekitar 10.000+ deret waktu referensi secara terprogram, dan menciutkan deret waktu referensi tersebut yang dapat menarik.
Metode yang saya gunakan adalah Korelasi Pearson . Untuk setiap seri waktu referensi, saya akan menghitung koefisien korelasinya, dan kemudian mengurutkan seluruh daftar seri waktu referensi dalam urutan menurun berdasarkan koefisien korelasi. Saya kemudian akan menganalisis secara visual deret waktu N atas yang memiliki koefisien korelasi tertinggi, yang harus paling cocok dengan deret waktu yang diberikan.
Masalahnya adalah saya tidak mendapatkan hasil yang andal. Seringkali seri dalam rentang N atas tidak secara visual menyerupai apa pun seperti seri waktu yang diberikan. Akhirnya ketika saya membaca artikel lengkap di bawah ini saya mengerti mengapa: Seseorang tidak dapat menggunakan korelasi sendiri untuk menentukan apakah dua seri waktu serupa.
Sekarang ini adalah masalah dengan semua algoritma yang cocok yang menghitung semacam jarak antara dua seri waktu. Misalnya, dua kelompok deret waktu di bawah ini dapat menghasilkan jarak yang sama, namun yang satu jelas merupakan pasangan yang lebih baik daripada yang lain.
A => [1, 2, 3, 4, 5, 6, 7, 8, 9]
B1 => [1, 2, 3, 4, 5, 6, 7, 8, 12]
distance = sqrt(0+0+0+0+0+0+0+0+9) = 3
B2 => [0, 3, 2, 5, 4, 7, 6, 9, 8]
distance = sqrt(1+1+1+1+1+1+1+1+1) = 3
Jadi pertanyaan saya adalah, adakah formula matematika (seperti korelasi) yang dapat lebih cocok untuk saya dalam situasi seperti ini? Yang tidak menderita masalah yang disebutkan di sini?
Silakan meminta klarifikasi lebih lanjut atau meningkatkan teks pertanyaan jika perlu. Terima kasih! =)
EDIT:
@ woodchips, @krystian:
Baris atas menunjukkan sepuluh bilah terakhir dari USDCHF-Daily yang berakhir pada tanggal yang ditentukan. Baris kedua memberikan 3 hasil teratas dari metode A yang digunakan untuk korelasi (penjelasan akan mengikuti). Baris terakhir menunjukkan 3 hasil teratas dari metode B. Saya telah menggunakan harga High-Low-Close untuk korelasi. Gambar terakhir di setiap baris adalah apa yang saya anggap sebagai "pertandingan yang bagus", alasannya bahwa titik balik dalam seri lebih penting bagi saya. Suatu kebetulan bahwa baris terakhir memiliki korelasi maksimum. Tetapi Anda dapat melihat di baris terakhir bahwa gambar kedua adalah kesamaan yang sangat lemah. Tetap saja, itu berhasil menyelinap ke atas 3. Ini yang mengganggu saya. Karena perilaku ini, saya dipaksa untuk mengakses setiap korelasi secara visual dan menerima / membuangnya. Kuartet Anscombe juga menekankan bahwa korelasi perlu diperiksa secara visual. Itu sebabnya saya ingin menjauh dari korelasi dan mengeksplorasi konsep matematika lain yang mengevaluasi kesamaan seri.
Metode A menambahkan data HLC dalam satu seri panjang dan menghubungkannya dengan seri yang diberikan. Metode B mengkorelasikan data H dengan referensi data H, L dengan L, C dengan C, dan kemudian mengalikan ketiga nilai untuk menghitung korelasi bersih . Jelas itu mengurangi korelasi keseluruhan, tetapi saya merasa cenderung untuk memperbaiki korelasi yang dihasilkan.
Saya minta maaf karena terlambat merespons. Saya mencoba mengumpulkan data dan kode korelasi dan membuat grafik untuk penjelasannya. Gambar ini menunjukkan salah satu peristiwa langka ketika korelasinya cukup tepat. Saya akan membuat dan berbagi gambar saat pertandingan yang dihasilkan juga sangat menyesatkan meskipun nilai korelasinya cukup tinggi.
@ Adambowen: Anda tepat. Sebenarnya saya telah menerapkan dua algoritma yang berbeda: korelasi dan waktu dinamis untuk mengakses kesamaan seri. Untuk DTW saya harus menggunakan MSE seperti yang Anda katakan. Untuk korelasi, saya dapat menggunakan kedua MSE (dalam hal ini sama dengan biaya rute diagonal DTW, tanpa bengkok) dan rumus korelasi Pearson yang sebenarnya. Gambar di bawah ini dihasilkan dari menggunakan rumus korelasi Pearson. Saya akan mencari istilah yang Anda sebutkan di pos Anda dan segera melaporkan kembali. Pada kenyataannya, saya tidak memiliki dua seri waktu yang terpisah. Hanya satu seri waktu, panjangnya hampir 10.000+ poin. Saya menggunakan jendela geser lebar N untuk menghubungkan seri waktu secara otomatis untuk menemukan peristiwa ketika seri berperilaku mirip dengan hari ini. Jika saya dapat menemukan pasangan yang baik, Saya mungkin dapat memperkirakan pergerakan seri waktu saat ini berdasarkan pada bagaimana ia bergerak setelah setiap pertandingan diidentifikasi. Terima kasih atas wawasan Anda.
sumber
Jawaban:
Dua metode yang paling umum (dalam pengalaman saya) untuk membandingkan sinyal adalah korelasi dan kesalahan kuadrat rata-rata. Secara informal, jika Anda membayangkan sinyal Anda sebagai titik di beberapa ruang dimensi-N (ini cenderung lebih mudah jika Anda membayangkannya sebagai titik 3D) maka korelasi mengukur apakah titik-titik tersebut berada di arah yang sama (dari "asal") dan mean squared error mengukur apakah titik-titik tersebut berada di tempat yang sama (terlepas dari titik asal asalkan kedua sinyal memiliki titik asal yang sama). Yang berfungsi lebih baik tergantung pada jenis sinyal dan kebisingan di sistem Anda.
MSE tampaknya setara dengan contoh Anda:
Namun perlu dicatat bahwa ini bukan korelasi Pearson, yang akan lebih mirip
diberi sinyal berarti x_mean dan y_mean. Ini cukup dekat dengan korelasi murni:
Namun, saya pikir korelasi Pearson akan lebih kuat ketika sinyal memiliki komponen DC yang kuat (karena rata-rata dikurangi) dan dinormalisasi, sehingga penskalaan dalam salah satu sinyal tidak akan menyebabkan peningkatan korelasi yang proporsional.
Akhirnya, jika contoh khusus dalam pertanyaan Anda adalah masalah maka Anda juga dapat mempertimbangkan kesalahan absolut rata-rata (norma L1):
Saya menyadari ketiga pendekatan yang digunakan dalam berbagai aplikasi pemrosesan sinyal dan gambar, tanpa mengetahui lebih lanjut tentang aplikasi khusus Anda, saya tidak bisa mengatakan apa yang mungkin paling berhasil. Saya akan mencatat bahwa MAE dan MSE kurang sensitif terhadap bagaimana tepatnya data disajikan kepada mereka, tetapi jika kesalahan rata-rata tidak benar-benar metrik yang Anda minati maka mereka tidak akan memberi Anda hasil yang Anda cari untuk. Pendekatan korelasi bisa lebih baik jika Anda lebih tertarik pada "arah" sinyal Anda daripada nilai-nilai aktual yang terlibat, namun lebih sensitif terhadap bagaimana data disajikan dan hampir pasti membutuhkan beberapa pemusatan dan normalisasi untuk memberikan hasil yang Anda inginkan. mengharapkan.
Anda mungkin ingin mencari Korelasi Fase , Korelasi Silang , Korelasi Normalisasi , dan Filter yang Cocok . Sebagian besar digunakan untuk mencocokkan beberapa sub-sinyal dalam sinyal yang lebih besar dengan jeda waktu yang tidak diketahui, tetapi dalam kasus Anda, Anda bisa menggunakan nilai yang mereka berikan untuk jeda waktu nol jika Anda tahu tidak ada jeda antara dua sinyal.
sumber
Saya tidak yakin apakah ini cara yang tepat untuk melakukannya. Tetapi apakah penskalaan data Anda membantu? Coba bawa nilainya antara 0 dan 1. Saya kira ini seharusnya berhasil.
sumber