Một thước đo đáng tin cậy về độ tương tự chuỗi - tương quan chỉ không cắt nó cho tôi


8

Tôi đang cố gắng xác định một phương pháp để so sánh một chuỗi thời gian cụ thể với khoảng 10.000+ chuỗi thời gian tham chiếu theo chương trình và liệt kê các chuỗi thời gian tham chiếu có thể được quan tâm.

Phương pháp tôi đang sử dụng là Pearson Correlation . Đối với mỗi chuỗi thời gian tham chiếu, tôi sẽ tính các hệ số tương quan của chúng và sau đó sắp xếp toàn bộ danh sách chuỗi thời gian tham chiếu theo thứ tự giảm dần dựa trên hệ số tương quan. Sau đó, tôi sẽ phân tích trực quan chuỗi thời gian N hàng đầu có hệ số tương quan cao nhất, phù hợp nhất với chuỗi thời gian nhất định.

Vấn đề là tôi đã không nhận được kết quả đáng tin cậy. Thông thường, chuỗi trong phạm vi N hàng đầu không giống với bất kỳ thứ gì như chuỗi thời gian đã cho. Cuối cùng khi tôi đọc bài viết đầy đủ bên dưới, tôi đã hiểu tại sao: Người ta không thể sử dụng tương quan một mình để xác định xem hai chuỗi thời gian có giống nhau không.

Bộ tứ của Anscombe

Bây giờ đây là một vấn đề với tất cả các thuật toán phù hợp, tính toán một số khoảng cách giữa hai chuỗi thời gian. Chẳng hạn, hai nhóm chuỗi thời gian dưới đây có thể dẫn đến cùng một khoảng cách, nhưng một nhóm rõ ràng là khớp tốt hơn nhóm kia.

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

Vì vậy, câu hỏi của tôi là, có một công thức toán học (như tương quan) có thể phù hợp hơn với tôi trong các tình huống này không? Một trong những vấn đề không được đề cập ở đây?

Xin vui lòng yêu cầu làm rõ thêm hoặc cải thiện văn bản câu hỏi nếu cần. Cảm ơn! =)

BIÊN TẬP:

Kết quả tương quan

@woodchips, @kstallian:

Hàng trên cùng hiển thị mười thanh cuối cùng của USDCHF-Daily kết thúc vào ngày đã cho. Hàng thứ hai cho 3 kết quả hàng đầu của phương pháp A được sử dụng cho tương quan (giải thích sẽ theo sau). Hàng cuối cùng hiển thị 3 kết quả hàng đầu của phương pháp B. Tôi đã sử dụng giá Cao-Thấp-Đóng để tương quan. Những hình ảnh cuối cùng trong mỗi hàng là những gì tôi cho là "phù hợp", lý do là những bước ngoặt trong loạt phim quan trọng hơn đối với tôi. Một sự trùng hợp ngẫu nhiên là các hàng cuối cùng có mối tương quan tối đa. Nhưng bạn có thể thấy ở hàng cuối cùng rằng hình ảnh thứ hai là một sự tương đồng rất yếu. Tuy nhiên, nó vẫn lén lút vào top 3. Đây là điều khiến tôi băn khoăn. Do hành vi này, tôi buộc phải truy cập trực quan từng tương quan và chấp nhận / loại bỏ nó. Bộ tứ của Anscombe cũng nhấn mạnh rằng mối tương quan cần phải được kiểm tra trực quan. Đó là lý do tại sao tôi muốn tránh xa mối tương quan và khám phá các khái niệm toán học khác để đánh giá tính tương tự của chuỗi.

Phương pháp A nối thêm dữ liệu HLC trong một chuỗi dài và tương quan nó với chuỗi đã cho. Phương pháp B tương quan dữ liệu H với dữ liệu H tham chiếu, L với L, C với C và sau đó nhân cả ba giá trị để tính tương quan thuần . Rõ ràng nó làm giảm mối tương quan tổng thể, nhưng tôi cảm thấy nó có xu hướng tinh chỉnh các mối tương quan kết quả.

Tôi xin lỗi vì đã trả lời quá muộn. Tôi đã cố gắng thu thập dữ liệu và tương quan mã và làm đồ họa để giải thích. Hình ảnh này cho thấy một trong những sự kiện hiếm hoi khi các mối tương quan là điểm đẹp. Tôi sẽ tạo và chia sẻ đồ họa khi các kết quả khớp quá sai lệch mặc dù các giá trị tương quan là khá cao.

@adambowen: bạn đang ở trên. Trên thực tế, tôi đã thực hiện hai thuật toán khác nhau: tương quan và cong vênh thời gian động để truy cập tính tương tự của chuỗi. Đối với DTW tôi phải sử dụng MSE như bạn đã nói. Để tương quan, tôi có thể sử dụng cả MSE (trong trường hợp đó bằng với chi phí của tuyến đường chéo của DTW, mà không có bất kỳ sự cong vênh nào) và công thức tương quan thực tế của Pearson. Các hình ảnh dưới đây là kết quả của việc sử dụng công thức tương quan của Pearson. Tôi sẽ tra cứu các điều khoản bạn đã đề cập trong bài đăng của bạn và báo cáo lại sớm. Trên thực tế, tôi không có hai chuỗi thời gian riêng biệt. Nó chỉ là một chuỗi thời gian dài gần 10.000 điểm. Tôi sử dụng một cửa sổ trượt có chiều rộng N để tự động sắp xếp chuỗi thời gian để xác định vị trí các sự kiện khi chuỗi hoạt động tương tự như ngày nay. Nếu tôi có thể tìm thấy các trận đấu tốt, Tôi có thể dự đoán chuyển động của chuỗi thời gian hiện tại dựa trên cách di chuyển sau mỗi trận đấu được xác định. Cảm ơn sự sáng suốt của bạn.


3
Câu hỏi này có thể phù hợp hơn trên math.stackexchange.com.

1
Hoặc có lẽ xác thực chéo .
David Z

2
Bạn cần xác định chính xác những gì làm cho một trận đấu tốt hơn trong mắt bạn. Chỉ khi bạn định lượng được những gì tốt thì bạn mới có thể đưa ra một sơ đồ toán học để dự đoán điều đó. Mặt khác, "Tôi biết điều đó khi tôi nhìn thấy nó" chỉ áp dụng cho các nhóm rắm cũ mặc áo choàng.

vui lòng xem bản chỉnh sửa trong câu hỏi .. =)
AweSIM

Câu trả lời:


5

Hai phương pháp phổ biến nhất (theo kinh nghiệm của tôi) để so sánh tín hiệu là tương quan và sai số bình phương trung bình. Một cách không chính thức, nếu bạn tưởng tượng tín hiệu của mình là một điểm trong một không gian N chiều (điều này có xu hướng dễ dàng hơn nếu bạn tưởng tượng chúng là các điểm 3D) thì mối tương quan sẽ đo xem các điểm có cùng hướng hay không (từ "gốc") và sai số bình phương trung bình đo xem các điểm có ở cùng một vị trí hay không (không phụ thuộc vào gốc tọa độ miễn là cả hai tín hiệu có cùng gốc). Hoạt động tốt hơn phụ thuộc phần nào vào các loại tín hiệu và nhiễu trong hệ thống của bạn.

MSE dường như tương đương với ví dụ của bạn:

mse = 0;
for( int i=0; i<N; ++i )
    mse += (x[i]-y[i])*(x[i]-y[i]);
mse /= N;

tuy nhiên lưu ý rằng đây không thực sự là mối tương quan Pearson, nó sẽ giống như

xx = 0;
xy = 0;
yy = 0;

for( int i=0; i<N; ++i )
{
    xx += (x[i]-x_mean)*(x[i]-x_mean);
    xy += (x[i]-x_mean)*(y[i]-y_mean);
    yy += (y[i]-y_mean)*(y[i]-y_mean);
}

ppmcc = xy/std::sqrt(xx*yy);

đưa ra tín hiệu có nghĩa là x_mean và y_mean. Điều này khá gần với mối tương quan thuần túy:

corr = 0;
for( int i=0; i<N; ++i )
    corr += x[i]*y[i];

tuy nhiên, tôi nghĩ rằng mối tương quan Pearson sẽ mạnh mẽ hơn khi các tín hiệu có thành phần DC mạnh (vì giá trị trung bình bị trừ) và được chuẩn hóa, do đó, tỷ lệ trong một trong các tín hiệu sẽ không làm tăng tỷ lệ tương quan.

Cuối cùng, nếu ví dụ cụ thể trong câu hỏi của bạn là một vấn đề thì bạn cũng có thể xem xét lỗi tuyệt đối trung bình (chỉ tiêu L1):

mae = 0;
for( int i=0; i<N; ++i )
    mae += std::abs(x[i]-y[i]);
mae /= N;

Tôi biết tất cả ba cách tiếp cận đang được sử dụng trong các ứng dụng xử lý tín hiệu và hình ảnh khác nhau, mà không biết thêm về ứng dụng cụ thể của bạn, tôi không thể nói điều gì có thể hoạt động tốt nhất. Tôi sẽ lưu ý rằng MAE và MSE ít nhạy cảm hơn với cách chính xác dữ liệu được trình bày cho họ, nhưng nếu lỗi trung bình không thực sự là số liệu bạn quan tâm thì họ sẽ không cung cấp cho bạn kết quả mà bạn đang tìm kiếm cho Các cách tiếp cận tương quan có thể tốt hơn nếu bạn quan tâm đến "hướng" tín hiệu của mình hơn các giá trị thực tế có liên quan, tuy nhiên nó nhạy cảm hơn với cách trình bày dữ liệu và gần như chắc chắn yêu cầu một số định tâm và chuẩn hóa để đưa ra kết quả cho bạn chờ đợi.

Bạn có thể muốn tra cứu Tương quan pha , Tương quan chéo , Tương quan chuẩn hóaBộ lọc phù hợp . Hầu hết các tín hiệu này được sử dụng để khớp với một số tín hiệu phụ trong tín hiệu lớn hơn với độ trễ thời gian không xác định, nhưng trong trường hợp của bạn, bạn chỉ có thể sử dụng giá trị mà chúng đưa ra cho độ trễ thời gian bằng 0 nếu bạn biết không có độ trễ giữa hai tín hiệu.


vui lòng xem chỉnh sửa trong câu hỏi .. =)
AweSIM

1

Tôi không chắc chắn nếu đây là cách đúng đắn để làm điều đó. Nhưng liệu nhân rộng dữ liệu của bạn sẽ giúp? Hãy thử đưa các giá trị từ 0 đến 1. Tôi cho rằng điều này sẽ hoạt động.


điều đó khá hiệu quả nhưng không đáng tin cậy .. vì công việc của tôi tôi đã nhân rộng dữ liệu thành số không trung bình và phương sai đơn vị .. tôi vẫn nhận được kết quả dương tính (chuỗi có tương quan cao mà về mặt trực quan không giống với chuỗi đầu vào) .. tôi đang tìm kiếm đây có phải là khái niệm toán học nào khác mà tôi có thể sử dụng để có được các trận đấu VISUAL tốt không .. có sự thay thế nào cho sự tương quan của chuỗi tương tự không?
AweSIM

1
@AweSIM: Bạn có thể cho chúng tôi thêm một số manh mối về những gì bạn cho là "kết hợp hình ảnh tốt" không? Ví dụ, nếu tín hiệu thứ hai bị trễ bởi một đơn vị, liệu chúng có còn phù hợp với hình ảnh không?

này .. vâng, tôi sẽ cung cấp cho các bạn nhiều thông tin hơn chỉ trong
chốc lát

@kstallian .. vui lòng xem phần chỉnh sửa trong câu hỏi .. =)
AweSIM

@AweSIM Tôi nghĩ rằng câu trả lời hàng đầu đã đúng :)
viki.omega9
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.