İki zaman serisini boşluklar ve farklı zaman tabanlarıyla nasıl ilişkilendirebilirim?


10

StackOverflow üzerinde bu soruyu sordum ve burada sormak için tavsiye edildi.


Farklı zaman tabanlarına (saatler farklı zamanlarda başlatılan, örnekleme zamanı sırasında çok hafif bir sürünme ile) sahip iki zaman serisi 3D ivmeölçer verilerimin yanı sıra farklı boyutlarda birçok boşluk içeren (ayrı yazma ile ilgili gecikmeler nedeniyle) flash cihazlar).

Kullandığım ivmeölçerler ucuz GCDC X250-2'dir . İvmeölçerleri en yüksek kazançta çalıştırıyorum, bu yüzden veriler önemli bir gürültü tabanına sahip.

Zaman serilerinin her biri yaklaşık 2 milyon veri noktasına sahiptir (512 örnek / saniyede bir saatten fazla) ve tipik bir olay 100-150 numuneyi (her biri 200-300 ms) kapsayan yaklaşık 500 olay içerir. Bu olayların çoğu flash yazma sırasındaki veri kesintilerinden etkilenir.

Yani, veri bozulmamış ve hatta çok güzel değil. Ancak göz küresi incelemem, ilgilendiğim bilgileri açıkça içerdiğini gösteriyor. (Gerekirse araziler gönderebilirim.)

İvmeölçerler benzer ortamlardadır, ancak sadece orta derecede bağlanmıştır, yani her ivmeölçerden hangi olayların eşleştiğini gözle söyleyebilirim, ancak şimdiye kadar yazılımda bunu yapamadım. Fiziksel sınırlamalar nedeniyle, cihazlar ayrıca eksenlerin eşleşmediği farklı yönlere monte edilir, ancak onları yapabileceğim kadar diktirler. Bu nedenle, örneğin, 3 eksenli A ve B ivmeölçerleri için, -By (yukarı-aşağı) ile + Ax haritaları, -Bx (sol-sağ) ile + Az haritaları ve -Bz (ön-arka) ile + Ay haritaları .

İlk hedefim dikey eksendeki şok olaylarını ilişkilendirmek, ancak sonunda a) eksen eşlemesini otomatik olarak keşfetmek, b) eşlenen aslardaki etkinliği ilişkilendirmek ve c) iki ivmeölçer (büküm gibi) arasındaki davranış farklılıklarını çıkarmak veya esneme).

Zaman serisi verilerinin doğası Python'un numpy.correlate () yöntemini kullanılamaz hale getirir. Ben de R's Zoo paketine baktım, ama onunla hiç ilerleme yapmadım. Yardım için farklı sinyal analizi alanlarına baktım, ancak ilerleme kaydetmedim.

Yapabileceğim şeyler veya araştırmam gereken yaklaşımlar hakkında herhangi bir ipucu olan var mı?

28 Şub 2011 Güncelleme: Added bazı araziler burada veri örneklerini gösteren.


1
@BobC, belki moderatörlerden biri yayınınızı bu siteye taşıyabilir. Bu en mantıklı olurdu. Teknik sorularınıza gelince, her şeyden önce, FFT'yi korelasyon yapmak için mi kullanıyorsunuz? Bu, yarı iyi bir bilgisayarda 2 milyon veri noktası için mümkün olmalıdır. Sinyal-gürültü oranınız oldukça yüksek görünüyor, bu yüzden işte olmalısınız. Çabuk ve kirli bir kesim, eksik verileri son kullanılabilir örnekle veya sıfırlarla doldurmak olacaktır. Örnekleme aralığı farklılıklarından kaynaklanan sürünme, verilerinizin ele alınması gereken en zorlu "özelliği" olabilir.
kardinal

@cardinal: Ben sadece sonuç olarak çöp almak için bir FFT denedim. Verilerde kolayca görülebilen 'ilginç' özellikler FFT'deki gürültüden ayırt edilemez. Ancak, FFT'leri yalnızca tüm veri setinde yaptım: Belki de hareketli bir pencere FFT daha iyi sonuçlar verirdi, ancak henüz bunu uygulamak için hesaplama açısından verimli bir yol bulamadım. Bir Wavelet dönüşümünün yardımcı olabileceğinden şüpheleniyorum, ancak buna aşina değilim (ama yavaşça öğreniyorum).
BobC

1
@BobC, demek istediğim, korelasyonu hesaplamak için FFT tabanlı bir uygulama düşündünüz mü? Doğrudan evrişim , ancak FFT tabanlı bir uygulama bu azaltarak mümkün kılar. FFT'nin kendisine bakarken, 2 milyon veri noktası ile frekans çözünürlüğünüz çok yüksek olacaktır. Herhangi bir örnekleme kayması ve diğer şeyler, sinyali frekans başına yıkamak zorundadır. Ancak, sinyali gürültüden çıkarmak için birçok bölmenin üzerinde toplanabilmeniz gerekir. Welch yaklaşımı veya belki de özel bir pencereleme tekniği gibi bir şey. O(n2)O(nlogn)
kardinal

@BobC, başımın üstünden, bir örtüşen ve ekleme veya örtüşme ve kaydetme algoritmasının bir varyantı, sürgülü pencere FFT yapmak için kullanılabilir gibi görünüyor . Bir pencerede numunelerin kaydırılması sadece bir faz kaymasına eşittir, bu yüzden tek yapmanız gereken sol ucun “düştüğü” ve sağ ucunun “içeri girdiği” örnekleri telafi etmektir.
kardinal

Merhaba, benzer bir sorum var. Ben 2 zaman serisi var, her biri ilk sütun değerleri ve ikinci sütun zaman farkı karşılık gelen bir matris ile temsil (önceki değer beri) Bu 2 matris arasındaki korelasyonu nasıl bulabilirim? Ben xcorr2 () yapmaya çalıştım ama doğru görünmüyor ve xcorr yapmak muhtemelen sadece değerleri ile korelasyon hesaplamak düşünüyor, ama ben de zaman hesaplamak istiyorum. Burada gerçekten kafam karıştı, bir FFT yardımcı olacak mı? Bunun hakkında gitmemi nasıl önerirsiniz?

Yanıtlar:


12

Soru , iki düzensiz örneklenmiş zaman serisi (tek boyutlu stokastik süreçler) arasındaki korelasyonun hesaplanması ve maksimum korelasyonlu oldukları zaman ofsetini (bunların "faz farkı") bulmak için kullanılmasıyla ilgilidir.

Bu sorun genellikle zaman serisi analizinde ele alınmaz, çünkü zaman serisi verilerinin sistematik olarak (düzenli zaman aralıklarında) toplandığı varsayılır. Daha çok zaman serilerinin çok boyutlu genellemelerini ilgilendiren jeoistatistik ilidir . Arketipik jeoistatistik veri seti, düzensiz aralıklı konumlardaki jeolojik örneklerin ölçümlerinden oluşur.

Düzensiz aralıklarla, konum çiftleri arasındaki mesafeler değişir: iki mesafe aynı olamaz. Jeoistatistik bunu ampirik variogramla aşar . Bu, "tipik" (genellikle ortalama veya medyan) değerini hesaplar - burada "yarım" - , noktasında ölçülen bir değeri gösterir ve ve arasındaki mesafe , "gecikme" adı verilen bir aralıkta şekilde sınırlandırılır. sürecinin durağan olduğunu ve bir kovaryansa sahip olduğunu varsayarsak, yarıvaryans beklentisi, herhangi bir için eksi kovaryansa ek olarak maksimum kovaryansa ( eşittir ) eşittir.(z(p)z(q))2/2z(p)ppqZVar(Z(p))pZ(p) ve . Gecikmelere bu biniş düzensiz aralık sorunu ile başa çıkmaktadır.Z(q)

Ölçümlerin sıralı bir çifti olduğunda , her bir noktada oluşur, bir benzer arasında ampirik Variogram hesaplayabilir 'nin ve herhangi bir gecikme ile kovaryans tahmin' in ve dolayısıyla . Çapraz variogramın tek boyutlu versiyonunu istiyorsunuz. R paketleri gstat ve sgeostat , diğerleri arasında, tahmin eder çapraz variogramların. Verilerinizin tek boyutlu olduğundan endişelenmeyin; yazılım onlarla doğrudan çalışmazsa, sabit bir ikinci koordinat girin: bu onları iki boyutlu gösterecektir.(z(p),w(p))zw

İki milyon puanla, durağanlıktan küçük sapmaları tespit edebilmelisiniz. İki zaman serisi arasındaki faz farkının da zaman içinde değişmesi mümkündür. Zaman aralığı boyunca aralıklı farklı pencereler için çapraz variogramı ayrı ayrı hesaplayarak bununla başa çıkın.

@cardinal, bu noktaların çoğunu yorumlarda zaten gündeme getirdi. Bu cevabın ana katkısı, işinizi sizin için yapmak için uzamsal istatistik paketlerinin kullanılmasına ve bu verileri analiz etmek için jeoistatistik tekniklerini kullanmaktır. Hesaplama verimliliği söz konusu olduğunda, tam evrişimin (çapraz variogram) gerekli olmadığını unutmayın: değerlerine sadece faz farkının yakınında ihtiyacınız vardır. Bu çaba yapar değil, , bile out-of-the-box yazılımı ile mümkün olabilir böylece, hesaplama için gecikme sayısıdır. Değilse, doğrudan evrişim algoritmasının uygulanması kolaydır.O ( n 2 ) kO(nk)O(n2)k


ntn=nttnτn=tn+α+βnαβ

ββ

@whuber, @BobC, benzer sorunlarla ve sorunlarla ilgili geçmiş deneyimlere dayanarak yarı eğitimli bir tahmin yapıyorum. Gördüğüm çoğu yaklaşım hesaplamaya dayalıdır ve etkilememektedir. Bir girişim dinamik zaman atlaması veya Ramsay ve Silverman'ın eğri kaydı dediği şey olabilir . Bunlardan birinin bu boyut veri kümesinde uygulanabilir olup olmayacağı benim için net değil.
kardinal

Beynimi bunun etrafına sarmam biraz zaman alacak. Bahsettiğiniz R paketlerindeki örneklerle başlayacağım.
BobC

@BobC, zaman uyumsuzluğu için verdiğim kaba model sahip olduğunuza yakın mı? Ben ikincisi iki cihaz arasındaki örnekleme aralığında küçük bir sabit fark nedeniyle "rastgele ilk ofset" + "doğrusal hata" olduğunu düşünüyorum. Sonra, bunun üzerine iki farklı uC'nin kesintili işlenmesi nedeniyle bazı ek küçük rastgele hatalar var.
kardinal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.