皮尔逊与斯皮尔曼相关系数:寻找变量之间的和谐

📅 发布时间:2026/7/15 14:11:04 👁️ 浏览次数:
皮尔逊与斯皮尔曼相关系数:寻找变量之间的和谐
原文towardsdatascience.com/pearson-vs-spearman-correlation-find-harmony-between-the-variables-08e201ca9f7f考虑一个交响乐团在演出前调整乐器的情况。每位音乐家调整自己的音符以与其他人和谐确保无缝的音乐体验。在数据科学中数据集中的变量可以比作乐团的乐手理解它们之间的和谐或不和谐是至关重要的。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/726143edaaceff493bfa6e3c11fd373f.png图片来源pixabay.com.相关性是一种统计度量就像乐团的指挥一样引导我们对数据中复杂关系的理解。在这里我们将关注两种类型的相关性皮尔逊和斯皮尔曼。如果我们的数据是一篇作品皮尔逊和斯皮尔曼就是我们的乐团指挥他们有着独特的解读交响乐的方式每个人都有独特的优势和细微之处。理解这两种不同的方法将使你能够提取见解并理解变量之间的联系。皮尔逊相关系数皮尔逊相关系数表示为r量化了两个连续变量之间线性关系的强度和方向。它是通过将两个变量的协方差除以它们标准差乘积来计算的。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ce94b8691471b8ec124a3e93c912bed5.png皮尔逊系数公式在这里X和Y是两个不同的变量而Xi和Yi代表各自的数据点。X和Y的均值分别用*bar{X}和bar{Y}*表示。r的解释依赖于其值范围从-1 到 1。-1 的值表示完美的负相关表明一个变量增加时另一个变量线性减少[2]。相反1 的值表示完美的正相关说明两个变量都线性增加。0 的值表示没有线性相关性。皮尔逊相关系数特别擅长捕捉变量之间的线性关系。它对线性模式的敏感性使其在调查受一致线性趋势支配的关系时成为一个强大的工具。此外系数的标准化性质使得在不同数据集之间进行比较变得容易。然而需要注意的是皮尔逊容易受到异常值的影响。如果一个数据集包含极端值它们可能会影响计算导致不准确的解释。技术概念可以通过实际例子更好地理解。让我们用Python来展示皮尔逊相关系数的计算及其可视化。假设我们有两个列表分别代表学习时间X和相应的考试成绩Y。importnumpyasnpfromscipy.statsimportpearsonrimportmatplotlib.pyplotaspltimportseabornassns# Generating data pointsnp.random.seed(42)# For reproducibilityhours_studiednp.random.randint(8,25,size50)exam_scores602*hours_studiednp.random.normal(0,5,size50)# Calculate Pearson correlation coefficientpearson_corr,_pearsonr(hours_studied,exam_scores)# Calculate Pearson correlation line coefficientsm,bnp.polyfit(hours_studied,exam_scores,1)# Fit a linear regression line# Scatter plotfig,axplt.subplots()ax.scatter(hours_studied,exam_scores,colorsns.color_palette(hls,24)[14],alpha.9,labelData points)plt.plot(hours_studied,m*np.array(hours_studied)b,colorred,alpha.6,labelPearson Correlation Line)plt.title(Hours Studied vs. Exam Scores)plt.xlabel(Hours Studied)plt.ylabel(Exam Scores)plt.legend(loclower right)ax.spines[top].set_visible(False)ax.spines[bottom].set_visible(False)ax.spines[right].set_visible(False)ax.spines[left].set_visible(False)ax.xaxis.set_ticks_position(none)ax.yaxis.set_ticks_position(none)https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6b372633ec82484689e6eb13ebde48ef.png图片由作者提供。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0a7eaa8cb6cbd891e41266692cdd3924.png当面对曲线模式时皮尔逊相关系数的有效性减弱。这种局限性源于皮尔逊对线性的固有假设使其不适合捕捉非线性关系的细微差别。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9aabe977adc24f95e56c63e93a3960ae.png图片由作者提供。考虑一个场景其中两个变量之间的关系遵循二次曲线。由于无法捕捉非线性关系皮尔逊相关系数可能会错误地暗示存在弱或不存在的关系。# Generating quadratic datanp.random.seed(42)Xnp.linspace(-10,10,100)YX**2np.random.normal(0,10,sizelen(X))# Calculate Pearson correlation coefficientpearson_corr,_pearsonr(X,Y)m,bnp.polyfit(X,Y,1)# Fit a linear regression line# Scatter plotfig,axplt.subplots()ax.scatter(X,Y,colorsns.color_palette(hls,24)[14],alpha.9,labelData points)plt.plot(X,m*Xb,colorred,alpha.6,labelPearson Correlation Line)plt.title(X vs. Y (Quadratic Relationship))plt.xlabel(X)plt.ylabel(Y)plt.legend(locupper center)ax.spines[top].set_visible(False)ax.spines[bottom].set_visible(False)ax.spines[right].set_visible(False)ax.spines[left].set_visible(False)ax.xaxis.set_ticks_position(none)ax.yaxis.set_ticks_position(none)https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/97990614ea8a973e35b7ef2f65723b32.pnghttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3cf6940b0df626ed95686922c6d15d60.png图片由作者提供。斯皮尔曼相关系数斯皮尔曼相关系数解决了皮尔逊在应用于非线性关系或包含异常值的数据集时的局限性[3]。斯皮尔曼的秩相关系数(ρ)表示为rho在变量的排名值上操作使其对极端值不太敏感非常适合捕捉单调关系。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4425b03bcdf791bbe836c6f58a747351.png斯皮尔曼系数公式在上述公式中_di表示对应变量对的排名之差而n是数据点的数量。与皮尔逊类似斯皮尔曼系数介于-1 到 1 之间。-1 的值表示完美的负单调相关意味着当一个变量增加时另一个变量会持续减少。1 的值表示完美的正单调相关说明两个变量都会持续增加。0 的值表示没有单调相关。与皮尔逊不同斯皮尔曼不假设线性在异常值的情况下具有鲁棒性。它关注数据的序数性质当变量之间的关系更多地关于顺序而不是具体值时它是一个有价值的工具。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/86b413d5535a347cc8eec7325baef170.png图片由作者提供。考虑以下使用 Python 的实际应用其中我们有两个变量“A”和“B”它们之间存在非线性关系importnumpyasnpfromscipy.statsimportspearmanrfromscipy.statsimportpearsonrimportmatplotlib.pyplotasplt# Generating non-linear datanp.random.seed(42)Anp.linspace(-10,10,100)BA**5np.random.normal(0,4000,sizelen(A))# Calculate Spearman correlation coefficientspearman_corr,_spearmanr(A,B)# Calculate Pearson correlation coefficientpearson_corr,_pearsonr(A,B)m,bnp.polyfit(A,B,1)# Fit a linear regression line# Scatter plotfig,axplt.subplots()ax.scatter(A,B,colorsns.color_palette(hls,24)[14],alpha.9,labelData points)plt.plot(X,m*Xb,colorred,alpha.6,labelPearson Correlation Line)plt.title(A vs. B (Non-linear Relationship))plt.xlabel(A)plt.ylabel(B)ax.spines[top].set_visible(False)ax.spines[bottom].set_visible(False)ax.spines[right].set_visible(False)ax.spines[left].set_visible(False)ax.xaxis.set_ticks_position(none)ax.yaxis.set_ticks_position(none)plt.legend()https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/be5bc63e4b6b45f842aaf86657a2a6ed.png作者图片。在这个例子中散点图展示了变量“A”和“B”之间的非线性关系。斯皮尔曼相关系数因为它不假设线性关系将更适合捕捉和量化这种非线性关联。你可以看到代表皮尔逊相关线的红色线没有捕捉到变量关系的本质。我们可以通过比较这两个系数来量化这个度量https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9ab0af2dfedbe30f00b3f606795a892b.png斯皮尔曼系数合理地更高因为它更适合这种关系类型。结论皮尔逊与斯皮尔曼在总结这个入门指南时让我们指出这两种措施的优缺点。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b7ff0912fbd4943416d6c9c04e49df7b.png作者图片。皮尔逊相关系数确实对线性关系是有效的并且可以提供一个标准化的度量便于在不同数据集之间进行比较。另一方面皮尔逊系数对异常值非常敏感。此外假设线性关系可能在非线性场景中误导。大多数皮尔逊系数的缺点都由斯皮尔曼相关系数解决它在存在异常值的情况下是稳健的并且由于它依赖于数据点的排名它适用于非线性关系。然而重要的是要记住斯皮尔曼系数也有一些关键问题。在我看来最相关的是它在大型数据集上的效率较低以及在排名相同的情况下可能损失信息。为了使这个指南简洁且实用我的建议是在正态分布的数据且没有异常值的情况下选择皮尔逊。当面对非线性关系、有序数据或包含异常值的数据集时选择斯皮尔曼因为它擅长捕捉单调关联。记住这个选择很大程度上依赖于数据的特征。同时也要记住虽然这个介绍触及了最重要的方面但仅仅触及了统计方法的表面。为了进一步学习以下是一些有趣的资源集参考文献文中参考文献[1] Laerd 统计学 – 皮尔逊积矩相关系数[2] 波士顿大学 – 使用 R 进行相关性和回归[3] Analytics Vidhya – 皮尔逊与斯皮尔曼相关系数比较[4] Jim 统计学 – 斯皮尔曼相关系数解释其他资料统计学习导论 by Gareth James, Daniela Witten, Trevor Hastie, and Robert Tibshirani统计学 by Robert S. Witte and John S. Witte理解相关性 by Kristoffer Magnusson相关性及因果关系的温和导论 by David M Diez使用 IBM SPSS Statistics 发现统计学 by Andy Field应用多元统计分析 by Richard A. Johnson and Dean W. Wichern