Python:Kendall tau相关系数的计算
关于Kendall correlation coefficient的介绍可参见:
维基百科:https://en.wikipedia.org/wiki/Kendall_rank_correlation_coefficient
scipy库:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kendalltau.html
写了两个版本的代码:
import numpy as np
from scipy.stats import kendalltaudata = np.array([[0.7,0.2,0.5,0],[0.6,0.1,0.1,0],[0.8,0.2,0.3,0],[0.6,0.3,0.5,0],[0.5,0.4,0.2,1],[0.4,0.5,0.3,1],[0.5,0.6,0.3,1],[0.4,0.5,0.1,1],[0.2,0.9,0.4,2],[0.2,1,0.6,2],[0.2,0.8,0.5,2],[0.1,1,0.1,2]])Lens =len(data)
count = 0
for i in range(Lens-1):for j in range(i+1,Lens):count = count + np.sign(data[i][0] - data[j][0]) * np.sign(data[i][2] - data[j][2])print('-----')
kendallCorrelation = count/((Lens*(Lens-1))/2)
kendallCorrelation_1,p_value = kendalltau(data[:,0],data[:,2])print(kendallCorrelation)
print(kendallCorrelation_1)
from scipy.stats import kendalltau
import numpy as np
a = [1,2,3,4,5,6,7,8,9,10]
b = [4,7,2,10,3,6,8,1,5,9]
# a = [12,2,1,12,2]
# b = [1,4,7,1,0]
Lens = len(a)
count = 0
number = 0
for i in range(Lens-1):for j in range(i+1,Lens):count = count + np.sign(a[i] - a[j]) * np.sign(b[i] - b[j])number += 1Kendallta1 = count/(Lens*(Lens-1)/2)
Kendallta2,p_value = kendalltau(a,b)
print(number)
print(count)
print(Kendallta1)
print(Kendallta2)
结果为啥算出来不一样呢?【原因:自己写的是1938年的tau系数,scipy库里面的1945年版本的tau】
下面是1945年版本的代码:
from scipy.stats import kendalltau
import numpy as np
a = [1,1,2,2,5,5,8,8,9,10]
b = [2,7,2,3,3,6,8,4,5,5]
# a = [12,2,1,12,2]
# b = [1,4,7,1,0]
Lens = len(a)ties_onlyin_x = 0
ties_onlyin_y = 0
con_pair = 0
dis_pair = 0
for i in range(Lens-1):for j in range(i+1,Lens):test_tying_x = np.sign(a[i] - a[j])test_tying_y = np.sign(b[i] - b[j])panduan =test_tying_x * test_tying_yif panduan == 1:con_pair +=1elif panduan == -1:dis_pair +=1if test_tying_y ==0 and test_tying_x != 0:ties_onlyin_y += 1elif test_tying_x == 0 and test_tying_y !=0:ties_onlyin_x += 1Kendallta1 = (con_pair - dis_pair)/np.sqrt((con_pair + dis_pair + ties_onlyin_x)*(dis_pair +con_pair + ties_onlyin_y))
Kendallta2,p_value = kendalltau(a,b)print(Kendallta1)
print(Kendallta2)
跑出来结果是一样的:
0.33737388489831593
0.33737388489831593
Python:Kendall tau相关系数的计算相关推荐
- Python+pandas计算数据相关系数(person、Kendall、spearman)
pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数.Kendall Tau相关系数和spearman秩相 ...
- Python+pandas计算数据相关系数
本文主要演示pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数.Kendall Tau相关系数和spea ...
- python皮尔森相关系数_Python计算皮尔逊 pearson相关系数
pearson相关系数:用于判断数据是否线性相关的方法. 注意:不线性相关并不代表不相关,因为可能是非线性相关. Python计算pearson相关系数: 1. 使用numpy计算(corrcoef) ...
- Python数据分析学习笔记:计算相关系数
Python数据分析学习笔记:计算相关系数 1.相关系数概念 相关系数,或称线性相关系数.皮氏积矩相关系数(Pearson product-moment correlation coefficient ...
- 三大统计相关系数:Pearson、Spearman秩相关系数、kendall等级相关系数
统计相关系数简介 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度. 如果有两个变量:X.Y,最终计算出的相 ...
- Pearson、Spearman秩相关系数、kendall等级相关系数
p>统计相关系数简介 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度. 如果有两个变量:X.Y,最终 ...
- 三大相关系数:Pearson、Spearman秩相关系数、kendall等级相关系数的联系与区别
三大统计相关系数:Pearson.Spearman秩相关系数.kendall等级相关系数 统计相关系数简介 Pearson(皮尔逊)相关系数 1.简介 2.适用范围 3.使用方法 Spearman R ...
- Kendall tau distance理解与分析
简介 Kendall tau distance这个概念在平时如果不是专门接触到相关工作的话会显得比较陌生.它主要是一个用来比较两个向量之间相似度的概念.在一些数据分析和搜索引擎的结果相似度rankin ...
- python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析
自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...
最新文章
- python语法手册-《Python 手册》pdf版电子书免费下载
- python实现:旋转矩阵转换为四元数
- python下划线变量的含义
- C语言二叉树的逆向有序遍历(附完整源码)
- 这是一个无效的源路径
- C++实现邻接表存储的图及bfs遍历
- PCL Lesson1 :PCL库PCLVisualizer的简单使用
- 【软件工程导论】可行性研究
- 标志寄存器02 - 零基础入门学习汇编语言55
- php实现mpg自动提取音轨,视频如何导出音轨 怎么将双音轨mpg提取其中一个音轨保存...
- 网路岗 - Cisco 交换机端口镜像配置图解
- Windows server 2012 R2 无法安装vc2015
- msm8953 单独编译bootloader、kernel和system,以及采用adb fastboot下载镜像的方法
- 美国大学计算机科学与物理,美国大学物理专业浅谈
- 机器学习备忘录 | 二分类模型常用评价指标汇总
- 电脑qq聊天记录迁移--备份与恢复
- 零基础想学大数据?别急!先搞清这一点
- win10系统每天凌晨3点左右,自动关机重启
- Win10 安装 UG10.0 UG8.5教程 --(及安装错误问题解决)--NX 8.5 NX 10.0 安装教程
- 两例司法实践撕开了一个口子,区块链应用落地会加速吗?