Kendall Rank(肯德尔等级)相关系数

肯德尔相关系数是一种衡量两个随机变量相关性的统计量,取值范围在-1到1之间。该文介绍了肯德尔相关系数的定义、计算公式以及适用范围,并提供了MATLAB实现的示例。
部署运行你感兴趣的模型镜像


1、简介
在统计学中,肯德尔相关系数是以Maurice Kendall命名的,并经常用希腊字母τ(tau)表示其值。肯德尔相关系数是一个用来测量两个随机变量相关性的统计值。一个肯德尔检验是一个无参数假设检验,它使用计算而得的相关系数去检验两个随机变量的统计依赖性。肯德尔相关系数的取值范围在-1到1之间,当τ为1时,表示两个随机变量拥有一致的等级相关性;当τ为-1时,表示两个随机变量拥有完全相反的等级相关性;当τ为0时,表示两个随机变量是相互独立的。

 

假设两个随机变量分别为X、Y(也可以看做两个集合),它们的元素个数均为N,两个随即变量取的第i(1<=i<=N)个值分别用Xi、Yi表示。X与Y中的对应元素组成一个元素对集合XY,其包含的元素为(Xi, Yi)(1<=i<=N)。当集合XY中任意两个元素(Xi, Yi)与(Xj, Yj)的排行相同时(也就是说当出现情况1或2时;情况1:Xi>Xj且Yi>Yj,情况2:Xi<Xj且Yi<Yj),这两个元素就被认为是一致的。当出现情况3或4时(情况3:Xi>Xj且Yi<Yj,情况4:Xi<Xj且Yi>Yj),这两个元素被认为是不一致的。当出现情况5或6时(情况5:Xi=Xj,情况6:Yi=Yj),这两个元素既不是一致的也不是不一致的。

 

这里有三个公式计算肯德尔相关系数的值

 

公式一:

 肯德尔相关系数公式1

其中C表示XY中拥有一致性的元素对数(两个元素为一对);D表示XY中拥有不一致性的元素对数。

注意:这一公式仅适用于集合X与Y中均不存在相同元素的情况(集合中各个元素唯一)。

 

公式二:

 肯德尔相关系数公式2

注意:这一公式适用于集合X或Y中存在相同元素的情况(当然,如果X或Y中均不存在相同的元素时,公式二便等同于公式一)。

其中C、D与公式一中相同;

肯德尔相关系数公式2-子公式1肯德尔相关系数公式2-子公式2肯德尔相关系数公式2-子公式3

N1、N2分别是针对集合X、Y计算的,现在以计算N1为例,给出N1的由来(N2的计算可以类推):

将X中的相同元素分别组合成小集合,s表示集合X中拥有的小集合数(例如X包含元素:1 2 3 4 3 3 2,那么这里得到的s则为2,因为只有2、3有相同元素),Ui表示第i个小集合所包含的元素数。N2在集合Y的基础上计算而得。

 

公式三:

 肯德尔相关系数公式3

注意:这一公式中没有再考虑集合X、或Y中存在相同元素给最后的统计值带来的影响。公式三的这一计算形式仅适用于用表格表示的随机变量X、Y之间相关系数的计算(下面将会介绍)。

参数M稍后会做介绍。

 

以上都是围绕用集合表示的随机变量而计算肯德尔相关系数的,下面所讲的则是围绕用表格表示的随机变量而计算肯德尔相关系数的。

 

通常人们会将两个随机变量的取值制作成一个表格,例如有10个样本,对每个样本进行两项指标测试X、Y(指标X、Y的取值均为1到3)。根据样本的X、Y指标取值,得到以下二维表格(表1):

 肯德尔相关系数表1

由表1可以得到X及Y的可以以集合的形式表示为:

X={1, 1, 2, 2, 2, 2, 2, 3, 3, 3};

Y={1, 2, 1, 1, 2, 2, 3, 2, 3, 3};

得到X、Y的集合形式后就可以使用以上的公式一或公式二计算X、Y的肯德尔相关系数了(注意公式一、二的适用条件)。

当然如果给定X、Y的集合形式,那么也是很容易得到它们的表格形式的。

 

这里需要注意的是:公式二也可以用来计算表格形式表示的二维变量的肯德尔相关系数,不过它一般用来计算由正方形表格表示的二维变量的肯德尔相关系数,公式三则只是用来计算由长方形表格表示的二维变量的Kendall相关系数。这里给出公式三中字母M的含义,M表示长方形表格中行数与列数中较小的一个。表1的行数及列数均为三。

 

2、适用范围 
肯德尔相关系数与斯皮尔曼相关系数对数据条件的要求相同,可参见统计相关系数(2)--Spearman Rank(斯皮尔曼等级)相关系数及MATLAB实现中介绍的斯皮尔曼相关系数对数据条件的要求。

 

3、Matlab实现
源程序一:

肯德尔相关系数的Matlab实现(依据公式二得到)

 

function coeff = myKendall(X , Y)
% 本函数用于实现肯德尔等级相关系数的计算操作
%
% 输入:
%   X:输入的数值序列
%   Y:输入的数值序列
%
% 输出:
%   coeff:两个输入数值序列X,Y的相关系数


if length(X) ~= length(Y)
    error('两个数值数列的维数不相等');
    return;
end

%将X变为行序列(如果X已经是行序列则不作任何变化)
if size(X , 1) ~= 1
    X = X';
end
%将Y变为行序列(如果Y已经是行序列则不作任何变化)
if size(Y , 1) ~= 1
    Y = Y';
end

N = length(X); %得到序列的长度
XY = [X ; Y]; %得到合并序列
C = 0; %一致性的数组对数
D = 0; %不一致性的数组对数
N1 = 0; %集合X中相同元素总的组合对数
N2 = 0; %集合Y中相同元素总的组合对数
N3 = 0; %合并序列XY的总对数
XPair = ones(1 , N); %集合X中由相同元素组成的各个子集的元素数
YPair = ones(1 , N); %集合Y中由相同元素组成的各个子集的元素数
cont = 0; %用于计数

%计算C与D
for i = 1 : N - 1
    for j = i + 1 : N
        if abs(sum(XY(: , i) ~= XY(: , j))) == 2 
            switch abs(sum(XY(: , i) > XY(: , j)))
                case 0
                    C = C + 1;
                case 1
                    D = D + 1;
                case 2
                    C = C + 1;
            end
        end
    end
end

%计算XPair中各个元素的值
while length(X) ~= 0
    cont = cont + 1;
    index = find(X == X(1));
    XPair(cont) = length(index);
    X(index) = [];
end
%计算YPair中各个元素的值
cont = 0;
while length(Y) ~= 0
    cont = cont + 1;
    index = find(Y == Y(1));
    YPair(cont) = length(index);
    Y(index) = [];
end

%计算N1、N2及N3的值
N1 = sum(0.5 * (XPair .* (XPair - 1)));
N2 = sum(0.5 * (YPair .* (YPair - 1)));
N3 = 0.5 * N * (N - 1);

coeff = (C - D) / sqrt((N3 - N1) * (N3 - N2));

end %函数myKendall结束

  

 

源程序二:

使用Matlab中已有的函数计算肯德尔相关系数

 

coeff = corr(X , Y , 'type' , 'Kendall');

  

注意:使用Matlab自带函数计算肯德尔相关系数时,需要保证X、Y均为列向量;Matlab自带的函数是通过公式二计算序列的肯德尔相关系数的。

 

这里还有另外一种不是计算肯德尔相关系数的公式(仅适用于集合X与Y中均不存在相同元素的情况,实际上其与公式一等价),可见参考文献(3)。

 

4、参考内容
(1)、http://en.wikipedia.org/wiki/Kendall_tau_rank_correlation_coefficient

(2)、http://www.unesco.org/webworld/idams/advguide/Chapt4_2.htm

(3)、http://www.wikidoc.org/index.php/Kendall_tau_rank_correlation_coefficient
---------------------
作者:wsywl
来源:CSDN
原文:https://blog.csdn.net/wsywl/article/details/5889419
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/sddai/p/10323561.html

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>好的,我现在需要帮用户解答如何使用斯皮尔曼秩相关系数肯德尔等级相关系数来表示8个变量间的依赖关系,以及系数数值的意义。首先,我得回忆这两种相关系数的基本概念和应用场景。 斯皮尔曼秩相关系数,我记得它是基于变量的秩次来计算相关性的,属于非参数方法。它不要求数据服从正态分布,适用于等级数据或非线性关系的情况。而肯德尔等级相关系数则是通过评估两个变量对应样本对的协同性来衡量相关性,同样是非参数的,对异常值不敏感。用户提到有8个变量,可能需要构建一个相关系数矩阵来展示两两之间的相关性。 接下来,我需要确认如何具体应用这两种方法来分析8个变量间的依赖关系。对于斯皮尔曼,通常的做法是计算每两个变量之间的秩相关系数,形成一个8x8的矩阵。同样,肯德尔系数也是类似的过程,计算每对变量的τ值。用户可能需要使用统计软件如Python的scipy或R语言中的相关包来实现这些计算。 然后,关于系数大小的意义,斯皮尔曼和肯德尔的取值范围都是-1到1。正值表示正相关,负值负相关,绝对值越大相关性越强。但具体的数值对应的强度描述可能需要参考一般标准,比如0.1为弱相关,0.3中等,0.5强相关等,不过不同领域可能有不同解释,需要提醒用户注意上下文。 用户可能还想知道这两种方法的选择依据。根据引用内容,斯皮尔曼和肯德尔对数据条件要求相同,都是非参数的,适用于非线性、非正态或存在异常值的情况。而皮尔逊适用于线性关系且数据满足正态分布的情况。需要指出它们的区别,帮助用户理解为何选择这两种方法。 另外,用户的问题可能隐含着如何解释多个变量间的复杂关系,可能需要建议使用热力图来可视化相关系数矩阵,这样更直观。同时,要强调相关系数不代表因果关系,避免误解。 最后,确保回答结构清晰,分步骤说明方法,并解释系数意义。可能需要检查引用内容,确保准确引用,比如引用[1]和[2]提到斯皮尔曼和肯德尔的特点,引用[4]强调相关不等于因果。</think>### 斯皮尔曼秩与肯德尔等级相关系数的应用方法 #### **一、表示多变量依赖关系的方法** 1. **斯皮尔曼秩相关系数(Spearman’s Rank Correlation Coefficient)** - **计算方式**:对每个变量的原始数据分别转换为秩次(从小到大排列后的序号),计算每两个变量秩次之间的皮尔逊相关系数,公式为: $$ \rho = \frac{\sum (R_i - \bar{R})(S_i - \bar{S})}{\sqrt{\sum (R_i - \bar{R})^2 \sum (S_i - \bar{S})^2}} $$ 其中$R_i$和$S_i$为变量$x$和$y$的秩次[^3]。 - **多变量分析**:对8个变量两两计算斯皮尔曼相关系数,形成$8 \times 8$相关系数矩阵,反映变量间的单调关系强度。 2. **肯德尔等级相关系数Kendall’s Tau)** - **计算方式**:通过比较变量对的协同性(concordant pairs)和非协同性(discordant pairs)的比例,公式为: $$ \tau = \frac{2(\text{协同对数} - \text{非协同对数})}{n(n-1)} $$ 其中$n$为样本量。 - **多变量分析**:同样构建$8 \times 8$相关系数矩阵,衡量变量间的序数关联性[^2]。 --- #### **二、系数数值的含义** | 相关系数范围 | 斯皮尔曼/肯德尔相关性强度 | 意义 | |--------------------|--------------------------|----------------------------------------------------------------------| | $0.8 \leq |\rho| \leq 1.0$ | 极强相关 | 变量间存在显著单调关系(正或负) | | $0.6 \leq |\rho| < 0.8$ | 强相关 | 变量变化方向高度一致 | | $0.4 \leq |\rho| < 0.6$ | 中等相关 | 变量存在可观测的关联性 | | $0.2 \leq |\rho| < 0.4$ | 弱相关 | 关联性较弱,需结合其他分析验证 | | $|\rho| < 0.2$ | 无相关或极弱相关 | 变量间无明显单调关系(但可能存在非线性关系)[^4] | --- #### **三、关键区别与适用场景** 1. **斯皮尔曼系数特点**: - 更关注整体秩次一致性,适合检测单调关系(线性或非线性)。 - 对异常值敏感度低于皮尔逊系数,但高于肯德尔系数[^1]。 2. **肯德尔系数特点**: - 基于样本对的协同性,更适合小样本或存在较多重复值的数据。 - 计算复杂度较高,但对数据分布无要求,稳健性更强。 --- #### **四、操作建议** 1. **数据预处理**:若数据中存在异常值或非正态分布,优先选择这两种方法。 2. **结果可视化**:用热力图展示相关系数矩阵,例如: ```python import seaborn as sns corr_matrix = df.corr(method='spearman') # 或 method='kendall' sns.heatmap(corr_matrix, annot=True) ``` 3. **解释注意点**: - 系数仅反映统计关联性,不能推断因果关系[^4]。 - 若需分析非线性依赖,可结合互信息(Mutual Information)等指标。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值