3. 两水平全因子筛选主溶剂与表面活性剂交互作用

为什么本例必须用 2² 全因子而不是两次单因素

单因素法只能回答“主溶剂从 4% 提到 6% 时清洗效率变多少”,它把表面活性剂固定在某个值上。如果两者存在交互作用——例如主溶剂浓度高时表面活性剂的增溶贡献被放大——单因素实验会系统性低估或高估组合效果。2² 全因子用 4 次实验覆盖 (低,低)、(低,高)、(高,低)、(高,高) 四个角点,配合重复实验即可用方差分析把主效应、交互效应与随机误差分开。

因素水平与实验矩阵

沿用前例确定的主溶剂基准 5%(质量分数),上下各取 1% 作为水平;表面活性剂基准 1.0%,上下各取 0.4%。编码变量取 −1/+1,便于回归系数直接对应效应的一半。

因素低水平 (−1)高水平 (+1)编码
A 主溶剂质量分数4.0%6.0%x₁=(A−5)/1
B 表面活性剂质量分数0.6%1.4%x₂=(B−1.0)/0.4

响应 y 为清洗效率(%,按前例定义的失重法测定)。每个角点做 2 次重复,共 8 次实验,随机化运行顺序以抵消时间漂移。下表为教学示例数据(假设值,用于演示计算路径,非实测结果):

运行x₁x₂A/%B/%y₁y₂均值
1−1−14.00.671.272.471.8
2+1−16.00.678.679.879.2
3−1+14.01.474.573.173.8
4+1+16.01.488.987.588.2

效应计算:交互项从四个角点的“差之差”读出

用角点均值直接算效应(效应 = 高均值 − 低均值):

  • 主效应 A = (79.2+88.2)/2 − (71.8+73.8)/2 = 83.7 − 72.8 = +10.9
  • 主效应 B = (73.8+88.2)/2 − (71.8+79.2)/2 = 81.0 − 75.5 = +5.5
  • 交互 AB = (88.2−73.8)/2 − (79.2−71.8)/2 = 7.2 − 3.7 = +3.5

交互项 +3.5 的含义:B 从低到高带来的增益,在 A 低时只有 2.0(73.8−71.8),在 A 高时达到 9.0(88.2−79.2)。两条“B 效应线”不平行,说明存在协同。若 AB 接近 0,两条线应大致平行。

2² 全因子:交互作用图(左)与效应分解(右) 清洗效率 / % vs 表面活性剂 B B: 0.6% (−1) → 1.4% (+1) y / % 70 76 82 88 71.8 73.8 A=4% 79.2 88.2 A=6% 两线不平行 → 存在交互 效应大小(相对零线) 0 A 主效应 +10.9 B 主效应 +5.5 AB 交互 +3.5 AB 不为零且方向为正 → 协同增强

方差分析:交互项是否显著

2² 设计每个效应有 1 个自由度,重复实验提供纯误差。用角点均值与重复内偏差构造平方和(SS),总自由度 = 8−1 = 7,误差自由度 = 4(每角点 2 次重复,共 4 个角点各贡献 1 个自由度)。

# 教学示例数据(假设值)
runs = [
    # (x1, x2, y1, y2)
    (-1, -1, 71.2, 72.4),
    (+1, -1, 78.6, 79.8),
    (-1, +1, 74.5, 73.1),
    (+1, +1, 88.9, 87.5),
]

n_rep = 2
grand = sum((a+b)/2 for _,_,a,b in runs) / 4          # 角点均值总平均
ss_err = sum((a-(a+b)/2)**2 + (b-(a+b)/2)**2 for _,_,a,b in runs)

def effect_ss(col):                                    # col: 0->x1, 1->x2, 2->x1*x2
    s = 0.0
    for x1, x2, a, b in runs:
        code = [x1, x2, x1*x2][col]
        s += code * (a+b)/2
    eff = s / 4                                        # 效应 = 对比/2^(k-1)/n_rep... 此处按角点均值
    return 4 * eff**2, eff                             # SS = n_rep*2^k/4 * eff^2 的等价形式

ss_A, eff_A = effect_ss(0)
ss_B, eff_B = effect_ss(1)
ss_AB, eff_AB = effect_ss(2)

ms_err = ss_err / 4
for name, ss in [("A", ss_A), ("B", ss_B), ("AB", ss_AB)]:
    F = (ss/1) / ms_err
    print(f"{name:>2}  SS={ss:7.3f}  F={F:6.2f}")
print(f"误差 SS={ss_err:7.3f}  MS={ms_err:6.3f}  df=4")

按上表数据代入,得到 SS_A≈237.6、SS_B≈60.5、SS_AB≈24.5、SS_误差≈2.4,MS_误差≈0.6。对应 F 值约为 F_A≈396、F_B≈101、F_AB≈41。在 α=0.05、F(1,4)=7.71 的临界值下,三项均显著,其中 AB 交互显著说明不能把 A、B 的最优水平各自独立选取。

判断顺序:先看 AB 是否显著。若 AB 显著,主效应的“最优水平”必须放在组合里解释——本例 A=6%、B=1.4% 的组合均值 88.2% 明显高于按主效应线性外推的 83.7+5.5/2≈86.5,协同增益约 1.7 个百分点。

用回归模型量化并验证

编码变量下拟合 y = b₀ + b₁x₁ + b₂x₂ + b₁₂x₁x₂,其中 b = 效应/2:b₀=78.25、b₁=5.45、b₂=2.75、b₁₂=1.75。代入 (x₁,x₂)=(+1,+1) 得 78.25+5.45+2.75+1.75=88.2,与实测角点均值一致,说明模型对四个角点无残差(2² 设计饱和拟合,这也是必须做重复实验才能估计误差的原因)。

若不做重复实验,2² 的 3 个效应恰好用尽 3 个自由度,误差项为空,F 检验无法进行。此时只能看效应大小排序,不能给出显著性结论。本例每角点 2 次重复是最低要求。

结果判读与下一步

  • AB 交互为正且显著:主溶剂与表面活性剂存在协同,配方优化应沿“双高”方向搜索,而不是单独拉高某一组分。
  • 主效应 A 远大于 B:主溶剂仍是主导成本与性能的杠杆,但 B 在高 A 下的边际贡献被放大,不能按低 A 条件下的数据定价。
  • 四个角点均为边界点,最优可能落在实验区域之外或内部弯曲处,需补做中心点检验曲率,或进入响应面设计。
  • 验证方法:在 A=6%、B=1.4% 附近取 3 个确认批次,实测均值应落在 88.2%±误差区间内;若偏离明显,检查清洗温度、时间是否在 8 次实验中保持恒定。