import pandas as pd
# Create a DataFrame with two perfectly correlated variables and one that isn't
data = pd.DataFrame({'temperature_celsius':[0,10,20,30,40],'temperature_fahrenheit':[32,50,68,86,104],# Perfect linear transformation'ice_cream_sales':[100,150,200,220,230]# Roughly increasing, not perfectly})# Calculate the Pearson correlation matrix
correlation_matrix = data.corr(method='pearson')print(correlation_matrix)技术支持
# Create a data frame with two perfectly correlated variables and one unrelated
data <- data.frame(
temperature_celsius = c(0,10,20,30,40),
temperature_fahrenheit = c(32,50,68,86,104),# Perfect conversion from Celsius
ice_cream_sales = c(100,150,200,220,230)# Generally increases, but not perfectly)# Calculate the correlation matrix
correlation_matrix <- cor(data, method ="pearson")
print(correlation_matrix)技术支持
如果您已经学习过我们的协方差教程,您就知道它关注的是两个变量如何共同变化。相关性在此概念上更进一步,通过对度量进行标准化,使您能够在不同数据集之间比较关系。
在本指南中,您将了解什么是相关性(具体来说,我们将重点介绍最常见的皮尔逊相关系数)、它与协方差有何不同,以及如何使用 Python 和 R 计算并解读它。最后,我们还将介绍在不同场景下使用的不同类型的相关性。
想继续提升您的统计技能,别错过我们的Python 统计基础技能路径或R 语言统计学入门课程。
什么是相关性?
相关性衡量两个定量变量之间线性关系的强度和方向。它有助于您理解一个变量的变化如何与另一个变量的变化相关联。
正相关表示当一个变量增加时,另一个变量也倾向于增加。负相关表示当一个变量增加时,另一个变量倾向于减少。
让我列出关键要点:
皮尔逊相关系数公式
如前所述,皮尔逊相关系数度量两个连续变量之间的线性关系。我还没提到的是:它假设数据为正态分布(更准确地说,它假设变量联合正态分布,即双变量正态性——其中有些微妙之处),并且对离群值敏感。皮尔逊相关系数记作r。
其中 xi 和 yi 为各个数据点,x 和 y 为其各自的均值。
在 Python 和 R 中计算皮尔逊相关系数
我们来看如何在 Python 和 R 中计算。
Python 中的相关性
您可以使用
scipy.stats模块中的pearsonr()函数在 Python 中计算皮尔逊相关系数:输出显示
x_values与y_values之间存在完全正线性关系(因为我们将 y 定义为 2x)。R 中的相关性
在 R 中,您可以使用
cor()函数:该输出同样表明存在完全正线性关系,与之前一致。
相关矩阵
相关矩阵展示了数据集中多个变量两两之间的相关系数。它有助于探索多变量数据中的关系。
Python 中的相关矩阵
通常会以矩阵格式(如 pandas DataFrame)表示变量,并直接计算相关矩阵:
该输出显示:
temperature_celsius与temperature_fahrenheit之间存在完全正相关(如预期,与之前一致)。ice_cream_sales与temperature_celsius和temperature_fahrenheit都存在强但非完全的相关关系。R 中的相关矩阵
在 R 中,您可以使用之前的
cor()函数,对数据框或矩阵进行相同的操作:该 R 输出与 Python 示例一致,包括:
temperature_celsius与temperature_fahrenheit之间的完全正相关。ice_cream_sales与temperature_celsius或temperature_fahrenheit之间的强相关关系。这种矩阵视图特别有助于识别潜在的回归中的多重共线性,或为诸如PCA等降维技术选择变量。
相关性与其他度量
我们看到相关性反映线性关联。现在,让我们谨慎地区分它与一些听起来类似的概念。
相关性 vs. 协方差
相关性和协方差都衡量两个变量如何共同变化,但它们在两个方面不同:尺度和可解释性。
协方差指示线性关系的方向,但无法以标准化的方式反映其强度。其数值取决于变量的计量单位,因而难以在不同数据集间比较。
相关性通过除以变量的标准差对协方差进行标准化,得到介于 -1 与 1 之间的无量纲数值。
相关性 vs. 决定系数 R-squared
R-squared(R²),即决定系数,也容易与相关性混淆。我尤其在分析师尝试解读模型性能时见过这种情况。
相关性(皮尔逊的r)衡量两个变量之间线性关系的强度与方向。
R-squared表示在线性回归模型中,一个变量中可由另一个变量预测的方差比例。在简单线性回归中,它等于皮尔逊r的平方。
相关性 vs. 因果性
切勿将相关性等同于因果性!这是一个常见错误。
相关性只表明两个变量共同变化,并不能解释原因。因此它是描述性的,而非解释性的。相关性可能源于巧合、混杂变量或反向因果。
因果性意味着一个变量的变化直接导致另一个变量的变化。关于因果性的讨论应放在受控实验或因果推断技术的语境中。
相关性分析中的常见挑战与错误
务必要注意分析人员常见的误区:
其他类型的相关系数
本文介绍了皮尔逊相关系数,因为它直接建立在协方差概念之上,是实践中最常用的度量。但现在让我们看看其他类型。
斯皮尔曼秩相关系数(ρ)
斯皮尔曼秩相关使用秩次值来评估单调关系的强度和方向。它是非参数的,适用于有序数据或非线性但趋势一致的情况。
其中:
肯德尔秩相关系数(τ)
肯德尔秩相关同样使用秩次衡量单调关系,但基于一致对与不一致对的数量。它在存在并列秩和小样本时更稳健。
其中:
结论
希望本文对您有所帮助。正如您所见,相关性是理解变量之间关系的基础性数据分析工具。
请务必继续学习我们的课程。我推荐我们的Python 统计基础技能路径,或R 语言统计学入门课程,作为很好的下一步。