雅各布散度(Jensen–Shannon Divergence, JSD)
1 定义
给定同一随机变量上的两个概率分布 P 和 Q,
M = ½(P+Q)
JSD(P||Q) = ½ KL(P||M) + ½ KL(Q||M)
其中 KL 为 Kullback–Leibler 散度。
JSD 始终有限、对称,取值 0–ln 2;归一化后常用 0–1。
2 在转录组/WGCNA 中的用途
• 目的:量化“某个基因模块在雌样本与雄样本中的表达分布差异”,从而判定模块是否性别特异。
• 步骤
① 对模块 eigengene 在所有雌样本中做核密度估计 → 分布 P
② 同一 eigengene 在所有雄样本中核密度估计 → 分布 Q
③ 计算 JSD(P||Q)
④ 设定阈值(如 0.30);若 JSD ≥ 阈值,则该模块为雌特异(或雄特异)。
3 R 代码示例(eigengene 向量 → JSD)
library(philentropy)
density_female <- density(eig_female, n = 512)
density_male <- density(eig_male, n = 512)
x <- seq(min(c(density_female$x, density_male$x)),
max(c(density_female$x, density_male$x)), length.out = 512)
P <- approx(density_female$x, density_female$y, xout = x)$y
Q <- approx(density_male$x, density_male$y, xout = x)$y
P <- P / sum(P)
Q <- Q / sum(Q)
jsd <- JSD(P, Q) # philentropy::JSD()
4 结果解释
JSD ≈ 0:两分布几乎一致,模块非性别特异
JSD ≥ 0.3–0.4: 分布显著分离,模块为性别特异表达网络
【金山文档 | WPS云文档】 学习雅各布散度(JSD)
https://www.kdocs.cn/l/cdevvEOKEZUF