利用Python实现皮尔逊相关系数和斯皮尔曼相关系数计算
时间: 2024-12-31 16:42:49 浏览: 143
在Python中,你可以使用不同的库来计算皮尔逊相关系数。这里有几种方法:
**方法1:直接按照公式计算**
```python
import numpy as np
x = np.array([1, 3, 5])
y = np.array([1, 3, 4])
# 计算皮尔逊相关系数
n = len(x)
sum_xy = np.sum(x * y)
sum_x = np.sum(x)
sum_y = np.sum(y)
sum_x2 = np.sum(x ** 2)
sum_y2 = np.sum(y ** 2)
pc = (n * sum_xy - sum_x * sum_y) / np.sqrt((n * sum_x2 - sum_x * sum_x) * (n * sum_y2 - sum_y * sum_y))
print("皮尔逊相关系数:", pc)
```
**方法2:使用`scipy.stats.pearsonr()`函数**
```python
from scipy.stats import pearsonr
x = np.array([1, 3, 5])
y = np.array([1, 3, 4])
pc, p_value = pearsonr(x, y)
print("皮尔逊相关系数:", pc)
print("显著性水平(双尾P值):", p_value)
```
对于斯皮尔曼等级相关系数,Python的`scipy.stats.spearmanr()`函数提供了方便的计算方式,它是对数值数据进行秩次转换后的皮尔逊相关系数:
```python
from scipy.stats import spearmanr
# 对于非数值数据,可能需要先进行秩次转换
x_ranks = pd.DataFrame(x).rank()
y_ranks = pd.DataFrame(y).rank()
spc, sp_p_value = spearmanr(x_ranks, y_ranks)
print("斯皮尔曼等级相关系数:", spc)
print("显著性水平(双尾P值):", sp_p_value)
```
这里假设你已经安装了`pandas`库。
阅读全文
相关推荐


















