🔧 tool

相关软件(R代码)

```r # 模拟10000个基因的p值 # 其中100个基因真实差异表达,9900个无差异 set.seed(42) p_values <- c( rbeta(100, 1, 50) * 0.05, # 显著基因(小p值) runif(9900, 0, 1) # 非显著基因(均匀分布) ) # Bonferroni校正 p_bonferroni <- p.adjus...

📖 定义

# 模拟10000个基因的p值
# 其中100个基因真实差异表达,9900个无差异
set.seed(42)
p_values <- c(
  rbeta(100, 1, 50) * 0.05,  # 显著基因(小p值)
  runif(9900, 0, 1)           # 非显著基因(均匀分布)
)
# Bonferroni校正
p_bonferroni <- p.adjust(p_values, method = "bonferroni")
sum(p_bonferroni < 0.05)  # 非常保守,发现很少
# BH校正(FDR控制)
p_bh <- p.adjust(p_values, method = "BH")
sum(p_bh < 0.05)  # 更合理,发现更多
# 可视化p值分布
hist(p_values, breaks = 50, main = "p值分布", xlab = "p值")
# 火山图:展示p值与效应量的关系
# 通常用于差异表达分析
log_fc <- rnorm(10000)  # 模拟log fold change
plot(log_fc, -log10(p_values), pch = 20, 
     xlab = "log2 Fold Change", ylab = "-log10(p值)",
     main = "火山图", col = ifelse(p_bh < 0.05, "red", "gray"))
abline(h = -log10(0.05/10000), col = "blue", lty = 2)  # Bonferroni阈值
abline(h = -log10(max(p_values[p_bh < 0.05])), col = "green", lty = 2)  # BH阈值

2.2.7 卡方检验