簡體   English   中英

如何確定Python中的相關系數?

[英]How do I determine a correlation coefficient in Python?

我正在使用的方程式如下-

在此處輸入圖片說明

描述說x-bar和y-bar是數組1和數組2的平均值。最小系數為0.3。

我問的原因是因為我不太了解統計方程,更不用說在Python中實現它們了。

最簡單的方法是使用scipy.stats(請參閱此處

import numpy as np
from scipy.stats.stats import pearsonr

x = np.random.random(20)
y = np.random.random(20)

print(pearsonr(x, y))

這將為您提供兩個值,相關性和p值。

您可以這樣自己實現:

x = np.random.random(20)
y = np.random.random(20)
x_bar = np.mean(x)
y_bar = np.mean(y)

top = np.sum((x - x_bar) * (y - y_bar))
bot = np.sqrt(np.sum(np.power(x - x_bar, 2)) * np.sum(np.power(y - y_bar, 2)))

print(top/bot)

兩者給出相同的結果,祝您好運!

使用for循環的簡單實現是:

import math

def correlation(x, y):
    x_bar = sum(x) / len(x)
    y_bar = sum(y) / len(y)

    var_x = sum((x_i - x_bar)**2 for x_i in x)
    var_y = sum((y_i - y_bar)**2 for y_i in y)

    assert len(x) == len(y)
    numerator = sum((x_i - x_bar) * (y_i - y_bar) for x_i, y_i in zip(x, y))
    denominator = math.sqrt(var_x * var_y)
    return numerator / denominator

if __name__ == "__main__":
    x = [...]
    y = [...]
    print(correlation(x, y))

在進行大量數值計算時,通常使用numpy模塊,該模塊已經定義了該函數:

import numpy as np

if __name__ == "__main__":
    x = np.array([...])
    y = np.array([...])
    print(np.corrcoef(x, y)[0, 1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM