在数据科学和统计学中,相关性函数是一种非常强大的工具,它能够帮助我们揭示数据之间的紧密联系。想象一下,你手中有一堆看起来毫无关联的数据点,而相关性函数就像一位高明的侦探,能够找出这些数据点之间隐藏的秘密联系。
什么是相关性?
相关性是指两个变量之间的线性关系强度。简单来说,它衡量的是当一个变量发生变化时,另一个变量是如何随之变化的。相关性的大小通常用一个介于-1到1之间的数值来表示,其中:
- 1 表示完全正相关,即一个变量的增加与另一个变量的增加完全一致;
- -1 表示完全负相关,即一个变量的增加与另一个变量的减少完全一致;
- 0 表示没有线性相关性。
常见的相关性函数
- 皮尔逊相关系数(Pearson Correlation Coefficient): 这是最为常见的相关性度量方法,它假设两个变量是正态分布的,并且具有相同的方差。计算公式如下:
import numpy as np
def pearson_correlation(x, y):
n = len(x)
sum_x = np.sum(x)
sum_y = np.sum(y)
sum_x2 = np.sum([i**2 for i in x])
sum_y2 = np.sum([i**2 for i in y])
sum_xy = np.sum([x[i] * y[i] for i in range(n)])
numerator = n * sum_xy - sum_x * sum_y
denominator = np.sqrt((n * sum_x2 - sum_x**2) * (n * sum_y2 - sum_y**2))
if denominator == 0:
return 0
return numerator / denominator
- 斯皮尔曼等级相关系数(Spearman’s Rank Correlation Coefficient): 当数据不满足正态分布时,斯皮尔曼等级相关系数是一种很好的选择。它通过比较两个变量的等级顺序来衡量它们之间的相关性。
def spearman_correlation(x, y):
ranks_x = np.argsort(np.argsort(x))
ranks_y = np.argsort(np.argsort(y))
return pearson_correlation(ranks_x, ranks_y)
- 肯德尔等级相关系数(Kendall’s Rank Correlation Coefficient): 肯德尔等级相关系数通过计算两个变量的等级配对差异来衡量它们之间的相关性。这个系数对异常值不太敏感,因此在数据中有极端值时更为可靠。
def kendall_correlation(x, y):
ranks_x = np.argsort(np.argsort(x))
ranks_y = np.argsort(np.argsort(y))
concordant = sum([1 if ranks_x[i] < ranks_y[i] else -1 for i in range(len(ranks_x) - 1)])
discordant = sum([1 if ranks_x[i] > ranks_y[i] else -1 for i in range(len(ranks_x) - 1)])
return concordant - discordant / (len(ranks_x) - 1)
如何使用相关性函数?
数据预处理:在使用相关性函数之前,通常需要对数据进行预处理,包括处理缺失值、标准化数据等。
选择合适的函数:根据数据的特征和需求选择合适的相关性函数。
计算相关性:使用选定的函数计算相关性系数。
分析结果:根据相关性系数的值和方向来分析变量之间的关系。
相关性函数是数据科学家和统计学家揭示数据间紧密联系的秘密武器。通过合理地使用这些工具,我们可以更好地理解数据,为决策提供有力的支持。
