楼主: n49P373Ux62B
141 0

[图行天下] 数据科学中相关矩阵的神秘面纱 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-7-21
最后登录
2018-7-21

楼主
n49P373Ux62B 发表于 2025-12-1 17:34:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

相关矩阵是一种用于揭示数据集中变量之间相互关系的统计工具,能够以直观的方式呈现这些依赖性,从而为预测建模和后续分析提供支持。它通过成对计算变量之间的相关系数,并将其组织成矩阵形式,帮助识别潜在的模式与结构。

towardsdatascience.com/demystifying-the-correlation-matrix-in-data-science-6b8a4482b6e2

什么是相关性?

相关性描述的是两个变量之间的统计关联程度,反映了它们在线性或非线性关系中的方向与强度。这种关系是非方向性的,即不区分因果顺序——若变量A变化引起B变化,反之亦然,两者仍被视为具有相同的相关性。

通常从三个方面评估相关性:

  • 线性 vs 非线性:当一个变量的变化引发另一个变量按固定比例变动时,称为线性相关。例如身高每增加一厘米,体重可能相应增加一定数值。而营业额增长与股价上升的关系则往往呈现非线性特征——首次增长30%可能推动股价上涨10%,再次增长30%却仅带来5%的涨幅。
  • 正相关与负相关:若一个变量上升导致另一个变量也上升,则为正相关;若一个变量上升而另一个下降,则为负相关。若无明显联动,则认为相关系数接近于零,表示无显著相关性。

相关系数的类型

根据数据性质和变量间关系的不同,有多种方法可用于计算相关系数。以下是三种广泛应用的相关性度量方式。

皮尔逊相关系数

该系数主要用于衡量两个连续型、度量尺度变量之间的线性相关强度。其适用前提是变量呈近似线性关系且数据服从正态分布。

计算公式如下:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cb36fc676ab6ea284e3a1246013f6e3d.png

其中 Xi 和 Yi 表示变量的观测值,X 和 为其对应的均值。该公式也可改写为使用标准差的形式:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/a561161e9d92ba84b9c85e2aca824de9.png

最终结果落在 [-1, 1] 区间内:1 表示完全正相关,-1 表示完全负相关,0 表示无线性相关。

斯皮尔曼相关系数

斯皮尔曼方法放宽了对线性关系的要求,转而检测单调关系(即一个变量持续增加时,另一变量整体呈上升或下降趋势)。因此,即使变量间关系非线性,只要保持一致的趋势方向,仍可捕捉其相关性。

此外,该系数适用于序数数据(即只关心排序而非具体数值差异),使其在处理等级评分、排名类数据时尤为有效。

什么是相关矩阵?

相关矩阵本质上是一个二维表格,展示数据集中所有变量两两之间的相关系数。每一行和每一列代表一个变量,交叉点上的单元格显示对应两个变量的相关值。

此矩阵不仅有助于快速识别强相关或弱相关的变量组合,还能辅助发现多重共线性问题——这在回归分析中尤为重要,因为高度相关的自变量可能导致模型参数估计不稳定或解释困难。

通过可视化手段(如热力图)呈现相关矩阵,可以更清晰地观察变量间的依赖结构,进而指导特征选择与模型构建。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b2e54975cdd317e319e2b834ca1d5fa8.png

正负相关性的示例 | 来源:作者

如何在 Python 中创建相关矩阵?

利用 Python 的 pandas 库,可以通过调用 DataFrame.corr() 方法轻松生成相关矩阵,默认采用皮尔逊系数,但也支持斯皮尔曼等其他方法。结合 seaborn 或 matplotlib 可进一步绘制热力图,实现图形化展示。

相关矩阵的局限性

尽管相关矩阵是探索性数据分析的重要工具,但它也有局限性。首先,它仅反映线性或单调关系,无法捕捉复杂的非线性交互。其次,高相关性并不意味着因果关系。最后,异常值可能显著影响相关系数的准确性,因此在应用前应进行必要的数据清洗与检验。

综上所述,相关矩阵为理解变量间依赖关系提供了简洁有效的视角,但在实际使用中需结合背景知识与数据特性谨慎解读。

在计算斯皮尔曼相关系数时,核心思想是基于变量的排序(即秩次)而非原始数值。首先,数据集会依据第一个变量进行排序,并为每个观测值分配一个从1开始的连续排名,最低值排为1。接着,对第二个变量执行同样的操作,生成第二组排名序列。随后,针对每一个数据点,计算其在两个变量中的排名之差:

towardsdatascience.com/demystifying-the-correlation-matrix-in-data-science-6b8a4482b6e2

斯皮尔曼相关系数通过以下公式得出,其中 d 表示各数据点排名差值的平方和,n 代表数据集中样本点的总数。

另一种衡量变量间关联程度的方法是肯德尔-tau 相关系数。与斯皮尔曼类似,它也适用于非线性关系的检测,并依赖于数据的序数特性。然而,肯德尔-tau 更适合小规模数据集,在评估关系强度方面通常更为稳健。

该方法的核心在于分析数据点的成对比较,将每一对分为“一致对”或“不一致对”。当两个观测值 (x?, y?) 和 (x_j, y_j) 在两个变量上的相对排序相同时,称为一致对——也就是说,若 x_i > x_j,则对应的 y_i > y_j;反之则视为不一致对。

肯德尔-tau 的计算公式如下所示:

cor()

接下来讨论一个关键概念:相关性与因果性的区别。

相关性 描述的是两个统计变量之间的关联程度,能够反映它们之间线性或非线性关系的方向与强弱。换句话说,它可以说明一个变量的变化是否伴随着另一个变量的变化,但并不解释这种变化的原因。

因果性 指的是一个变量直接导致另一个变量发生变化的关系。例如,如果A的发生直接引起B的结果,那么二者之间存在因果联系。

举个例子可以更清楚地说明这一点:研究可能发现皮肤癌风险与频繁访问户外游泳池之间存在正相关。这意味着去游泳池次数越多的人,患皮肤癌的概率也可能更高。虽然这显示出明显的相关性,但这并不代表两者之间有因果关系——即不能断言“去游泳池会导致皮肤癌”。

实际上,真正的影响因素可能是阳光暴露。常去户外泳池的人往往在日光下停留时间更长,如果没有做好防晒措施,就更容易晒伤,从而增加皮肤癌的风险。由此可见,游泳池访问频率与皮肤癌之间的关联是由第三个隐含变量(紫外线照射)驱动的,因此属于虚假相关,而非因果。

更多此类看似相关却无因果关系的例子可以在 tylervigen.com 上找到,展示了大量统计上显著但现实中毫无逻辑联系的相关现象。

接下来介绍如何构建和理解相关矩阵。

相关矩阵 是一种以表格形式呈现的数据结构,用于展示数据集中所有变量两两之间的相关系数。矩阵中的每个单元格表示对应行变量与列变量之间的相关程度,使用相关系数 r?? 来量化变量 X? 与 X? 之间的关联强度。

其一般结构如下:

corr()

其中:

  • K 表示所求的相关矩阵;
  • r?? 是变量 X? 与 X? 之间的相关系数;
  • n 为数据集中变量的总数。

上述提到的各种相关系数计算方法(如皮尔逊、斯皮尔曼、肯德尔等)均可用于填充该矩阵。实际应用中,无需手动计算,多种数据分析工具已提供自动化支持:

  • 在 Excel 中,可通过“数据分析”工具包中的相关函数快速生成;
  • Python 中,Pandas 库允许直接调用 DataFrame 的 .corr() 方法创建相关矩阵,NumPy 同样提供相应计算功能;
  • R 语言中可通过 cor() 函数实现;
  • Matlab 也内置了 corrcoef 等函数用于构建相关矩阵。

值得注意的是,在生成相关矩阵前,必须确保数据已经过清洗处理,包括缺失值的填补或删除,以及异常值的识别与修正。否则,这些数据质量问题可能严重影响相关性分析的准确性。

关于如何解读相关矩阵:它本质上是对变量间相互依赖关系的高度浓缩表达。矩阵中的每一个数值都反映了两个变量间的相关性强弱与方向。正值表示正相关(同向变动),负值表示负相关(反向变动),接近0的值则意味着几乎无线性关系。结合具体业务背景,可进一步挖掘潜在的影响机制与结构特征。

相关性的方向揭示了变量之间的关联方式。例如,当两个变量呈现正相关(如 rij = 0.8)时,意味着它们的变化趋势一致:一个变量上升,另一个也倾向于上升,反之亦然。典型的例子是销售人员数量与公司营业额之间的关系——销售团队规模扩大,通常会带来更高的收入。

相反,若一个变量的增加导致另一个变量减少,则表现为负相关,例如 rij = -0.7 所示的情况。失业率与经济增长之间常存在这种负向关系:当失业率上升时,经济增速往往放缓;而就业市场改善时,经济则更可能扩张。

相关性的强度不仅由其符号决定,还取决于其绝对值大小。接近 -1 或 1 的相关系数表明变量间存在较强的线性关系,而接近 0 的值则说明几乎没有线性关联或相关性极弱。

相关矩阵具备对称性这一关键特性,即矩阵中主对角线两侧的元素完全对应相等。换句话说,Xi 与 Xj 的相关系数等于 Xj 与 Xi 的相关系数(rij = rji)。这种对称结构简化了解读过程,只需分析矩阵的一半即可掌握全部信息。

corr()

在观察相关矩阵时,识别潜在模式同样重要。例如,若多个变量均与某一变量高度相关,这可能表明它们共同反映某种潜在特征,可被归为同一簇。以“每周锻炼小时数”和“最大俯卧撑次数”为例,两者可能都与较低的体脂率显著相关,因此可以视为衡量身体素质的相关指标。

多重共线性问题是解释相关矩阵时需要特别注意的现象。当两个或多个变量之间存在高度相关时,就可能出现这种情况。它在回归分析等建模过程中会造成参数估计不稳定、标准误增大等问题,影响模型的可靠性和解释力。因此,在构建统计模型前,应通过变量筛选或降维方法加以处理。

如何可视化相关矩阵?

为了快速理解变量间的关联结构,可视化是一种高效手段,尤其适用于高维数据集的整体把握。以下是几种常见的可视化方法:

热图(Heatmap)

热图是最常用的相关矩阵展示方式。所有变量同时作为行和列排列,每个单元格的颜色深浅表示对应变量之间的相关程度。一般而言,颜色越深代表相关性越强,越浅则越弱。此外,单元格内通常还会显示具体的相关系数值。

由于每个变量与自身的相关性为1,主对角线上的所有单元格均为最深色。结合颜色与数值信息,热图能够直观地揭示出强相关区域、异常值以及整体的数据结构。

towardsdatascience.com/demystifying-the-correlation-matrix-in-data-science-6b8a4482b6e2

聚类分析(Clustered Heatmap)

对于复杂或大规模数据集,简单的热图可能不足以清晰展现变量间的结构关系。此时可引入聚类分析,将具有相似相关模式的变量自动分组,并重新排序以形成聚类块。

这种方法能突出显示变量集群,帮助识别功能上相关的变量群组,从而提升对数据内在结构的理解能力。

cor()

散点图(Scatter Plots)

尽管相关矩阵提供了数值化的线性关系度量,但其无法捕捉非线性依赖或异常点的影响。此时,散点图成为有力补充工具。通过绘制两变量之间的实际观测点分布,可以判断其关系是否为线性、是否存在离群值或曲线趋势。

多个散点图可通过成对组合的方式构成散点图矩阵(Pair Plot),实现对整个数据集中各变量两两关系的全面可视化。

如何在 Python 中实现相关矩阵的可视化?

使用 Python 可轻松完成从计算到可视化的全流程。首先利用 Pandas 计算相关矩阵,再借助 Seaborn 进行图形化呈现。以下是一个典型流程:

通过 NumPy 生成模拟数据并存入 DataFrame 后,调用 DataFrame.corr() 方法即可得到相关矩阵。默认情况下,该函数采用皮尔逊相关系数,但也可通过 method 参数选择斯皮尔曼或肯德尔等其他方法。

heatmap()

随后使用 Seaborn 的 heatmap() 函数进行绘图,传入相关矩阵,并可自定义颜色方案、是否显示数值标签等参数。最后通过 matplotlib 的 plt.show() 显示结果图像。

相关矩阵的局限性

虽然相关矩阵是探索变量关系的重要工具,但在使用时需意识到其固有局限:

最核心的一点是:相关性不等于因果关系。即使两个变量高度相关,也不能据此断定其中一个导致另一个变化。可能存在隐藏的混杂因素、反向因果或其他机制在起作用。因此,在做出推论时必须谨慎,结合领域知识进行综合判断。

此外,相关系数主要衡量线性关系,对非线性关联敏感度较低。即使两个变量有强烈但非线性的联系,其相关系数仍可能接近零。因此,应结合散点图等图形工具共同分析。

相关矩阵是数据分析中用于展示数据集内变量之间关联程度的重要工具。它通过成对计算变量间的相关性,并将结果组织在一个方阵中,便于整体观察和分析。通常情况下,该矩阵会以热图的形式呈现,其中颜色较深的区域代表较高的相关性,颜色较浅的部分则表示相关性较弱。

在 Python 环境下,可以从 DataFrame 直接调用方法计算相关矩阵,并结合 seaborn 等可视化库进行图形化展示,操作简便且直观高效。

towardsdatascience.com/demystifying-the-correlation-matrix-in-data-science-6b8a4482b6e2

尽管这一方法具有诸多优势,但在实际应用中仍需注意其潜在的局限性和使用条件,以确保分析结果的准确性和可靠性。

异常值与非线性关系的影响

标准的皮尔逊相关系数对异常值非常敏感,容易因极端值的存在而产生偏差,从而扭曲变量间真实的相关性。此外,该系数假设变量之间的关系是线性的,因此当变量呈现非线性关系时,皮尔逊系数可能无法准确反映其关联强度。此时,可考虑采用更适合处理非线性关系的其他相关性度量方式,如斯皮尔曼等级相关或肯德尔秩相关。

数据缩放的重要性

当数据集中包含以不同单位或量纲测量的变量时,直接计算相关性可能导致误导性结果。为了消除尺度差异带来的影响,应在分析前对数据进行标准化或归一化处理。常用的方法包括使用 MinMax 缩放器将数据压缩至特定范围,或通过计算 z 分数实现标准化,使所有变量处于可比较的水平上。

cor()

多重共线性问题

在多元分析场景中,若两个或多个自变量高度相关,则会出现多重共线性现象。这种情况会影响回归模型中参数估计的稳定性与解释能力,导致模型结果不可靠。因此,在构建模型前应利用相关矩阵识别并处理此类问题,例如通过变量筛选或主成分分析等方式降低维度和相关性。

核心要点总结

  • 相关矩阵用于可视化变量间的两两相关性,常以热图形式展现。
  • 相关性计算基于成对变量,结果存储于方阵结构中。
  • 除皮尔逊系数外,还可选用适用于非线性关系的相关指标。
  • 必须关注方法的局限性,如对异常值敏感、受数据尺度影响等问题。
  • 合理预处理数据(如缩放)并理解统计假设,有助于提升分析质量。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数据科学 相关矩阵 Demystifying correlation Matplotlib

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-5 18:32