Hướng dẫn how to find covariance between two variables in python - cách tìm hiệp phương sai giữa hai biến trong python

Giới thiệu

Làm việc với các biến trong phân tích dữ liệu luôn thúc đẩy câu hỏi: các biến phụ thuộc, liên kết và thay đổi với nhau như thế nào? Hiệp phương sai và các biện pháp tương quan hỗ trợ trong việc thiết lập điều này.

Hiệp phương sai mang lại sự thay đổi giữa các biến. Chúng tôi sử dụng hiệp phương sai để đo lường bao nhiêu biến thay đổi với nhau. Tương quan cho thấy mối quan hệ giữa các biến. Chúng tôi sử dụng tương quan để xác định mức độ liên kết mạnh mẽ của hai biến với nhau.

Trong bài viết này, chúng ta sẽ học cách tính toán hiệp phương sai và tương quan trong Python.

Hiệp phương sai và tương quan - nói đơn giản

Cả hiệp phương sai và tương quan là về mối quan hệ giữa các biến. Hiệp phương sai xác định sự liên kết định hướng giữa các biến. Các giá trị hiệp phương sai nằm trong phạm vi từ -inf đến +inf trong đó giá trị dương biểu thị rằng cả hai biến di chuyển theo cùng một hướng và giá trị âm biểu thị rằng cả hai biến di chuyển theo hướng ngược lại.

Tương quan là một biện pháp thống kê được tiêu chuẩn hóa thể hiện mức độ mà hai biến có liên quan tuyến tính (có nghĩa là chúng thay đổi bao nhiêu với tốc độ không đổi). Mức độ sức mạnh và sự liên kết định hướng của mối quan hệ giữa hai biến được xác định bởi mối tương quan và nó dao động từ -1 đến +1. Tương tự như hiệp phương sai, một giá trị dương biểu thị rằng cả hai biến di chuyển theo cùng một hướng trong khi một giá trị âm cho chúng ta biết rằng chúng di chuyển theo hướng ngược lại.

Cả hiệp phương sai và tương quan là các công cụ quan trọng được sử dụng trong thăm dò dữ liệu để lựa chọn tính năng và phân tích đa biến. Ví dụ, một nhà đầu tư đang tìm cách truyền bá rủi ro của một danh mục đầu tư có thể tìm kiếm các cổ phiếu có hiệp phương sai cao, vì nó cho thấy giá của họ tăng lên cùng một lúc. Tuy nhiên, một phong trào tương tự là không đủ. Sau đó, nhà đầu tư sẽ sử dụng số liệu tương quan để xác định mức độ liên kết mạnh mẽ của giá cổ phiếu với nhau.

Thiết lập mã Python - Lấy dữ liệu mẫu

Với những điều cơ bản đã học được từ phần trước, chúng ta hãy tiến lên để tính toán hiệp phương sai trong Python. Trong ví dụ này, chúng tôi sẽ làm việc trên bộ dữ liệu IRIS nổi tiếng. Chúng tôi chỉ làm việc với các loài setosa là cụ thể, do đó đây sẽ chỉ là một mẫu của bộ dữ liệu về một số bông hoa màu tím đáng yêu!

Chúng ta hãy xem bộ dữ liệu, trên đó chúng ta sẽ thực hiện phân tích:

Chúng tôi sắp chọn hai cột, để phân tích - sepal_lengthsepal_width.

Trong một tệp Python mới (bạn có thể đặt tên cho nó covariance_correlation.py), hãy bắt đầu bằng cách tạo hai danh sách với các giá trị cho các thuộc tính sepal_lengthsepal_width của hoa:

with open('iris_setosa.csv','r') as f:
    g=f.readlines()
    # Each line is split based on commas, and the list of floats are formed 
    sep_length = [float(x.split(',')[0]) for x in g[1:]]
    sep_width  = [float(x.split(',')[1]) for x in g[1:]]

Trong khoa học dữ liệu, nó luôn giúp trực quan hóa dữ liệu bạn đang làm việc. Đây là một âm mưu hồi quy Seaborn (sơ đồ phân tán + Phù hợp hồi quy tuyến tính) của các thuộc tính setosa này trên các trục khác nhau:

Trực quan các điểm dữ liệu dường như có mối tương quan cao gần với đường hồi quy. Hãy xem liệu các quan sát của chúng tôi có khớp với giá trị hiệp phương sai và tương quan của họ không.

Tính toán hiệp phương sai trong Python

Công thức sau đây tính toán hiệp phương sai:

Trong công thức trên,

  • XI, YI - là các yếu tố riêng lẻ của loạt X và Y
  • X̄, y̅ - là phương tiện toán học của loạt X và Y
  • N - là số lượng các yếu tố trong loạt

Mẫu số là

def covariance(x, y):
    # Finding the mean of the series x and y
    mean_x = sum(x)/float(len(x))
    mean_y = sum(y)/float(len(y))
    # Subtracting mean from the individual elements
    sub_x = [i - mean_x for i in x]
    sub_y = [i - mean_y for i in y]
    numerator = sum([sub_x[i]*sub_y[i] for i in range(len(sub_x))])
    denominator = len(x)-1
    cov = numerator/denominator
    return cov

with open('iris_setosa.csv', 'r') as f:
    ...
    cov_func = covariance(sep_length, sep_width)
    print("Covariance from the custom function:", cov_func)
1 cho toàn bộ tập dữ liệu và
def covariance(x, y):
    # Finding the mean of the series x and y
    mean_x = sum(x)/float(len(x))
    mean_y = sum(y)/float(len(y))
    # Subtracting mean from the individual elements
    sub_x = [i - mean_x for i in x]
    sub_y = [i - mean_y for i in y]
    numerator = sum([sub_x[i]*sub_y[i] for i in range(len(sub_x))])
    denominator = len(x)-1
    cov = numerator/denominator
    return cov

with open('iris_setosa.csv', 'r') as f:
    ...
    cov_func = covariance(sep_length, sep_width)
    print("Covariance from the custom function:", cov_func)
2 trong trường hợp mẫu. Vì bộ dữ liệu của chúng tôi là một mẫu nhỏ của toàn bộ bộ dữ liệu IRIS, chúng tôi sử dụng
def covariance(x, y):
    # Finding the mean of the series x and y
    mean_x = sum(x)/float(len(x))
    mean_y = sum(y)/float(len(y))
    # Subtracting mean from the individual elements
    sub_x = [i - mean_x for i in x]
    sub_y = [i - mean_y for i in y]
    numerator = sum([sub_x[i]*sub_y[i] for i in range(len(sub_x))])
    denominator = len(x)-1
    cov = numerator/denominator
    return cov

with open('iris_setosa.csv', 'r') as f:
    ...
    cov_func = covariance(sep_length, sep_width)
    print("Covariance from the custom function:", cov_func)
2.

Với công thức toán học được đề cập ở trên là tài liệu tham khảo của chúng tôi, hãy tạo chức năng này trong Python Pure Python:

def covariance(x, y):
    # Finding the mean of the series x and y
    mean_x = sum(x)/float(len(x))
    mean_y = sum(y)/float(len(y))
    # Subtracting mean from the individual elements
    sub_x = [i - mean_x for i in x]
    sub_y = [i - mean_y for i in y]
    numerator = sum([sub_x[i]*sub_y[i] for i in range(len(sub_x))])
    denominator = len(x)-1
    cov = numerator/denominator
    return cov

with open('iris_setosa.csv', 'r') as f:
    ...
    cov_func = covariance(sep_length, sep_width)
    print("Covariance from the custom function:", cov_func)

Trước tiên chúng tôi tìm thấy các giá trị trung bình của bộ dữ liệu của chúng tôi. Sau đó, chúng tôi sử dụng một danh sách hiểu để lặp lại trên mọi yếu tố trong hai chuỗi dữ liệu của chúng tôi và trừ các giá trị của chúng khỏi giá trị trung bình. Một vòng lặp cho vòng lặp có thể đã được sử dụng một cái giếng nếu đó là sở thích của bạn.

Sau đó, chúng tôi sử dụng các giá trị trung gian của hai chuỗi 'và nhân chúng với nhau trong một danh sách hiểu danh sách khác. Chúng tôi tổng hợp kết quả của danh sách đó và lưu trữ nó dưới dạng

def covariance(x, y):
    # Finding the mean of the series x and y
    mean_x = sum(x)/float(len(x))
    mean_y = sum(y)/float(len(y))
    # Subtracting mean from the individual elements
    sub_x = [i - mean_x for i in x]
    sub_y = [i - mean_y for i in y]
    numerator = sum([sub_x[i]*sub_y[i] for i in range(len(sub_x))])
    denominator = len(x)-1
    cov = numerator/denominator
    return cov

with open('iris_setosa.csv', 'r') as f:
    ...
    cov_func = covariance(sep_length, sep_width)
    print("Covariance from the custom function:", cov_func)
4.
def covariance(x, y):
    # Finding the mean of the series x and y
    mean_x = sum(x)/float(len(x))
    mean_y = sum(y)/float(len(y))
    # Subtracting mean from the individual elements
    sub_x = [i - mean_x for i in x]
    sub_y = [i - mean_y for i in y]
    numerator = sum([sub_x[i]*sub_y[i] for i in range(len(sub_x))])
    denominator = len(x)-1
    cov = numerator/denominator
    return cov

with open('iris_setosa.csv', 'r') as f:
    ...
    cov_func = covariance(sep_length, sep_width)
    print("Covariance from the custom function:", cov_func)
5 dễ tính toán dễ dàng hơn rất nhiều, hãy chắc chắn để decraese vào 1 khi bạn tìm thấy hiệp phương sai cho dữ liệu mẫu!

Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!

Sau đó, chúng tôi trả về giá trị khi

def covariance(x, y):
    # Finding the mean of the series x and y
    mean_x = sum(x)/float(len(x))
    mean_y = sum(y)/float(len(y))
    # Subtracting mean from the individual elements
    sub_x = [i - mean_x for i in x]
    sub_y = [i - mean_y for i in y]
    numerator = sum([sub_x[i]*sub_y[i] for i in range(len(sub_x))])
    denominator = len(x)-1
    cov = numerator/denominator
    return cov

with open('iris_setosa.csv', 'r') as f:
    ...
    cov_func = covariance(sep_length, sep_width)
    print("Covariance from the custom function:", cov_func)
4 được chia cho
def covariance(x, y):
    # Finding the mean of the series x and y
    mean_x = sum(x)/float(len(x))
    mean_y = sum(y)/float(len(y))
    # Subtracting mean from the individual elements
    sub_x = [i - mean_x for i in x]
    sub_y = [i - mean_y for i in y]
    numerator = sum([sub_x[i]*sub_y[i] for i in range(len(sub_x))])
    denominator = len(x)-1
    cov = numerator/denominator
    return cov

with open('iris_setosa.csv', 'r') as f:
    ...
    cov_func = covariance(sep_length, sep_width)
    print("Covariance from the custom function:", cov_func)
5 của nó, dẫn đến hiệp phương sai.

Chạy tập lệnh của chúng tôi sẽ cung cấp cho chúng tôi đầu ra này:

Covariance from the custom function: 0.09921632653061219

Giá trị dương biểu thị rằng cả hai biến di chuyển theo cùng một hướng.

Tính tương quan trong Python

Công thức được sử dụng rộng rãi nhất để tính toán hệ số tương quan là 'R' của Pearson:

Trong công thức trên,

  • XI, YI - là các yếu tố riêng lẻ của loạt X và Y
  • Tử số tương ứng với hiệp phương sai
  • Các mẫu số tương ứng với độ lệch chuẩn riêng lẻ của x và y

Có vẻ như chúng ta đã thảo luận về mọi thứ chúng ta cần để có được mối tương quan trong loạt bài viết này!

Hãy tính toán mối tương quan ngay bây giờ:

def correlation(x, y):
    # Finding the mean of the series x and y
    mean_x = sum(x)/float(len(x))
    mean_y = sum(y)/float(len(y))
    # Subtracting mean from the individual elements
    sub_x = [i-mean_x for i in x]
    sub_y = [i-mean_y for i in y]
    # covariance for x and y
    numerator = sum([sub_x[i]*sub_y[i] for i in range(len(sub_x))])
    # Standard Deviation of x and y
    std_deviation_x = sum([sub_x[i]**2.0 for i in range(len(sub_x))])
    std_deviation_y = sum([sub_y[i]**2.0 for i in range(len(sub_y))])
    # squaring by 0.5 to find the square root
    denominator = (std_deviation_x*std_deviation_y)**0.5 # short but equivalent to (std_deviation_x**0.5) * (std_deviation_y**0.5)
    cor = numerator/denominator
    return cor

with open('iris_setosa.csv', 'r') as f:
    ...
    cor_func = correlation(sep_length, sep_width)
    print("Correlation from the custom function:", cor_func)

Vì giá trị này cần sự hiệp phương sai của hai biến, chức năng của chúng tôi khá nhiều hoạt động lại giá trị đó một lần nữa. Khi hiệp phương sai được tính toán, chúng tôi sẽ tính độ lệch chuẩn cho từng biến. Từ đó, mối tương quan chỉ đơn giản là phân chia hiệp phương sai với sự nhân lên của các hình vuông của độ lệch chuẩn.

Chạy mã này, chúng tôi nhận được đầu ra sau, xác nhận rằng các thuộc tính này có một giá trị dương (dấu hiệu của giá trị, +, hoặc không có nếu 0) và mạnh (giá trị gần với 1) mối quan hệ:

Correlation from the custom function: 0.7425466856651597

Sự kết luận

Trong bài viết này, chúng tôi đã học được hai công cụ thống kê: hiệp phương sai và tương quan một cách chi tiết. Chúng tôi đã học được giá trị của chúng có ý nghĩa gì đối với dữ liệu của chúng tôi, cách chúng được thể hiện trong toán học và cách thực hiện chúng trong Python. Cả hai biện pháp này có thể rất hữu ích trong việc xác định mối quan hệ giữa hai biến.

Hiệp phương sai trong numpy là gì?

Hiệp phương sai chỉ ra mức độ mà hai biến khác nhau.indicates the level to which two variables vary together.

Sự hiệp phương sai của hai biến là gì?

Hiệp phương sai là gì?Trong toán học và thống kê, hiệp phương sai là thước đo mối quan hệ giữa hai biến ngẫu nhiên.Số liệu đánh giá bao nhiêu - đến mức độ nào - các biến thay đổi cùng nhau.Nói cách khác, về cơ bản nó là thước đo phương sai giữa hai biến.