如何在python中计算相关性
量化两个变量之间关系的一种方法是使用Pearson 相关系数,它是两个变量之间线性关联的度量。它始终采用 -1 和 1 之间的值,其中:
- -1 表示两个变量之间完全负线性相关
- 0 表示两个变量之间不存在线性相关
- 1 表示两个变量之间存在完全正线性相关
相关系数离零越远,两个变量之间的相关性越强。
本教程介绍如何在 Python 中计算变量之间的相关性。
如何在Python中计算相关性
要在Python中计算两个变量之间的相关性,我们可以使用Numpy corrcoef()函数。
import numpy as np np.random.seed(100) #create array of 50 random integers between 0 and 10 var1 = np.random.randint(0, 10, 50) #create a positively correlated array with some random noise var2 = var1 + np.random.normal(0, 10, 50) #calculate the correlation between the two arrays np.corrcoef(var1, var2) [[ 1. 0.335] [ 0.335 1. ]]
可以看出,这两个变量之间的相关系数为0.335 ,呈正相关。
默认情况下,该函数生成相关系数矩阵。如果我们只想返回两个变量之间的相关系数,我们可以使用以下语法:
np.corrcoef(var1, var2)[0,1] 0.335
为了测试这种相关性是否具有统计显着性,我们可以使用 Scipy pearsonr()函数计算与 Pearson 相关系数相关的 p 值,该函数返回 Pearson 相关系数以及双尾 p 值。
from scipy.stats.stats import pearsonr pearsonr(var1, var2) (0.335, 0.017398)
相关系数为0.335 ,双尾 p 值为0.017 。由于该 p 值小于 0.05,我们可以得出结论,两个变量之间存在统计上显着的相关性。
如果你想计算 Pandas DataFrame 中多个变量之间的相关性,你可以简单地使用.corr()函数。
import pandas as pd data = pd.DataFrame(np.random.randint(0, 10, size=(5, 3)), columns=['A', 'B', 'C']) data ABC 0 8 0 9 1 4 0 7 2 9 6 8 3 1 8 1 4 8 0 8 #calculate correlation coefficients for all pairwise combinations data.corr() ABC A 1.000000 -0.775567 -0.493769 B -0.775567 1.000000 0.000000 C -0.493769 0.000000 1.000000
如果你只想计算DataFrame中两个特定变量之间的相关性,你可以指定变量:
data['A'].corr(data['B']) -0.775567
其他资源
以下教程解释了如何在 Python 中执行其他常见任务: