🔧
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阈值