# 使用Python计算非参数的秩相关

AiTechYun

• 秩相关方法的工作原理以及方法是否适用。
• 如何在Python中计算和解释Spearman的秩相关系数。
• 如何在Python中计算和解释Kendall的秩相关系数。

1. 秩相关
2. 测试数据集
3. Spearman秩相关
4. Kendall秩相关

### 秩相关

• Spearman秩相关。
• Kendall秩相关。
• Goodman和Kruskal秩相关。
• Somers秩相关。

### 测试数据集

```# prepare data
data1 = rand(1000) * 20
data2 = data1 + (rand(1000) * 10)```

```# generate related variables
from numpy.random import rand
from numpy.random import seed
from matplotlib import pyplot
# seed random number generator
seed(1)
# prepare data
data1 = rand(1000) * 20
data2 = data1 + (rand(1000) * 10)
# plot
pyplot.scatter(data1, data2)
pyplot.show()```

### Spearman秩相关

Spearman秩相关以Charles Spearman命名。

Spearman等级顺序相关是一种旨在度量序数测量尺度上两个变量之间关系的统计过程。

- 第124页，Nonparametric Statistics for Non-Statisticians: A Step-by-Step Approach，2009年。

Spearman秩相关的直觉是，它使用秩值而不是实际值来计算Pearson相关。Pearson相关性由两个变量中每个变量的方差或分布的标准化的协方差计算。

Spearman的秩相关可以在Python中使用SciPy函数spearmanr（）计算。

```# calculate spearman's correlation
coef, p = spearmanr(data1, data2)```

```# calculate the spearman's correlation between two variables
from numpy.random import rand
from numpy.random import seed
from scipy.stats import spearmanr
# seed random number generator
seed(1)
# prepare data
data1 = rand(1000) * 20
data2 = data1 + (rand(1000) * 10)
# calculate spearman's correlation
coef, p = spearmanr(data1, data2)
print('Spearmans correlation coefficient: %.3f' % coef)
# interpret the significance
alpha = 0.05
if p > alpha:
print('Samples are uncorrelated (fail to reject H0) p=%.3f' % p)
else:
print('Samples are correlated (reject H0) p=%.3f' % p)```

```Spearmans correlation coefficient: 0.900
Samples are correlated (reject H0) p=0.000```

### Kendall秩相关

Kendall秩相关以Maurice Kendall命名。

```# calculate kendall's correlation
coef, p = kendalltau(data1, data2)```

```# calculate the kendall's correlation between two variables
from numpy.random import rand
from numpy.random import seed
from scipy.stats import kendalltau
# seed random number generator
seed(1)
# prepare data
data1 = rand(1000) * 20
data2 = data1 + (rand(1000) * 10)
# calculate kendall's correlation
coef, p = kendalltau(data1, data2)
print('Kendall correlation coefficient: %.3f' % coef)
# interpret the significance
alpha = 0.05
if p > alpha:
print('Samples are uncorrelated (fail to reject H0) p=%.3f' % p)
else:
print('Samples are correlated (reject H0) p=%.3f' % p)```

```Kendall correlation coefficient: 0.709
Samples are correlated (reject H0) p=0.000```

### 书

• Nonparametric Statistics for Non-Statisticians: A Step-by-Step Approach, 2009.
• Applied Nonparametric Statistical Methods, Fourth Edition, 2007.
• Rank Correlation Methods, 1990.

### API

• scipy.stats.spearmanr（）API :https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.spearmanr.html
• scipy.stats.kendalltau（）API：https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kendalltau.html

### 维基百科

• Nonparametric statistics
• Rank correlation
• Spearman’s rank correlation coefficient
• Kendall rank correlation coefficient
• Goodman and Kruskal’s gamma on Wikipedia
• Somers’ D

### 总结

• 秩相关方法的工作原理以及方法是否适用。
• 如何在Python中计算和解释Spearman的秩相关系数。
• 如何在Python中计算和解释Kendall的秩相关系数。

1797 篇文章92 人订阅

0 条评论

## 相关文章

498110

14730

82650

33740

37180

40780

### 深度学习文本分类方法综述（代码）

【导读】本文是数据科学家Ahmed BESBES的一篇博文，主要内容是探索不同NLP模型在文本分类的性能，围绕着文本分类任务，构建当前主流的七种不同模型：用词n...

1.4K30

### 【学术】一篇关于机器学习中的稀疏矩阵的介绍

AiTechYun 编辑：Yining 在矩阵中，如果数值为0的元素数目远远多于非0元素的数目，并且非0元素分布无规律时，则称该矩阵为稀疏矩阵；与之相反，若非0...

72140

33050

46490