admin 管理员组

文章数量: 1184232

1. Spearman 秩相关系数

比较组间相关性,适用于非线性关系或非正态分布数据,与 Pearson 的区别:不要求数据线性相关,只关注秩次的单调关系。

2. 数据模拟+Spearman检验+SCI相关性绘图

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

# 设置字体
#plt.rcParams["font.family"] = ["SimHei", "WenQuanYi Micro Hei", "Heiti TC"]
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

def generate_mutation_data(n_samples=20, random_seed=42):
    """
    生成肿瘤和正常组织的突变数量数据
    
    参数:
    n_samples -- 样本对数
    random_seed -- 随机种子,确保结果可重现
    
    返回:
    DataFrame -- 包含样本ID、肿瘤突变数和正常突变数的数据框
    """
    np.random.seed(random_seed)
    
    # 生成基础变异水平(不同样本的个体差异)
    base_mutations = np.random.gamma(shape=5, scale=10, size=n_samples)
    
    # 肿瘤组织突变数(基础水平 + 肿瘤特异性变异 + 随机噪声)
    tumor_mutations = base_mutations + np.random.gamma(shape=3, scale=5, size=n_samples) + np.random.normal(0, 5, n_samples)
    
    # 正常组织突变数(基础水平 + 随机噪声,通常低于肿瘤)
    normal_mutations = base_mutations * 0.6 + np.random.normal(0, 8, n_samples)
    
    # 确保突变数非负
    tumor_mutations = np.maximum(1, tumor_mutations).astype(int)
    normal_mutations = np.maximum(1, normal_mutations).astype(int)
    
    # 创建数据框
    data = pd.DataFrame({
   
   
        '样本ID': [f'S{
     
     i+1}' for i in range(n_samples)],
        '肿瘤组织突变数': tumor_mutations,
        '正常组织突变数': normal_mutations
    })
    
    return data

def calculate_spearman_correlation(data):
    """
    计算Spearman相关性和p值
    
    参数:
    data -- 包含肿瘤和正常组织突变数的数据框
    
    返回:
    correlation -- Spearman相关系数
    p_value -- 对应的p值
    significant -- 是否显著相关(p<0.05)
    """
    x = data['肿瘤组织突变数']
    y 

本文标签: 性及 风格 Spearman Sci