2. 方差分解基础
要真正理解 Sobol 全局敏感性分析,不能只记住“一阶指数”“总效应指数”这些名词,而要先回到它们共同的数学母体——方差分解。Sobol 方法的核心思想其实非常朴素:如果模型输出 Y = f(X₁, X₂, …, X_d) 的总波动(方差)可以被拆成若干部分,那么“某个输入变量贡献了多少波动”就自然成为衡量其重要性的尺度。本节围绕方差、条件期望与全方差公式展开,并由此建立 Sobol 指数与方差分解之间的数学联系。
一、方差:输出不确定性的度量
设模型输出 Y 是一个随机变量(因为输入 X 是随机的),其方差定义为
Var(Y) = E[(Y − E[Y])²] = E[Y²] − (E[Y])²
方差刻画的是输出围绕均值的离散程度。在敏感性分析语境下,我们关心的不是 Y 的绝对大小,而是它的波动来源:这份波动究竟由哪些输入变量引起?方差之所以成为分解对象,是因为它具有可加性——当若干随机成分相互独立时,它们的方差可以直接相加。这正是 Sobol 分解能够成立的根基。
二、条件期望:固定部分输入后的“平均输出”
条件期望是连接输入与输出的桥梁。记 X_i 为第 i 个输入,X_~i 表示除 X_i 外的其余所有输入。固定 X_i = x_i 后,对其它变量求平均,得到
E[Y | X_i = x_i]
这是一个关于 x_i 的函数,记作 g_i(x_i)。它表示:当第 i 个输入取定某个值时,输出在其余不确定性下的平均水平。若 g_i(x_i) 随 x_i 变化剧烈,说明 X_i 对输出有显著影响;若它几乎是一条水平线,说明 X_i 单独作用很弱。这个“条件期望曲线的起伏程度”,正是后面一阶效应的直观来源。
三、全方差公式:把总方差拆成两部分
全方差公式(Law of Total Variance)是本节的关键工具:
Var(Y) = Var( E[Y | X_i] ) + E[ Var(Y | X_i) ]
它把总方差拆成两项:第一项 Var(E[Y|X_i]) 是条件期望本身的方差,反映“由 X_i 引起的输出波动”;第二项 E[Var(Y|X_i)] 是固定 X_i 后剩余方差的平均,反映“X_i 无法解释的波动”。两者之比就自然定义了一阶 Sobol 指数:
S_i = Var( E[Y | X_i] ) / Var(Y)
由于第二项非负,必有 0 ≤ S_i ≤ 1。S_i 越接近 1,说明 X_i 单独解释了输出方差的主要部分;越接近 0,说明其单独作用微弱。这就是一阶效应(主效应)的严格定义。
四、从单变量到多变量:方差分解的一般形式
把全方差公式推广到变量组合,Sobol 分解给出:
Var(Y) = Σ_i V_i + Σ_{i<j} V_ij + … + V_{1,2,…,d}
其中 V_i = Var(E[Y|X_i]),V_ij = Var(E[Y|X_i,X_j]) − V_i − V_j,依此类推。每一项对应一个变量子集的“纯交互贡献”。归一化后得到各阶 Sobol 指数 S_i、S_ij 等,且所有指数之和为 1(在输入相互独立的前提下)。这揭示了 Sobol 方法的本质:它是对输出方差的一次正交分解,每个指数都是某个变量子集所“认领”的方差份额。
五、总效应指数:把交互作用算进来
一阶指数只统计 X_i 单独贡献的方差,却漏掉了 X_i 参与的所有交互项。为此定义总效应指数:
S_Ti = 1 − Var( E[Y | X_~i] ) / Var(Y)
= E[ Var(Y | X_~i) ] / Var(Y)
它的含义是:固定除 X_i 外的所有变量后,剩余方差(即仍由 X_i 及其交互作用引起的部分)占总方差的比例。因此 S_Ti 包含了 X_i 的主效应以及它与其它变量的全部交互效应,恒有 S_Ti ≥ S_i。两者之差 S_Ti − S_i 就是 X_i 参与的交互效应总量,是判断变量间是否存在强耦合的重要指标。
六、一个可手算的示例
为把公式落到具体数字上,考虑一个教学用的简化模型(以下数值为便于讲解而设定的示例,非实测结果):
Y = X₁ + 2·X₂ + X₁·X₂
X₁ ~ U(0,1), X₂ ~ U(0,1),相互独立
先算均值:E[Y] = 0.5 + 2×0.5 + 0.25 = 1.75。再算总方差,可分解为:Var(X₁)=1/12,Var(2X₂)=4/12,交互项 X₁X₂ 的方差为 E[X₁²X₂²]−E[X₁X₂]² = 1/9 − 1/16 = 7/144,且各成分独立,故 Var(Y) = 1/12 + 4/12 + 7/144 = 67/144 ≈ 0.4653。
一阶指数:S₁ = (1/12)/(67/144) = 12/67 ≈ 0.179,S₂ = (4/12)/(67/144) = 48/67 ≈ 0.716。交互指数 S₁₂ = (7/144)/(67/144) = 7/67 ≈ 0.104,三者之和为 1。总效应指数则为 S_T1 = S₁ + S₁₂ ≈ 0.284,S_T2 = S₂ + S₁₂ ≈ 0.821。
这个例子清楚展示了几个要点:X₂ 的系数更大,一阶指数更高;交互项虽小但不可忽略,它使 S_Ti 明显大于 S_i;而所有指数之和恰为 1,验证了方差分解的完备性。实际工程中模型无法解析积分,Sobol 指数需通过蒙特卡洛采样估计,但“分解—归一化—比较”的逻辑完全一致。
S_i 与 S_Ti:若 S_i 高而 S_Ti 与之接近,说明该变量以主效应为主,可优先单独控制;若 S_Ti 远大于 S_i,说明其影响主要通过交互实现,单独固定它未必能显著降低输出波动。