By fanbingbing, 31 August, 2025

雅各布散度(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