举例df 计算 pearson相关系数矩阵及P值
时间: 2024-09-30 16:13:39 浏览: 33
在Python的数据分析库pandas和统计库statsmodels中,你可以使用`pearsonr()`函数计算两个变量之间的皮尔逊相关系数,并通过`corr()`函数获取DataFrame内的所有变量之间的相关系数矩阵以及显著性水平(P值)。这里是一个例子:
```python
import pandas as pd
import numpy as np
from scipy.stats import pearsonr
import statsmodels.api as sm
# 假设我们有一个DataFrame df,其中包含两列数据 'A' 和 'B'
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [2, 4, 6, 8, 10]
})
# 计算'A'和'B'的相关系数和P值
corr_coeff, p_value = pearsonr(df['A'], df['B'])
print(f"相关系数: {corr_coeff}, P值: {p_value}")
# 计算整个DataFrame的相关系数矩阵(包括自相关)
correlation_matrix = df.corr()
print("\n相关系数矩阵:")
print(correlation_matrix)
# 如果需要显著性水平(通常默认0.05作为阈值),可以这样做:
# 使用sm.OLS()创建线性回归模型,然后获取pvalues
model = sm.OLS(df['A'], df[['B']]).fit()
p_values = model.pvalues.iloc[1] # 我们排除了对自身的一阶自相关检查
print("P值矩阵(剔除自相关):")
print(p_values)
```
注意:上面的代码假设DataFrame中至少有两个数值型变量。在实际操作中,确保数据适合进行皮尔逊相关性分析,因为该方法只适用于连续变量。
阅读全文