相关性研究的非参数方法:Spearman的秩相关系数和Kendall tau秩相关系数

Source: http://www.r-bloggers.com/non-parametric-methods-for-the-study-of-the-correlation-spearmans-rank-correlation-coefficient-and-kendall-tau-rank-correlation-coefficient/

 

在前面的帖子中我们看到,如何用Pearson积矩相关系数(product-moment correlation coefficient)来研究符合Gaussian分布的变量之间的相关性。如果不能假设变量符合Gaussian分布,我们这里有两个非参数方法:Spearman's rho testKendall's tau test.
---------------------------------------------------

例如,你想要研究各种类型机械的生产率和操作员在使用中的满意评分(这些数字都从1到10),值如下:

Productivity: 5, 7, 9, 9, 8, 6, 4, 8, 7, 7
Satisfaction: 6, 7, 4, 4, 8, 7, 3, 9, 5, 8

先开始使用Spearman的秩相关系数:

a <- c(5, 7, 9, 9, 8, 6, 4, 8, 7, 7)
b <- c(6, 7, 4, 4, 8, 7, 3, 9, 5, 8)

cor.test(a, b, method="spearman")

        Spearman's rank correlation rho

data:  a and b 
S = 145.9805, p-value = 0.7512
alternative hypothesis: true rho is not equal to 0 
sample estimates:
      rho 
0.1152698 


统计检验给了我们结果为rho=0.115,这显示了两个数值集之间低的相关性。而p-value > 0.05允许我们接受null hypothesis H0:rho=0。

接下来我们使用相同数据来做Kendall tau秩相关系数的检测:

a <- c(5, 7, 9, 9, 8, 6, 4, 8, 7, 7)
b <- c(6, 7, 4, 4, 8, 7, 3, 9, 5, 8)
 
cor.test(a, b, method="kendall")

        Kendall's rank correlation tau

data:  a and b 
z = 0.5555, p-value = 0.5786
alternative hypothesis: true tau is not equal to 0 
sample estimates:
     tau 
0.146385


同样的,相关性非常低(tau=0.146),而显著有tau=0(p-value > 0.05)。

<think>好的,我现在需要帮用户理解秩相关系数,特别是Kendall's TauSpearman's Rho在衡量线性依赖中的应用。首先,我应该回顾一下用户提供的引用内容,看看里面有没有相关的信息。 用户给的引用里提到,Pearson、SpearmanKendall是三大相关系数,其中Pearson是线性的,而SpearmanKendall属于秩相关系数,适用于线性情况。引用24都提到SpearmanKendall非参数方法,适合正态分布的数据,以及线性关系。引用3还给出了Python中计算这些系数的方法,比如用df.corr('spearman')。这些信息应该可以整合到回答中。 接下来,我需要明确用户的问题:他们想了解秩相关系数的概念,特别是Kendall's TauSpearman's Rho,以及它们在线性依赖中的应用。所以,我需要分别解释这两个系数的定义、计算方法适用场景,然后比较它们的异同,并给出应用实例。 首先,Spearman's Rho。它基于变量的秩次,计算的是秩次的Pearson相关系数。适用于单调线性关系,对异常值不敏感。比如,当两个变量的关系呈现递增或递减的趋势,但不一定是直线时,Spearman更合适。计算步骤是先将数据转换为秩次,然后计算Pearson相关系数。 然后,Kendall's Tau。它通过统计一致对不一致对的数量来衡量相关性。适用于小样本或存在较多重复值的情况,对数据分布没有要求,计算复杂度较高。它衡量的是两个变量排序的一致性,比如如果一对数据点在两个变量上的顺序一致,就是一致对。 在比较部分,需要指出两者都是非参数的,处理线性关系,但Spearman基于秩次差,而Kendall基于一致对。Spearman对异常值更稳健,而Kendall更适合小样本。应用场景方面,比如金融分析中股票与市场的线性关系,或者生物统计中的基因表达相关性。 用户可能还想知道如何选择这两个系数,以及它们Pearson的区别。需要强调Pearson只适用于线性,而SpearmanKendall适用于单调线性,但如果是单调的线性关系,可能这两个也不行,可能需要其他方法。 最后,按照用户的要求生成相关问题,可能涉及比较、应用、计算方法、与其他系数的区别等。确保使用正确的中文表达,数学公式用$...$,独立公式用$$...$$,并检查LaTeX语法正确。引用标记要自然,比如在提到适用范围时引用[^2][^4]。 现在需要组织这些信息,结构清晰,分点解释,确保用户能逐步理解。同时注意避免专业术语过多,保持解释的易懂性。可能还需要给出实际例子,比如使用场景,或者如何在Python中计算,如引用3中的代码示例,但用户的问题更偏向理论,所以例子可能简短提及即可。 检查是否有遗漏的信息,比如两者的计算公式。例如,Spearman的公式是$$ \rho = 1 - \frac{6\sum d_i^2}{n(n^2-1)} $$,而KendallTau是$$ \tau = \frac{C - D}{\frac{1}{2}n(n-1)} $$。这些公式需要正确呈现,并解释符号含义。 还要注意用户提到的“线性依赖”,这里需要澄清SpearmanKendall处理的是单调的线性关系,如果是单调的,比如抛物线关系,这两个系数可能也无法捕捉到,这时候可能需要其他方法。这一点可能需要说明,避免误解。 总结,回答的结构应该是: 1. 秩相关系数概述 2. Spearman's Rho:定义、计算、应用 3. Kendall's Tau:定义、计算、应用 4. 两者的比较 5. 应用场景 6. 相关问题 确保每个部分都包含引用标记,并正确对应到用户提供的引用源。例如,在提到适用范围时引用[^4],在提到Python实现时引用[^3]。 现在开始撰写正式回答,按照用户的要求,使用中文,结构清晰,分点说明,公式正确,并在末尾添加相关问题。</think>### 秩相关系数Kendall's TauSpearman's Rho #### 1. 秩相关系数概述 秩相关系数用于衡量变量之间**单调关系**的强度,适用于线性但具有一致变化趋势的数据。与Pearson线性相关系数不同,它们基于数据的**秩次**(排序)而原始值,因此对异常值正态分布更稳健[^4]。 --- #### 2. Spearman's Rho(斯皮尔曼秩相关系数) - **定义**:将两个变量的数据分别转换为秩次后,计算其Pearson相关系数。 公式: $$ \rho = 1 - \frac{6\sum d_i^2}{n(n^2-1)} $$ 其中,$d_i$为两个变量对应秩次之差,$n$为样本量。 - **特点**: - 适用于单调线性关系(如指数、对数关系)。 - 对异常值不敏感,数据分布无要求。 - **应用场景**: 金融数据分析(如股票价格与交易量的关系)、心理学评分一致性分析等。 --- #### 3. Kendall's Tau(肯德尔等级相关系数) - **定义**:通过统计**一致对**(两个变量排序方向相同)与**不一致对**(排序方向相反)的数量衡量相关性。 公式: $$ \tau = \frac{C - D}{\frac{1}{2}n(n-1)} $$ 其中,$C$为一致对数,$D$为不一致对数。 - **特点**: - 更适用于小样本或存在较多重复值的数据。 - 解释性强(直接反映排序一致性)。 - **应用场景**: 生物统计中的基因表达相关性、社会科学中的调查问卷评分一致性分析。 --- #### 4. 两者对比 | **维度** | **Spearman's Rho** | **Kendall's Tau** | |----------------|-----------------------------|----------------------------| | 计算复杂度 | 较低(基于秩次差) | 较高(需遍历所有数据对) | | 统计功效 | 大样本更敏感 | 小样本更稳定 | | 适用场景 | 强单调趋势的大数据 | 小样本或重复数据 | | 结果解释 | 基于秩次差的Pearson相关系数 | 基于一致性的概率差异 | --- #### 5. 线性依赖中的应用 两者均可捕捉**单调线性关系**(如$y = e^x$),但无法检测单调关系(如抛物线关系)。实际应用时需注意: - 若变量关系为线性,Pearson效率更高[^1]。 - 若数据存在离群值或分布未知,优先选择秩相关系数[^4]。 --- #### 6. 示例代码(Python) ```python import pandas as pd # 计算Spearman's RhoKendall's Tau df = pd.DataFrame({'X': [1, 2, 3, 4], 'Y': [2, 4, 1, 5]}) spearman = df.corr(method='spearman') # Spearman相关系数 kendall = df.corr(method='kendall') # Kendall相关系数 ``` 引用提供了具体实现方法。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值