在数据分析中,相关性分析是一个非常重要的工具,它可以帮助我们理解不同变量之间的关系。本文将通过一个简单的例子,展示如何进行相关性分析,并生成相关系数表和热力图。
数据准备
本文将使用 Python 实现相关性分析,并生成上述三种图表。数据存储在路径 C:\Users\bai\Downloads\相关性分析.xlsx
中,文件包含两列数据:身高,体重,具体数据如下:
身高 | 体重 |
176 | 73 |
164 | 67 |
160 | 65 |
168 | 69 |
162 | 66 |
173 | 73.5 |
178 | 76 |
183 | 78.5 |
使用Python进行相关性分析
我们可以使用Python中的Pandas库来读取数据,并使用Matplotlib和Seaborn库来绘制图表。
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 支持中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示负号
plt.rcParams['axes.unicode_minus'] = False
# 读取数据
data = pd.read_excel(r'C:\Users\Administrator\Downloads\相关性分析.xlsx')
# 计算相关系数矩阵和 p 值矩阵
columns = data.columns
correlation_matrix = pd.DataFrame(index=columns, columns=columns) # 相关系数矩阵
p_value_matrix = pd.DataFrame(index=columns, columns=columns) # p 值矩阵
for i in range(len(columns)):
for j in range(len(columns)):
corr, p_value = pearsonr(data[columns[i]], data[columns[j]])
correlation_matrix.iloc[i, j] = corr
p_value_matrix.iloc[i, j] = p_value
# 将矩阵中的值转换为浮点数并保留 3 位小数
correlation_matrix = correlation_matrix.astype(float).round(3)
p_value_matrix = p_value_matrix.astype(float).round(3)
# 打印相关系数矩阵和 p 值矩阵
print("相关系数矩阵:")
print(correlation_matrix)
print("\np 值矩阵:")
print(p_value_matrix)
# 绘制相关系数热力图
plt.figure(figsize=(10, 8))
sns.heatmap(correlation_matrix.astype(float), annot=True, cmap='coolwarm', cbar=True)
plt.title('相关系数热力图')
plt.show()
输出结果如下:
上输出结果展示了模型检验的参数结果表,包括了相关系数、显著性 P 值。P 值呈现显著性(0.000<p<0.01),说明两变量之间存在相关性。
上图展示了热力图的形式展示了相关系数的值,越接近1,相关性越强。
注意事项
- Pearson 相关系数适用于定量数据,且要求数据满足正态分布、Spearman 相关系数是数据不满足正态分布时使用,也可用于分析有序定类变量,Kendall's tau -b 相关系数用于分析有序定类变量