1. 协方差与相关系数的概念
1.1 介绍
协方差和相关系数是用于衡量两个变量之间关系的统计指标。它们描述了变量的线性关联程度,帮助我们了解它们是如何一起变化的。
1.2 原理
- 协方差: 衡量两个变量是否倾向于一起高、一起低,或者一个高时另一个低。它可以是正值、负值或接近 0。
![图片[1]-五、多元数据的数据特征-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/10/image-215.png)
- 这一步相当于把协方差除以两个变量各自的标准差,去掉单位影响。也正因为如此,相关系数可以用来比较不同量纲变量之间的线性关系强弱。
1.3 重点和注意事项
- 重点: 协方差和相关系数提供了关于两个变量关联程度的信息,有助于理解它们的联动性。
- 注意事项:
- 协方差的单位是两个变量单位的乘积,数值大小不容易直接比较。
- 相关系数是无量纲的,绝对值越接近 1,线性关系越强。
- 相关不等于因果。两个变量一起变化,不代表一个变量一定导致另一个变量变化。
2. Python实现多元数据分析
考虑一个案例:某班级学生的数学、物理和化学成绩数据。
我们将计算协方差矩阵、相关矩阵,并进行主成分分析。
数据:
数学成绩:[75, 82, 90, 65, 88, 78, 94, 70]
物理成绩:[68, 80, 85, 60, 75, 92, 88, 72]
化学成绩:[78, 92, 85, 75, 80, 85, 90, 88]
![图片[2]-五、多元数据的数据特征-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/10/image-216.png)
Python代码:
import numpy as np
import pandas as pd
from sklearn.decomposition import PCA
import seaborn as sns
import matplotlib.pyplot as plt
# 学生成绩数据
data = {
'Math': [75, 82, 90, 65, 88, 78, 94, 70],
'Physics': [68, 80, 85, 60, 75, 92, 88, 72],
'Chemistry': [78, 92, 85, 75, 80, 85, 90, 88]
}
df = pd.DataFrame(data)
# 计算协方差矩阵
cov_matrix = df.cov()
# 计算相关矩阵
cor_matrix = df.corr()
# 主成分分析。这里三个科目分数量纲一致,可以直接做 PCA;
# 如果变量单位差异很大,应先标准化。
pca = PCA()
pca_result = pca.fit_transform(df)
# 绘制相关矩阵的热力图
sns.heatmap(cor_matrix, annot=True, cmap='coolwarm', fmt='.2f', linewidths=0.5)
plt.title('Correlation Matrix')
plt.show()
# 输出协方差矩阵和相关矩阵
print("Covariance Matrix:")
print(cov_matrix)
print("\nCorrelation Matrix:")
print(cor_matrix)
# 输出主成分分析结果
print("\nPrincipal Components:")
print(pd.DataFrame(pca.components_, columns=df.columns))
print("\nExplained variance ratio:")
print(pca.explained_variance_ratio_)
代码计算了学生成绩数据的协方差矩阵和相关矩阵,并进行了主成分分析。
热力图展示了变量之间的相关关系,而主成分分析提供了新的主成分变量。
![图片[3]-五、多元数据的数据特征-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/10/image-217.png)
结果解释
- 协方差矩阵和相关矩阵: 提供了变量之间关系的信息,协方差矩阵更侧重于变量的共变性,相关矩阵更侧重于标准化的关系。
- 主成分分析: 提供了原始变量的线性组合,用于降维和理解数据的结构。
explained_variance_ratio_告诉我们每个主成分解释了多少比例的信息。
通过这些分析,我们可以更全面地了解学生的多个科目成绩之间的关系,并找到潜在的结构。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END













请登录后查看评论内容