Python|肯德尔等级相关系数
什么是相关性检验?
两个变量之间的关联强度称为相关性检验。例如,如果我们想知道父亲和儿子的身高之间是否存在关系,可以计算相关系数来回答这个问题。
有关相关性的更多信息,请参阅此。
相关分析方法:
相关性主要有两种:
- 参数相关性 - 皮尔逊相关性(r):它测量两个变量(x 和 y)之间的线性相关性,称为参数相关性检验,因为它取决于数据的分布。
- 非参数相关 - Kendall(tau)和Spearman(rho):它们是基于秩的相关系数,被称为非参数相关。
Kendall 秩相关系数公式:
在哪里,
- 一致对:遵循属性的一对观察值 (x1, y1) 和 (x2, y2)
- x1 > x2 和 y1 > y2 或
- x1 < x2 和 y1 < y2
- Discordant Pair:遵循属性的一对观察值 (x1, y1) 和 (x2, y2)
- x1 > x2 和 y1 < y2 或
- x1 < x2 和 y1 > y2
- n:样本总数
注意: x1 = x2和y1 = y2的对不归类为一致或不一致,因此被忽略。
示例:让我们考虑下表中的两位专家对食品的排名。
Items | Expert 1 | Expert 2 |
---|---|---|
1 | 1 | 1 |
2 | 2 | 3 |
3 | 3 | 6 |
4 | 4 | 2 |
5 | 5 | 7 |
6 | 6 | 4 |
7 | 7 | 5 |
该表显示,对于 item-1,expert-1 给出 rank-1,而 Expert-2 也给出 rank-1。类似地,对于 item-2,expert-1 给出 rank-2,而 Expert-2 给出 rank-3,依此类推。
第1步:
首先,根据公式,我们要找到一致对的数量和不一致对的数量。所以看看 item-1 和 item-2 行。让专家 1, x1 = 1和x2 = 2 。与专家 2 类似, y1 = 1和y2 = 3 。所以条件x1 < x2和y1 < y2满足,我们可以说 item-1 和 item-2 行是一致的对。
同样看一下 item-2 和 item-4 行。让专家 1, x1 = 2和x2 = 4 。同样对于专家 2, y1 = 3和y2 = 2 。所以条件x1 < x2和y1 > y2满足,我们可以说 item-2 和 item-4 行是不一致的对。
像这样,通过比较每一行,您可以计算一致和不一致对的数量。完整的解决方案如下表所示。
1 | |||||||
---|---|---|---|---|---|---|---|
2 | C | ||||||
3 | C | C | |||||
4 | C | D | D | ||||
5 | C | C | C | C | |||
6 | C | C | C | D | D | ||
7 | C | C | C | C | D | D | |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
第2步:
所以从上表中,我们发现,
一致对数为:15
不一致对的数量为:6
样品/项目总数为:7
因此,通过应用肯德尔等级相关系数公式
tau = (15 – 6) / 21 = 0.42857
这个结果表明,如果它基本上很高,那么两位专家之间存在广泛的共识。否则,如果专家 1 完全不同意专家 2,您甚至可能得到负值。
kendalltau() :在Python中计算 Kendall 秩相关系数的Python函数
Syntax:
kendalltau(x, y)
- x, y: Numeric lists with the same length
代码:说明 Kendall Rank 相关性的Python程序
Python
# Import required libraries
from scipy.stats import kendalltau
# Taking values from the above example in Lists
X = [1, 2, 3, 4, 5, 6, 7]
Y = [1, 3, 6, 2, 7, 4, 5]
# Calculating Kendall Rank correlation
corr, _ = kendalltau(X, Y)
print('Kendall Rank correlation: %.5f' % corr)
# This code is contributed by Amiya Rout
输出:
Kendall Rank correlation: 0.42857