TCGA数据挖掘(2):什么是配对样本分析?如何比较同一患者肿瘤与正常组织单基因表达

生信学长
2025年07月31日
TCGA数据挖掘
TCGA数据挖掘(2):什么是配对样本分析?如何比较同一患者肿瘤与正常组织单基因表达

大家早上好,上期我们探讨了 SERPINE1 基因在肿瘤与正常组织间的表达差异。今天我们更进一步,采用更加严格的配对分析方法,专门比较来自 同一患者 的肿瘤组织和癌旁正常组织中 SERPINE1 的表达差异。

配对分析的优势在于能够消除个体间差异的干扰,更准确地反映基因在疾病过程中的真实变化。让我们看看这种"一对一"的比较会给我们带来什么新发现!

1. 配对样本筛选:找到"完美配对"

我们首先从 TCGA 数据中筛选出既有肿瘤组织又有癌旁正常组织的患者样本,确保分析的严谨性。

# 读取基因表达文件
gene_data <- read.table(exp_file, header = TRUE, sep = "\t"
                       check.names = FALSE, row.names = 1)
gene_name <- colnames(gene_data)[1]

# 提取配对样品数据
normal_data <- gene_data[gene_data$Type == "Normal"1, drop = FALSE]
tumor_data <- gene_data[gene_data$Type == "Tumor"1, drop = FALSE]

# 根据TCGA样本ID提取患者编号,寻找配对样本
rownames(normal_data) <- gsub("(.*?)\\-(.*?)\\-(.*?)\\-(.*?)\\-.*",
                              "\\1\\-\\2\\-\\3", rownames(normal_data))
rownames(tumor_data) <- gsub("(.*?)\\-(.*?)\\-(.*?)\\-(.*?)\\-.*",
                             "\\1\\-\\2\\-\\3", rownames(tumor_data))

# 找到配对样本
same_sample <- intersect(rownames(normal_data), rownames(tumor_data))
paired_data <- cbind(normal_data[same_sample, , drop = FALSE], 
                     tumor_data[same_sample, , drop = FALSE])
colnames(paired_data) <- c("Normal""Tumor")

📈 配对结果

通过严格筛选,我们成功识别出 33 对配对样本 ,每一对都来自同一位患者的肿瘤组织和癌旁正常组织,为后续分析提供了高质量的数据基础。

2. 配对差异分析:揭示真实变化

现在让我们看看在同一患者体内,SERPINE1 在肿瘤与正常组织间的表达差异:

# 绘制配对差异图
paired_plot <- ggpaired(paired_data, cond1 = "Normal", cond2 = "Tumor",
                       fill = "condition", xlab = "Sample Type",
                       ylab = paste0(gene_name, " Expression"),
                       legend.title = "Type", palette = c("green""red")) +
  stat_compare_means(paired = TRUE,
                    symnum.args = list(cutpoints = c(00.0010.010.051),
                                     symbols = c("***""**""*""ns")),
                    label = "p.signif", label.x = 1.5)

# 计算配对t检验
paired_t_test <- t.test(paired_data$Normal, paired_data$Tumor, paired = TRUE)

📊 配对分析结果


图1:SERPINE1在配对样本中的表达差异

结果解读:

配对分析图清晰地展示了每一对样本的变化趋势。我们可以看到, 几乎所有的连接线都呈上升趋势 ,表明在同一患者体内,SERPINE1 在肿瘤组织中的表达普遍高于癌旁正常组织。配对 t 检验的 P 值为 3.49e-07,达到极显著水平 (***)。

3. 表达差值分析:量化个体变化

为了更直观地展示每个患者的表达变化程度,我们计算并可视化了表达差值:

# 计算差值
paired_data$Difference <- paired_data$Tumor - paired_data$Normal

# 绘制差值分布图
diff_plot <- ggplot(paired_data, aes(x = "", y = Difference)) +
  geom_boxplot(fill = "lightblue", alpha = 0.7) +
  geom_jitter(width = 0.2, alpha = 0.6) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "red") +
  xlab("") + ylab("Expression Difference (Tumor - Normal)")

📊 差值分布结果

图2:SERPINE1表达差值分布
图2:SERPINE1表达差值分布

结果解读:

差值分布图显示, 绝大多数患者的表达差值都位于零线(红色虚线)之上 ,这意味着在几乎所有患者中,SERPINE1 在肿瘤组织中的表达都高于正常组织。少数负值样本可能代表个体差异或样本特异性。

4. 统计总结

让我们用具体数字来总结这次配对分析的发现:

  • 配对样本数 :33 对
  • 正常组织平均表达 :较低水平
  • 肿瘤组织平均表达 :显著上调
  • 平均表达差值 :肿瘤组织比正常组织高表达
  • 统计显著性 :P = 3.49e-07 (极显著)

这些数据有力地证明了 SERPINE1 在肿瘤发生过程中的上调模式。

总结一下

通过本次严格的配对差异分析,我们获得了比普通差异分析更加可靠的证据:

  1. 个体一致性 :在 33 对配对样本中,SERPINE1 表现出高度一致的上调模式,证明这种变化不是由个体差异造成的假象。
  2. 统计可靠性 :配对 t 检验的极低 P 值(3.49e-07)确保了结果的统计学意义,排除了偶然性。
  3. 临床意义 :配对分析消除了个体间基因表达的天然差异,更准确地反映了 SERPINE1 在肿瘤发生过程中的真实作用。

配对分析的结果进一步证实了 SERPINE1 作为肿瘤相关基因的重要性,为深入研究其在肿瘤发生发展中的机制作用提供了坚实的数据支撑。这种"同体比较"的研究思路也为其他基因的功能研究提供了有价值的方法学参考!

完整代码联系老师免费获取(备注“ 配对样本分析 ”)


以上就是今天的内容,希望对你有帮助!欢迎点赞、在看、关注、转发。