Kendall's tau相似程度指标
两个序列,例如S1 = {a, b, c, d}、 S2 = {a, c, b,
d},如何度量它们的相似程度,有很重要的应用背景,在投票决策、表达式搜索、top-k比较、乃至搜索引擎优化等问题上有广泛的应用ref1
,ref2
。Kendall's
tau则是其中一种度量指标。由同样元素组成,只是元素的排列顺序不同的两个序列,如果其顺序完全一致,则Kendall's
tau值为1,如果完全反序其Kendall's tau值为0。
Kendall's tau具体的计算方式为:
1 - 2.0*reversions / (n * (n -1)),
其中n为序列本身的长度(两个序列的长度相同),reversions为逆序对的个数。
逆序对的计算方法是: 对于两个给定的序列S1 = {a, b, c, d}和S2 = {a, c, b,
d}。分别找出两个序列的二元约束集。在这个例子中S1的所有二元约束集为{(a,b), (a,c), (a,d), (b,c), (b,d),
(c,d)},S2的所有二元约束集为{(a,c), (a,b), (a,d), (c,b), (c,d),
(b,d)}。比较两个二元约束集,其中不同的二元约束是(b,c)和(c,b),即逆序对的个数为1。
代入上面的计算公式可以得到这两个序列的Kendall's tau指标为:
1 - 2. * 1 / (4 * 3) = 2. / 3 = 0.833
输入:
两个由同样元素组成的序列,每行一个。序列长度一致,只是元素的排列顺序不同,里面的元素不重复。
输出:
对应的Kendall's tau指标值,保留到小数点后3位("%.3f\n")
样例输入:
a,b,c,d↵
a,c,b,d↵
样例输出:
0.833↵
import java.util.Scanner;
public class Main {
public static int fun(String[] str3,String[] str4){
int num = str3.length;
String[] str5 = new String[(num-1)*num/2];//拆分后放置数组
String[] str6 = new String[(num-1)*num/2];
for(int i = 0,k=0; i < num-1; i++){//找出二元约束集
for(int j =i+1;j<num;j++){
str5[k] = str3[i]+str3[j];
str6[k++] = str4[i]+str4[j];
}
}
int nReverse = 0;
for(int i=0;i<str5.length;i++){//查找两个字符串数组中相同的二元约束集的个数
for(int j=0;j<str6.length;j++){
if(str5[i].equals(str6[j])){
nReverse++;
}
}
}
return (str5.length - nReverse);//返回不同的二元约束集的个数
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
String str2 = scanner.nextLine();
String[] str3 = str1.split(",");
String[] str4 = str2.split(",");
int strlen = str3.length;
int nr = fun(str3,str4);
double d = 1-2.0*nr/(strlen*(strlen-1));
System.out.printf("%.3f\n",d);
}
}
分享到:
相关推荐
Kendall's tau 算法是一种用于衡量两个排序之间的关联程度或一致性,特别是在站点排序问题中,它能帮助评估不同排序方法的相似性。在选择最佳排序算法时,Kendall's tau 提供了一个量化指标,使得我们可以比较各种...
To calculate Kendall s Tau for a time serie.
Mann-Kendall Tau非参数函数计算表示等距数据的趋势强度和方向的系数。 虽然您不需要统计工具箱来计算 Tau,但您确实需要它来测试显着性。 此函数将计算Tau-a和Tau-b,重要性(以及各种支持统计数据),以及非参数...
MATLAB泰森斜率+MK趋势分析函数代码 Mann-Kendall Tau (aka Tau-b) with Sen's Method (enhanced)
具有和不具有序列依赖性的数据的季节性 Kendall 趋势检验。 Tau-b 季节性:考虑关系(和多次观察,除了数据在子函数中预处理,每个给定季节的多次观察使用中位数进行平均)。 Tau-a 季节性:不将每个季节的多次...
R代码,用于计算具有未经审查或接受审查的双变量连续结果的条件肯德尔tau 刘向宇,井静宁和李若莎开发的代码。 Liu X,Ning,J,Cheng,Y,Huang,X,Li,R.一种用于评估条件关联和条件一致性的灵活而健壮的方法。...
Kendall's W分析方法是一种非参数统计方法,由Kendall在1938年提出,最初是用于评估多组等级数据的一致性,即多个人对同一组事物按照等级评定的结果是否具有相似性。该方法逐渐被应用到医学、心理学、社会学等多个...
除了Kendall秩相关系数,该软件可能还支持其他趋势分析方法,如Mann-Kendall检验、Sen's斜率估计等,以提供更全面的分析手段。同时,用户可以根据实际需求进行参数调整,比如选择不同的显著性水平、设置时间窗口等,...
指标: 退出率任务吸收率资格分数任务持续时间说明尺寸评价者间的可靠性数据: 进行两次实验来识别导致软件故障的代码。 实验: E1:5405个任务,777个程序员,10个流行的开源项目中的10个实际失败E2:2580个任务,...
### Mann-Kendall检验知识点详解 #### 一、Mann-Kendall检验概述 Mann-Kendall检验是一种非参数统计方法,用于检测时间序列数据中的趋势。它被广泛应用于环境科学、气象学、水文学等领域,以评估气候变化、水质...
**Mann-Kendall趋势分析**是一种非参数统计方法,常用于检测时间序列中的趋势变化。这种方法不依赖于数据的特定分布,因此适用于各种类型的数据,包括非正态分布、存在异常值或缺失值的情况。在环境科学、气候变化...
1. **Kendall相关系数**:Kendall秩相关系数,也称为Kendall's Tau,是一种非参数统计方法,用来衡量两个变量之间排序关系的强度和方向。它不依赖于变量的具体数值分布,而是基于数据的排列顺序。Kendall相关系数的...
这种方法的优势在于它不依赖于数据的特定分布,因此对异常值有较好的容忍度,并且能够处理不等间距的数据点。下面将详细阐述M-K检验的原理、应用以及提供的两个MATLAB程序的作用。 **Mann-Kendall检验的原理** M-K...
在Matlab中,这样的程序通常会包含读取数据、预处理(如处理缺失值)、计算秩、执行Mann-Kendall检验、计算S统计量和Z统计量以及确定趋势显著性等步骤。S统计量是基于数据秩的,而Z统计量则是将S标准化,用于确定...
Kendall 相关系数,也称为 Kendall τ 系数,衡量的是两个评判者(或“法官”)对同一组对象(或“候选人”)排序的相似程度。本话题将深入探讨 Kendall 一致性系数的概念、计算方法以及在 MATLAB 中的应用。 首先...
Mann-Kendall趋势检验(Mann-Kendall Trend Test)是一种非参数统计方法,用于检测时间序列数据是否存在显著的线性趋势。这种方法不需要数据遵循特定的分布,因此在环境科学、气象学、水文学等领域广泛应用。Matlab...
4. **S值计算**:S值是Mann-Kendall方法的核心,它是根据秩差计算得到的。对于排序后的数据,计算每一对点的秩差,并累加正秩差与负秩差。如果S值为正,可能表示上升趋势;为负,可能表示下降趋势;若接近零,则表明...
3. **计算统计量**:基于秩次差分的结果,计算 Mann-Kendall 统计量 \( S \) 和标准化统计量 \( Z \)。 4. **假设检验**:根据计算出的统计量值与理论分布比较,判断时间序列是否存在显著的趋势。 #### MK检验与...