pearsonr相关系数的定义和传统的相关系数一模一样,python中的代码也是很简单
import numpy as np
>>> from scipy import stats
>>> x, y = [1, 2, 3, 4, 5, 6, 7], [10, 9, 2.5, 6, 4, 3, 2]
>>> res = stats.pearsonr(x, y)
>>> res
PearsonRResult(statistic=-0.828503883588428, pvalue=0.021280260007523286)
输入x矩阵,y矩阵,返回的结果包括相关系数和显著性P值,P值用来衡量是否具有显著相关性,这个案例中相关系数很高(虽然是负数),P小于0.05就说明显著负相关。
Spearman 秩阶相关系数简单来说,personr相关系数是研究两个原始数据之间的相关性,Spearman 不是研究原始数据之间的相关性,而是基于两个变量的秩次来研究。说人话就是,比如研究血红蛋白含量与贫血的相关性,血红蛋白是连续的数值,比如100,99,98.5这些含量,但是贫血特征是不连续的,被分为阴性贫血,严重贫血,一般贫血这些概念。因此一个变量连续,一个变量离散,就需要将这两者都进行编秩,然后使用personr相关系数进行计算
import numpy as np
>>> # total collagen (mg/g dry weight of liver)
>>> x = np.array([7.1, 7.1, 7.2, 8.3, 9.4, 10.5, 11.4])
>>> # free proline (μ mole/g dry weight of liver)
>>> y = np.array([2.8, 2.9, 2.8, 2.6, 3.5, 4.6, 5.0])
>>> from scipy import stats
>>> res = stats.spearmanr(x, y)
>>> res.statistic
0.7000000000000001
代码和personr几乎一样,非常简单
kendalltau一致性检验具体来说,kendalltau不应该算是相关系数了,而是所谓的一致性,也就是A增加,B也增加,这叫一致性,至于A增加了多少,B增加的是多还是少都不管他的事情了。
import numpy as np
>>> # total collagen (mg/g dry weight of liver)
>>> x = np.array([7.1, 7.1, 7.2, 8.3, 9.4, 10.5, 11.4])
>>> # free proline (μ mole/g dry weight of liver)
>>> y = np.array([2.8, 2.9, 2.8, 2.6, 3.5, 4.6, 5.0])
>>> from scipy import stats
>>> res = stats.kendalltau(x, y)
>>> res.statistic
0.5499999999999999