2012-06-20 23 views
9

Tôi có bộ dữ liệu với hai mảng dữ liệu dài, hoặc tôi có thể tạo một mảng các mục hai mục và tôi muốn tính tương quan và ý nghĩa thống kê được đại diện bởi dữ liệu (có thể tương quan chặt chẽ hoặc có thể không có mối tương quan có ý nghĩa thống kê).Trong Python, làm thế nào tôi có thể tính toán mối tương quan và ý nghĩa thống kê giữa hai mảng dữ liệu?

Tôi đang lập trình bằng Python và đã cài đặt scipy và gọn gàng. Tôi nhìn và tìm thấy Calculating Pearson correlation and significance in Python, nhưng điều đó dường như muốn dữ liệu được thao tác để nó rơi vào một phạm vi được chỉ định.

Cách thích hợp để, tôi giả sử, yêu cầu scipy hoặc gumpy để cho tôi mối tương quan và ý nghĩa thống kê của hai mảng là gì?

+3

Tại sao bạn nghĩ rằng 'scipy.stats.pearsonr' muốn dữ liệu được thao tác vì vậy nó rơi vào một phạm vi nhất định? – ecatmur

+2

Hệ số _correlation_ nằm trong khoảng từ -1 đến +1. Đó là đầu ra, không phải đầu vào. –

Trả lời

2

Bạn có thể sử dụng Mahalanobis distance giữa hai mảng này, có tính đến mối tương quan giữa chúng.

Chức năng nằm trong gói này scipy: scipy.spatial.distance.mahalanobis

Có một ví dụ tốt đẹp here

7

Nếu bạn muốn tính Hệ số tương quan Pearson, thì scipy.stats.pearsonr là cách để thực hiện; mặc dù, ý nghĩa chỉ có ý nghĩa đối với các tập dữ liệu lớn hơn. Hàm này không yêu cầu dữ liệu được thao tác để rơi vào một phạm vi được chỉ định. Giá trị cho sự tương quan rơi vào khoảng thời gian [-1,1], có lẽ đó là sự nhầm lẫn?

Nếu ý nghĩa không quá quan trọng, bạn có thể sử dụng numpy.corrcoef().

Khoảng cách Mahalanobis tính đến mối tương quan giữa hai mảng, nhưng nó cung cấp một phép đo khoảng cách, không phải là một mối tương quan. (Về mặt toán học, khoảng cách Mahalanobis không phải là một khoảng cách thực sự; tuy nhiên, nó có thể được sử dụng như vậy trong những ngữ cảnh nhất định để có lợi thế lớn.)