整合数据分布+拟合线+置信区间+相关系数的皮尔逊相关可视化

向量数据库大模型机器学习

picture.image

背景

在数据分析中,探索特征之间的相关性是非常重要的一步,皮尔逊相关系数、散点图以及线性模型是最常用的三种方法,它们各具优势,通过将这三种方法整合到一个可视化图表中,可以帮助更全面地判断特征之间是否存在线性相关趋势

皮尔逊相关系数

  • 通过相关系数( )量化两个特征间的线性相关性,提供一个数值化的参考
  • :正相关,两个变量呈正向增长趋势
  • :负相关,变量之间呈反向关系
  • :无线性相关,说明两个特征之间线性关系不明显

散点图

  • 直观呈现两个特征之间的分布趋势,帮助发现是否存在线性模式
  • 除了线性关系,散点图还能揭示非线性关系或异常值

线性模型(拟合线及其置信区间)

  • 在每个散点图中叠加线性模型的拟合直线及其95%的置信区间,可进一步直观验证特征间的线性关系
  • 拟合线清晰展示了两特征之间的趋势方向,置信区间则为关系的可靠性提供统计学支持
  • 如果拟合线及其置信区间能很好描述数据分布,说明特征之间的线性关系较强

picture.image

通过整合皮尔逊相关系数及其显著性水平(p值)、散点图结合线性回归拟合线及置信区间、以及对角线的单变量直方图,用一个矩阵可视化全面展示数据特征间的相关性和分布趋势

代码实现

基础相关性热图绘制


          
import pandas as pd
          
import numpy as np
          
import matplotlib.pyplot as plt
          
import warnings
          
import seaborn as sns
          
warnings.filterwarnings("ignore")
          
plt.rcParams['font.family'] = 'Times New Roman'
          
plt.rcParams['axes.unicode_minus'] = False
          
df = pd.read_excel('2024-12-4-公众号Python机器学习AI.xlsx')
          
# 计算皮尔逊相关系数矩阵
          
corr = df.corr()
          
plt.figure(figsize=(10, 8))
          
# 使用 Seaborn 绘制热图
          
sns.heatmap(corr, annot=True, fmt=".2f", cmap="coolwarm", square=True, cbar_kws={"shrink": .8})
          
plt.title("Correlation Matrix Heatmap")
          
plt.savefig("Correlation Matrix Heatmap.pdf", format='pdf', bbox_inches='tight', dpi=1200)
          
plt.show()
      

picture.image

这是一个基础的热图绘制,通过计算数据框的皮尔逊相关系数矩阵,利用Seaborn库的heatmap函数可视化各特征间的相关性,热图通过颜色深浅直观展示相关性强弱,是分析特征间关系的简单且常用的方法

如何绘制带 拟合线及其置信区间的散点图

基础散点图绘制


          
plt.figure(figsize=(8, 6))
          
plt.scatter(df["Variable_1"], df["Variable_2"], alpha=0.7, edgecolor='k')
          
plt.title("Scatter Plot of Variable_1 vs Variable_2", fontsize=14)
          
plt.xlabel("Variable_1", fontsize=12)
          
plt.ylabel("Variable_2", fontsize=12)
          
plt.grid(alpha=0.3)
          
plt.savefig("1.pdf", format='pdf', bbox_inches='tight', dpi=1200)
          
plt.show()
      

picture.image

通过plt.scatter() 绘制了一个基础散点图,展示df["Variable_1"]和df["Variable_2"]之间的关系,直观反映数据的分布情况。为了进一步分析,可以在此基础上利用statsmodels库拟合线性模型,添加拟合线和置信区间,以可视化两变量之间的线性趋势及其统计可靠性,从而实现更深入的数据洞察

添加拟合线及其置信区间


          
import statsmodels.api as sm
          
# 拟合线性模型
          
X = sm.add_constant(df["Variable_1"])  # 添加常数项以适应截距
          
model = sm.OLS(df["Variable_2"], X).fit()  # 使用最小二乘法拟合
          
predictions = model.get_prediction(X)  # 获取预测结果
          
confidence_intervals = predictions.conf_int(alpha=0.05)  # 获取95%置信区间
          
# 为拟合线生成 x 和 y 值
          
x_values = np.linspace(df["Variable_1"].min(), df["Variable_1"].max(), 100)
          
X_pred = sm.add_constant(x_values)
          
predicted_means = model.predict(X_pred)
          
conf_int_pred = model.get_prediction(X_pred).conf_int()
          
# 绘制散点图和拟合线
          
plt.figure(figsize=(8, 6))
          
plt.scatter(df["Variable_1"], df["Variable_2"], alpha=0.7, edgecolor='k', label="Data Points")  # 数据点
          
plt.plot(x_values, predicted_means, color='red', label=f"Fit Line: y = {coefficients[0]:.2f}x + {coefficients[1]:.2f}")  # 拟合线
          
# 绘制置信区间
          
plt.fill_between(
          
    x_values,
          
    conf_int_pred[:, 0],  # 置信区间下界
          
    conf_int_pred[:, 1],  # 置信区间上界
          
    color='blue',
          
    alpha=0.2,
          
    label="95% Confidence Interval"
          
)
          
plt.title("Scatter Plot of Variable_1 and Variable_2 with Fit Line and Confidence Interval", fontsize=14)
          
plt.xlabel("Variable_1", fontsize=12)
          
plt.ylabel("Variable_2", fontsize=12)
          
plt.grid(alpha=0.3)
          
plt.legend(fontsize=10, loc='best')
          
plt.savefig("3.pdf", format='pdf', bbox_inches='tight', dpi=1200)
          
plt.show()
      

picture.image

通过拟合线性模型绘制散点图、拟合线以及95%的置信区间,展示Variable_1和Variable_2之间的线性关系及其统计可靠性

接下来,可以将这逻辑整合到相关系数热图中:上三角保留相关系数热图和显著性标记,下三角绘制散点图并叠加拟合线和置信区间,对角线保留特征的分布直方图,实现全面分析特征间的关系

进阶相关性热图1

picture.image

构建一个带有多种形式可视化的相关系数可视化,用于全面分析数据特征之间的关系,对角线展示每个特征的直方图和核密度估计 (KDE),直观反映单变量的分布形态;下三角绘制散点图并叠加线性拟合线及95%置信区间,呈现特征间的线性趋势和统计置信度;上三角显示皮尔逊相关系数热图,通过颜色深浅和数字注释量化特征间的相关性强弱,代码与数据集获取:如需获取本文的源代码和数据集,请添加作者微信联系

进阶相关性热图2

picture.image

在前面的基础上,添加显著性标记功能,通过显示 来标记相关性显著性水平,具体规则如下:

  • :标记为 ***,表示高度显著的相关性
  • :标记为 **,表示显著相关性
  • :标记为 *,表示弱显著相关性

增强对特征间线性关系可靠性的统计检验解读,使得相关性分析更具科学性和直观性,代码与数据集获取:如需获取本文的源代码和数据集,请添加作者微信联系

往期推荐

SCI图表复现:整合数据分布与相关系数的高级可视化策略

SCI图表:基于相关性和标准差的多模型评价——泰勒图解析

期刊文章配图:基于分组折线图的多机器学习模型表现评估对比

复现SCI文章 SHAP 依赖图可视化以增强机器学习模型的可解释性

SCI图表复现:优化SHAP特征贡献图展示更多模型细节

复现 Nature 图表——基于PCA的高维数据降维与可视化实践及其扩展

复现Nature图表——基于PCA降维与模型预测概率的分类效果可视化

SCI图表复现:特征相关性气泡热图展示

一图胜千言:回归预测模型训练集与测试集的进阶可视化

期刊文章配图:基于雷达图的多机器学习模型表现评估对比

期刊文章配图:斯皮尔曼相关系数热图反应非线性变量相关性

picture.image

如果你对类似于这样的文章感兴趣。

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论