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风格绘图 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1766202600a3444183.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论