科研作图之绘制带有显著性标记的相关系数热力图

大模型智能语音交互人工智能与算法

picture.image

一般的相关系数热力图通常用于展示变量之间的相关性强弱,但它们不直接支持在热力图上显示显著性水平(如星号或颜色标记),具体来说:

  • 一般热力图:一般使用像 seaborn 或 matplotlib 这样的库来创建,它们通过颜色编码来显示相关系数的大小,通常使用数字标注在每个格子内
  • 显著性标记的需求:在科研和统计分析中,除了显示相关性本身外,还常常需要展示哪些相关系数在统计上显著不同于零(例如,显著性水平为0.05或更高),这种需求是为了进一步解释相关性的真实性和稳健性
  • 实现显著性标记:为了在热力图上添加显著性标记,需要额外的代码来计算相关系数的显著性,并在热力图上以符号或颜色的形式进行标注,这需要在相关性分析之外进行额外的统计分析和代码编写,以确保显著性水平的正确显示

代码实现

数据生成


          
import pandas as pd
          
import numpy as np
          
import seaborn as sns
          
from scipy.stats import pearsonr
          
import matplotlib.pyplot as plt
          

          

          
# 生成具有10个特征的数据
          
np.random.seed(0)
          
data = np.random.rand(100, 10)
          
columns = [f'feature_{i+1}' for i in range(10)]
          
df = pd.DataFrame(data, columns=columns)
      

计算相关系数及显著性P值


          
# 计算相关系数矩阵和显著性p值矩阵
          
corr_matrix = df.corr()
          
p_values = pd.DataFrame(np.zeros((10, 10)), columns=columns, index=columns)
          

          
for i in range(10):
          
    for j in range(10):
          
        if i == j:
          
            p_values.iloc[i, j] = 0
          
        else:
          
            _, p_value = pearsonr(df.iloc[:, i], df.iloc[:, j])
          
            p_values.iloc[i, j] = p_value
      

绘制热力图


          
plt.figure(figsize=(10, 10))
          
sns.set(font_scale=1.2)
          
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f")
          
plt.xticks(rotation=45)
          
plt.title('Correlation coefficient heat map')
          
plt.show()
      

picture.image

这是一般的热力图,它不会显示相关系数的显著性结果

绘制带有显著性标记的相关系数热力图


          
# 创建相关系数热力图
          
plt.figure(figsize=(10, 10))
          
sns.set(font_scale=1.2)
          
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f")
          

          
# 添加P值标记
          
for i in range(len(np.array(p_values))):
          
    for j in range(len(np.array(p_values))):
          
        if i != j:  # 跳过对角线上的元素
          
            if np.array(p_values)[i, j] < 0.01:
          
                plt.text(j + 0.5, i + 0.25, "**", horizontalalignment='center', verticalalignment='center', fontsize=16, color='black')
          
            elif np.array(p_values)[i, j] < 0.05:
          
                plt.text(j + 0.5, i + 0.25, "*", horizontalalignment='center', verticalalignment='center', fontsize=16, color='black')
          

          
plt.xticks(rotation=45)
          
plt.title('Correlation Coefficient Heatmap with Significance Levels')
          
plt.show()
      

picture.image

在相关系数热力图的基础上,使用双星号 ** 标记显著性水平小于0.01的相关系数,使用单星号 * 标记显著性水平在0.01到0.05之间的相关系数,帮助观察者理解哪些相关性是在统计学上显著的

往期推荐

统计检验——卡方检验分析分类变量间的显著性差异

统计检验——方差检验(ANOVA)分析变量间的显著性差异

SHAP全解析:机器学习、深度学习模型解释保姆级教程

轻松一键生成SHAP模型解释图的机器学习GUI应用

科研作图之层次聚类与相关系数的混合边缘图

统计检验——T检验分析样本间的显著性差异

决策树和随机森林的决策过程路径可视化解读

论文可视化设计:掌握 Seaborn 15 种精美数据可视化

picture.image

picture.image

picture.image

微信号 deep_ML

欢迎添加作者微信进入Python、ChatGPT群
无需科学上网、同步官网所有功能、使用无限制

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

欢迎关注、点赞、转发~

个人观点,仅供参考

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
如何利用云原生构建 AIGC 业务基石
AIGC即AI Generated Content,是指利用人工智能技术来生成内容,AIGC也被认为是继UGC、PGC之后的新型内容生产方式,AI绘画、AI写作等都属于AIGC的分支。而 AIGC 业务的部署也面临着异构资源管理、机器学习流程管理等问题,本次分享将和大家分享如何使用云原生技术构建 AIGC 业务。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论