Làm thế nào để tương quan hai chuỗi thời gian với các khoảng trống và các cơ sở thời gian khác nhau?


10

Tôi đã hỏi câu hỏi này trên StackOverflow và được đề nghị hỏi nó ở đây.


Tôi có hai chuỗi thời gian của dữ liệu gia tốc 3D có các cơ sở thời gian khác nhau (đồng hồ bắt đầu ở các thời điểm khác nhau, với một số lần leo rất nhẹ trong thời gian lấy mẫu), cũng như chứa nhiều khoảng trống có kích thước khác nhau (do sự chậm trễ liên quan đến việc viết để tách ra thiết bị flash).

Các gia tốc kế tôi đang sử dụng là GCDC X250-2 rẻ tiền . Tôi đang chạy gia tốc kế ở mức tăng cao nhất của chúng, vì vậy dữ liệu có độ ồn đáng kể.

Chuỗi thời gian mỗi chuỗi có khoảng 2 triệu điểm dữ liệu (hơn một giờ với 512 mẫu / giây) và chứa khoảng 500 sự kiện quan tâm, trong đó một sự kiện thông thường kéo dài 100-150 mẫu (mỗi lần 200-300 ms). Nhiều sự kiện trong số này bị ảnh hưởng bởi sự cố mất dữ liệu trong quá trình ghi flash.

Vì vậy, dữ liệu không còn nguyên sơ và thậm chí không đẹp lắm. Nhưng kiểm tra nhãn cầu của tôi cho thấy nó rõ ràng chứa thông tin tôi quan tâm. (Tôi có thể đăng lô, nếu cần.)

Các gia tốc kế ở trong các môi trường tương tự nhưng chỉ được ghép vừa phải, có nghĩa là tôi có thể biết được sự kiện nào phù hợp với từng gia tốc kế, nhưng cho đến nay tôi đã không thành công trong phần mềm. Do các giới hạn vật lý, các thiết bị cũng được gắn theo các hướng khác nhau, trong đó các trục không khớp nhau, nhưng chúng gần với trực giao như tôi có thể tạo ra. Vì vậy, ví dụ, đối với gia tốc kế 3 trục A & B, + Ax ánh xạ tới -By (lên xuống), + ánh xạ Az tới -Bx (trái-phải) và + Ay ánh xạ tới -Bz (trước sau) .

Mục tiêu ban đầu của tôi là tương quan các sự kiện sốc trên trục tung, mặc dù cuối cùng tôi muốn a) tự động khám phá ánh xạ trục, b) hoạt động tương quan trên các con át ánh xạ và c) trích xuất sự khác biệt về hành vi giữa hai gia tốc kế (như xoắn hoặc uốn cong).

Bản chất của dữ liệu chuỗi thời gian làm cho numpy.correlate () của Python không thể sử dụng được. Tôi cũng đã xem gói Zoo của R, nhưng đã không đi đầu với nó. Tôi đã tìm đến các lĩnh vực phân tích tín hiệu khác nhau để được giúp đỡ, nhưng tôi đã không tiến bộ.

Bất cứ ai cũng có bất kỳ manh mối nào cho những gì tôi có thể làm, hoặc cách tiếp cận tôi nên nghiên cứu?

Cập nhật ngày 28 tháng 2 năm 2011: Đã thêm một số lô ở đây hiển thị các ví dụ về dữ liệu.


1
@BobC, có thể một trong những người kiểm duyệt có thể di chuyển bài đăng của bạn đến trang web này. Đó sẽ là hợp lý nhất. Đối với các câu hỏi kỹ thuật của bạn, trước hết, bạn có đang sử dụng FFT để thực hiện tương quan không? Điều đó sẽ khả thi đối với 2 triệu điểm dữ liệu trên một máy tính nửa vời. Tỷ lệ tín hiệu trên tạp âm của bạn trông khá cao, vì vậy bạn nên kinh doanh. Việc cắt nhanh và bẩn sẽ là điền vào dữ liệu còn thiếu bằng mẫu có sẵn cuối cùng hoặc bằng số không. Sự chênh lệch từ sự khác biệt trong khoảng thời gian lấy mẫu có thể là "tính năng" thách thức nhất đối với dữ liệu của bạn.
Đức Hồng Y

@cardinal: Tôi thực sự đã thử FFT, kết quả là chỉ nhận được rác. Các tính năng 'thú vị' dễ thấy trong dữ liệu không thể phân biệt được với nhiễu trong FFT. Tuy nhiên, tôi chỉ thực hiện các FFT trên toàn bộ tập dữ liệu: Có lẽ FFT cửa sổ chuyển động sẽ cung cấp kết quả tốt hơn, nhưng tôi chưa thể tìm ra cách hiệu quả tính toán để thực hiện nó. Tôi nghi ngờ một biến đổi Wavelet có thể giúp đỡ, nhưng tôi không quen với nó (nhưng đang dần tìm hiểu về nó).
BobC

1
@BobC, ý tôi là, bạn đã xem xét triển khai dựa trên FFT để tính toán tương quan chưa? Tích chập trực tiếp là , nhưng việc triển khai dựa trên FFT sẽ làm giảm , khiến nó khả thi. Đối với việc xem xét chính FFT, với 2 triệu điểm dữ liệu, độ phân giải tần số của bạn sẽ rất cao. Bất kỳ creep lấy mẫu và các thứ khác đều bị ràng buộc để rửa tín hiệu trên cơ sở mỗi tần số. Nhưng, bạn sẽ có thể tổng hợp trên nhiều thùng để đưa tín hiệu ra khỏi nhiễu. Một cái gì đó giống như một cách tiếp cận tiếng Wales hoặc có thể là một kỹ thuật cửa sổ tùy chỉnh. O(n2)O(nlogn)
Đức Hồng Y

@BobC, ngoài đỉnh đầu của tôi, có vẻ như một số biến thể của thuật toán chồng chéo và thêm hoặc chồng chéo và lưu có thể được sử dụng để thực hiện FFT cửa sổ trượt. Trượt các mẫu trong cửa sổ chỉ bằng một pha, vì vậy tất cả những gì bạn phải làm là bù cho những mẫu "rơi ra" ở đầu bên trái và những mẫu "đi vào" ở đầu bên phải.
Đức Hồng Y

Xin chào, tôi có một câu hỏi tương tự. Tôi có 2 chuỗi thời gian, mỗi chuỗi được biểu thị bằng một ma trận với cột đầu tiên tương ứng với các giá trị và cột thứ hai tương ứng với chênh lệch thời gian (kể từ giá trị trước đó) Làm thế nào để tôi tìm thấy mối tương quan giữa 2 ma trận này? Tôi đã thử làm xcorr2 () nhưng có vẻ không đúng và làm xcorr có thể sẽ tính toán tương quan chỉ với các giá trị để xem xét, nhưng tôi cũng muốn tính đến thời điểm đó. Tôi thực sự bối rối ở đây, một FFT sẽ giúp đỡ? Làm thế nào bạn sẽ đề nghị tôi đi về nó?

Câu trả lời:


12

Câu hỏi liên quan đến việc tính toán mối tương quan giữa hai chuỗi thời gian được lấy mẫu không đều (quy trình ngẫu nhiên một chiều) và sử dụng điều đó để tìm thời gian bù trong đó chúng có tương quan tối đa ("độ lệch pha" của chúng).

Vấn đề này thường không được giải quyết trong phân tích chuỗi thời gian, bởi vì dữ liệu chuỗi thời gian được cho là được thu thập có hệ thống (theo các khoảng thời gian đều đặn). Nó đúng hơn là tỉnh địa lý , liên quan đến các khái quát đa chiều của chuỗi thời gian. Bộ dữ liệu địa lý kiểu mẫu bao gồm các phép đo mẫu địa chất tại các vị trí cách đều nhau.

Với khoảng cách không đều, khoảng cách giữa các cặp vị trí khác nhau: không có hai khoảng cách có thể giống nhau. Địa lý khắc phục điều này với variogram theo kinh nghiệm . Điều này sẽ tính giá trị "điển hình" (thường là trung bình hoặc trung bình) của - "semivariance" - trong đó biểu thị giá trị đo tại điểm và khoảng cách giữa và bị hạn chế nằm trong một khoảng gọi là "độ trễ". Nếu chúng ta giả sử tiến trình đứng yên và có hiệp phương sai, thì kỳ vọng của bán dẫn bằng với hiệp phương sai tối đa (bằng cho bất kỳ ) trừ đi hiệp phương sai giữa(z(p)z(q))2/2z(p)ppqZVar(Z(p))pZ(p) và . Điều này biến thành sự chậm trễ đối phó với vấn đề khoảng cách không đều.Z(q)

Khi một cặp số đo theo thứ tự được thực hiện tại mỗi điểm, người ta có thể tính toán tương tự phép đo chéo theo kinh nghiệm giữa và và từ đó ước tính hiệp phương sai ở bất kỳ độ trễ nào . Bạn muốn phiên bản một chiều của variogram chéo. Các gói R gstatsgeuler , trong số những người khác, sẽ ước tính các bản đồ chéo. Đừng lo lắng rằng dữ liệu của bạn là một chiều; nếu phần mềm không hoạt động trực tiếp với chúng, chỉ cần giới thiệu tọa độ thứ hai không đổi: điều đó sẽ khiến chúng xuất hiện hai chiều.(z(p),w(p))zw

Với hai triệu điểm, bạn sẽ có thể phát hiện những sai lệch nhỏ so với văn phòng phẩm. Cũng có thể độ lệch pha giữa hai chuỗi thời gian cũng có thể thay đổi theo thời gian. Đối phó với điều này bằng cách tính toán các bản ghi chéo cho các cửa sổ khác nhau cách nhau trong suốt khoảng thời gian.

@cardinal đã đưa ra hầu hết các điểm này trong các bình luận. Đóng góp chính của câu trả lời này là hướng đến việc sử dụng các gói thống kê không gian để thực hiện công việc của bạn cho bạn và sử dụng các kỹ thuật của địa lý học để phân tích các dữ liệu này. Theo như hiệu quả tính toán, lưu ý rằng tích chập hoàn toàn (variogram chéo) là không cần thiết: bạn chỉ cần các giá trị của nó gần độ lệch pha. Điều này làm cho nỗ lực , chứ không phải , trong đó là số độ trễ để tính toán, do đó có thể khả thi ngay cả với phần mềm bên ngoài. Nếu không, thuật toán tích chập trực tiếp rất dễ thực hiện.O ( n 2 ) kO(nk)O(n2)k


@whuber, ý kiến ​​và đề xuất tốt. Nếu tôi đang đọc chính xác câu hỏi, tôi tin rằng một mối quan tâm chính là sự không chắc chắn về thời điểm lấy mẫu. Điều này có thể hơi khác so với khung địa lý điển hình trong đó, tôi tin rằng, khoảng cách là không đều, nhưng vẫn được giả định đã biết (ít nhất là với độ chính xác cao). Tôi nghĩ rằng một mô hình thô là, nếu điểm thứ của loạt một tại thời điểm , đối với cố định thì điểm thứ của loạt 2 là tại trong đó là có thể theo thứ tự vài mili giây và có thể rất nhỏ. t n = n t t n τ n = t n + α + β n α βntn=nttnτn=tn+α+βnαβ
Đức Hồng Y

@Cardinal Tôi đã không nhận được điều đó từ câu hỏi. Tôi không thể nghĩ ra một cách ước tính sẽ không quá chuyên sâu về mặt tính toán. Có lẽ bằng cách chia chuỗi thời gian thành các nhóm trong đó hiệu ứng ròng của là không đáng kể? βββ
whuber

@whuber, @BobC, tôi đang đoán một cách nửa giáo dục dựa trên kinh nghiệm trong quá khứ xử lý các vấn đề và vấn đề tương tự. Hầu hết các cách tiếp cận tôi đã thấy là chuyên sâu tính toán và không gây ấn tượng. Một nỗ lực có thể thông qua một cái gì đó như cong vênh thời gian động hoặc cái mà Ramsay và Silverman gọi là đăng ký đường cong . Liệu một trong hai điều đó có khả thi trên tập dữ liệu kích thước này không rõ ràng đối với tôi.
Đức Hồng Y

Tôi sẽ mất một chút để bộ não của tôi bao bọc lấy điều này. Tôi sẽ bắt đầu với các ví dụ trong các gói R mà bạn đã đề cập.
BobC

@BobC, mô hình thô mà tôi đã đưa ra cho sự bất thường thời gian gần với những gì bạn có? Tôi nghĩ đó là "bù ban đầu ngẫu nhiên" + "lỗi tuyến tính" trong đó lỗi sau là do chênh lệch không đổi nhỏ trong khoảng thời gian lấy mẫu giữa hai thiết bị của bạn. Sau đó, có một số lỗi ngẫu nhiên nhỏ bổ sung, giả sử do xử lý gián đoạn của hai uC khác nhau trên đó.
Đức Hồng Y
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.