corr()方法的三个系数Pearson、Spearman或Kendall

在Pandas中,corr()方法用于计算变量之间的相似度(相关系数)。默认使用Pearson相关系数,但也可以通过参数修改为SpearmanKendall方法。这三种方法的核心区别在于它们对数据的要求和适用场景不同。下面用通俗的语言解释它们的区别:


1. Pearson相关系数(默认方法)

  • 特点:衡量两个变量之间的线性关系(即是否像一条直线那样变化)。
  • 适用场景
    • 数据是连续数值(如身高、体重、温度等)。
    • 变量之间的关系是线性的(如身高越高,体重越重)。
    • 数据服从正态分布(接近钟形曲线),且没有异常值。
  • 缺点
    • 如果变量之间是非线性关系(如抛物线、指数关系),Pearson可能会低估或高估相关性。
    • 对异常值敏感(极端值会影响结果)。

例子
假设学生数学成绩和物理成绩是线性相关的(数学越好,物理越好),用Pearson计算是合适的。但如果数学成绩和编程成绩的关系是“数学越好,编程成绩先提高后下降”(抛物线关系),Pearson可能不准确。


2. Spearman相关系数

  • 特点:衡量两个变量之间的单调关系(即一个变量增加,另一个变量是否单调递增或递减,不一定是直线)。
  • 适用场景
    • 数据是有序等级(如排名、评分等级)。
    • 变量之间是非线性但单调的关系(如收入与幸福感的关系可能是“收入越高,幸福感越高,但增速逐渐变慢”)。
    • 数据不服从正态分布,或存在异常值。
  • 优点
    • 不依赖数据的具体分布,对异常值更稳健。
    • 适用于非线性但单调的关系。

例子
假设学生编程成绩与数学成绩的关系是“数学成绩越高,编程成绩越高,但增速逐渐变慢”(非线性但单调),用Spearman会比Pearson更准确。


3. Kendall相关系数

  • 特点:衡量两个变量之间的有序一致性(即两个变量的排名是否一致)。
  • 适用场景
    • 数据是有序分类变量(如评委打分的排名、满意度调查的等级)。
    • 样本量较小(如少于30个数据点)。
    • 需要判断两个变量的排名是否高度一致(如两个评委对选手的排名是否相似)。
  • 优点
    • 计算简单,适合小样本。
    • 对异常值和非线性关系的容忍度较高。

例子
假设两位评委对10位选手的排名进行打分,用Kendall可以判断他们的排名是否一致(如评委A和评委B的排名是否高度匹配)。


三者对比总结

方法 适用关系类型 数据要求 对异常值的敏感度 适用场景示例
Pearson 线性关系 连续数值、正态分布 敏感 身高与体重的关系
Spearman 单调关系(非线性) 有序等级、非正态分布 不敏感 收入与幸福感的关系
Kendall 排名一致性 有序分类、小样本 不敏感 评委对选手的排名是否一致

如何选择?

  1. 先观察数据

    • 如果变量是连续数值且呈线性关系,优先用Pearson
    • 如果变量是等级数据或非线性但单调,用Spearman
    • 如果是小样本或需要比较排名的一致性,用Kendall
  2. 检查数据分布

    • 正态分布的数据适合Pearson;非正态分布或有异常值时,用Spearman或Kendall。
  3. 可视化辅助
    通过散点图观察变量关系:

    • 若接近直线 → Pearson。
    • 若趋势是单调但非直线 → Spearman。
    • 若关注排名一致性 → Kendall。

代码示例

import pandas as pd

# 创建示例数据
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 6, 8, 10]          # 线性关系
y2 = [2, 4, 9, 16, 25]         # 非线性但单调
y3 = [3, 2, 4, 1, 5]           # 有序等级

df = pd.DataFrame({'x': x, 'y1': y1, 'y2': y2, 'y3': y3})

# 计算不同方法的相关系数
print("Pearson:")
print(df.corr(method='pearson'))
print("\nSpearman:")
print(df.corr(method='spearman'))
print("\nKendall:")
print(df.corr(method='kendall'))

输出结果分析

  • y1x的Pearson系数会接近1(完全线性)。
  • y2x的Pearson系数较低(非线性),但Spearman系数接近1(单调)。
  • y3x的Kendall系数较高(排名一致性)。

通过理解这三种方法的差异,你可以根据数据的特性和需求选择最合适的相关性计算方式!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容