Bagaimana menghubungkan dua seri waktu dengan kesenjangan dan basis waktu yang berbeda?

10

Saya menanyakan pertanyaan ini di StackOverflow, dan direkomendasikan untuk menanyakannya di sini.


Saya memiliki dua seri waktu data akselerometer 3D yang memiliki basis waktu yang berbeda (jam dimulai pada waktu yang berbeda, dengan beberapa creep yang sangat sedikit selama waktu pengambilan sampel), serta mengandung banyak celah dengan ukuran yang berbeda (karena penundaan terkait dengan penulisan untuk dipisahkan perangkat flash).

Accelerometer yang saya gunakan adalah GCDC X250-2 yang murah . Saya menjalankan accelerometer dengan gain tertinggi, sehingga data memiliki tingkat kebisingan yang signifikan.

Rangkaian waktu masing-masing memiliki sekitar 2 juta titik data (lebih dari satu jam pada 512 sampel / detik), dan berisi sekitar 500 peristiwa menarik, di mana peristiwa tipikal mencakup 100-150 sampel (masing-masing 200-300 ms). Banyak dari peristiwa ini dipengaruhi oleh pemadaman data selama penulisan flash.

Jadi, datanya tidak asli, dan bahkan tidak terlalu cantik. Tapi inspeksi bola mata saya menunjukkan dengan jelas berisi informasi yang saya minati. (Saya dapat memposting plot, jika perlu.)

Akselerometer berada dalam lingkungan yang serupa tetapi hanya tergabung secara moderat, artinya saya dapat mengetahui dengan jelas peristiwa mana yang cocok dari setiap akselerometer, tetapi sejauh ini saya tidak berhasil melakukannya dalam perangkat lunak. Karena keterbatasan fisik, perangkat juga dipasang dalam orientasi yang berbeda, di mana sumbu tidak cocok, tetapi mereka sedekat mungkin dengan ortogonal yang saya bisa buat. Jadi, misalnya, untuk akselerometer 3-sumbu A & B, + Axe memetakan ke -By (naik-turun), + Az memetakan ke -Bx (kiri-kanan), dan + Ay memetakan ke -Bz (depan-belakang) .

Tujuan awal saya adalah untuk mengkorelasikan peristiwa kejut pada sumbu vertikal, meskipun akhirnya saya ingin a) secara otomatis menemukan pemetaan sumbu, b) mengkorelasikan aktivitas pada ace yang dipetakan, dan c) mengekstrak perbedaan perilaku antara dua akselerometer (seperti memutar atau melenturkan).

Sifat data deret waktu membuat Python numpy.correlate () tidak dapat digunakan. Saya juga sudah melihat paket R's Zoo, tetapi belum membuat kemajuan. Saya telah mencari berbagai bidang analisis sinyal untuk bantuan, tetapi saya tidak membuat kemajuan.

Adakah yang punya petunjuk tentang apa yang bisa saya lakukan, atau pendekatan yang harus saya teliti?

Pembaruan 28 Feb 2011: Menambahkan beberapa plot di sini yang menunjukkan contoh data.

BobC
sumber
1
@ Bobob, mungkin salah satu moderator dapat membuat pos Anda dimigrasikan ke situs ini. Itu akan menjadi yang paling masuk akal. Adapun pertanyaan teknis Anda, pertama-tama, apakah Anda menggunakan FFT untuk melakukan korelasinya? Itu harus layak untuk 2 juta titik data pada komputer yang setengah layak. Rasio signal-to-noise Anda terlihat cukup tinggi, jadi Anda harus berbisnis. Pemotongan cepat dan kotor akan mengisi data yang hilang dengan sampel terakhir yang tersedia atau dengan nol. Rangkak dari perbedaan interval pengambilan sampel mungkin merupakan "fitur" yang paling menantang dari data Anda untuk ditangani.
kardinal
@ cardinal: Saya memang mencoba FFT, hanya untuk mendapatkan sampah sebagai hasilnya. Fitur 'menarik' yang mudah terlihat dalam data tidak dapat dibedakan dari kebisingan di FFT. Namun, saya telah melakukan FFT hanya pada seluruh kumpulan data: Mungkin jendela bergerak FFT akan memberikan hasil yang lebih baik, tetapi saya belum dapat menemukan cara yang efisien secara komputasi untuk mengimplementasikannya. Saya menduga transformasi Wavelet bisa membantu, tapi saya tidak terbiasa dengannya (tetapi saya perlahan-lahan mempelajarinya).
BobC
1
O(n2)O(nlogn)
@ Bob, dari atas kepala saya, sepertinya beberapa varian dari tumpang tindih-dan-tambahkan atau tumpang tindih-dan-simpan algoritma dapat digunakan untuk melakukan FFT jendela geser. Menggeser sampel dalam jendela hanya merupakan pergeseran fase, jadi yang harus Anda lakukan adalah mengompensasi sampel yang "jatuh" di ujung kiri dan yang "masuk" di ujung kanan.
kardinal
Hai, saya punya pertanyaan serupa. Saya memiliki 2 seri waktu, masing-masing diwakili oleh sebuah matriks dengan kolom pertama sesuai dengan nilai-nilai dan kolom kedua sesuai dengan perbedaan waktu (karena nilai sebelumnya) Bagaimana cara menemukan korelasi antara 2 matriks ini? Saya mencoba melakukan xcorr2 () tetapi tampaknya tidak benar dan melakukan xcorr mungkin akan menghitung korelasi dengan hanya nilai-nilai yang dipertimbangkan, tetapi saya juga ingin memperhitungkan waktu. Saya benar-benar bingung di sini, akankah FFT membantu? Bagaimana Anda menyarankan agar saya melakukannya?

Jawaban:

12

Pertanyaannya menyangkut menghitung korelasi antara dua seri waktu sampel tidak teratur (proses stokastik satu dimensi) dan menggunakannya untuk menemukan offset waktu di mana mereka berkorelasi secara maksimal ("perbedaan fase").

Masalah ini biasanya tidak dibahas dalam analisis deret waktu, karena data deret waktu dianggap dikumpulkan secara sistematis (pada interval waktu yang teratur). Ini lebih merupakan provinsi geostatistik , yang menyangkut generalisasi multidimensi dari deret waktu. Dataset geostatistik pola dasar terdiri dari pengukuran sampel geologi di lokasi yang tidak beraturan.

(z(p)z(q))2/2z(p)ppqZVar(Z(p))pZ(p)Z(q)

(z(p),w(p))zw

Dengan dua juta poin Anda harus dapat mendeteksi penyimpangan kecil dari stasioneritas. Mungkin saja perbedaan fase antara kedua seri waktu dapat bervariasi dari waktu ke waktu juga. Atasi ini dengan menghitung cross-variogram secara terpisah untuk jendela yang berbeda yang ditempatkan sepanjang periode waktu.

O(nk)O(n2)k

whuber
sumber
ntn=nttnτn=tn+α+βnαβ
ββ
@whuber, @BobC, saya membuat perkiraan semi-berpendidikan berdasarkan pengalaman masa lalu yang berurusan dengan masalah dan masalah yang sama. Sebagian besar pendekatan yang saya lihat intensif secara komputasi dan gagal mengesankan. Satu upaya mungkin melalui sesuatu seperti pembengkokan waktu dinamis atau apa yang disebut pendaftaran kurva oleh Ramsay dan Silverman . Apakah salah satu dari mereka akan layak pada dataset ukuran ini tidak jelas bagi saya.
kardinal
Butuh sedikit waktu untuk otakku melilit ini. Saya akan mulai dengan contoh-contoh dalam paket R yang Anda sebutkan.
BobC
@ Bob, apakah model kasar yang saya berikan untuk timing asynchronicity dekat dengan yang Anda miliki? Saya pikir ini "offset awal acak" + "kesalahan linear" di mana yang terakhir disebabkan oleh perbedaan konstan kecil dalam interval pengambilan sampel antara dua perangkat Anda. Lalu ada beberapa kesalahan acak kecil tambahan, katakanlah karena mengganggu proses dua UC berbeda di atas itu.
kardinal