简介:这份均匀设计课件面向科研人员、工程技术人员及统计试验设计学习者,围绕如何在有限试验次数下高效获取试验信息展开,系统梳理均匀设计的概念、均匀分散与整齐可比特点、伪蒙特卡罗原理,以及因素水平确定、均匀设计表选择、试验安排和结果分析等关键步骤。课件结合实例讲解方法,并延伸至均匀设计软件的使用思路,帮助读者理解回归分析、因素影响评估与工艺优化中的具体应用,同时认识其相对正交设计的优势与适用边界。压缩包共1个PPT文件,大小约174KB,内容以讲义式幻灯片呈现,便于课堂讲授、自学查阅和组会汇报时快速梳理知识框架。已有539人学习,适合需要短时间建立均匀设计整体认识、并希望借助案例掌握试验安排与结果解读的读者。
1. 从一次“排不出试验”说起:均匀设计课件到底解决什么问题
有个做配方的课题组,5 个因素、每个因素 31 个水平,按正交表老老实实排,要 961 次试验,一年也做不完;砍到 5 水平又怕漏掉最优点。这类“因素多、水平多、预算少”的排试验难题,正是均匀设计(Uniform Design)要处理的问题。这套均匀设计课件与实例讲解围绕三件事展开:均匀设计的概念与特点、均匀设计表的构造与使用表选列、以及配套均匀设计软件的建表—安排—回归分析流程。它适合需要交试验设计课设或毕设的学生,也适合手上有真实试验任务、想直接照着排一套方案的人。读完你应当能自己选表、自己排试验、自己把 13 次试验的数据回归出结论。
2. 先算一笔试验次数的账:为什么这里该选均匀设计而不是正交设计
排试验方案之前,最该做的一件事不是打开软件,而是把“要花多少次试验”算清楚。这一次成本往往比后面所有建模工作加起来都大。均匀设计整套方法的价值,几乎全部集中在“用更少的试验点覆盖同样的试验范围”,所以先把这笔账算明白,后面选表、选列、选模型才有依据。
2.1 正交设计的“整齐可比”代价:rq² 与那 961 次试验
正交设计挑代表点有两个特点:均匀分散、整齐可比。均匀分散让试验点均衡铺在试验范围内,每个点都有代表性;整齐可比让结果分析变得很舒服,各因素的主效应和部分交互效应容易估计,因素对指标影响的大小和变化规律也能直接看出来。这两条是正交设计的优点,也是它试验次数的来源。
问题出在“整齐可比”上。为了照顾可比性,正交设计的试验点做不到充分均匀分散,而且试验点数目必须比较多——安排每因素 q 个水平的多因素试验,试验次数是 rq²(r 为自然数)。5 因素 31 水平,就是 31² = 961 次。这个数字放在材料、化工、制药这类单次试验周期长的场景里,基本等于方案不可执行。
均匀设计把这笔账彻底改写了。它只考虑试验点在试验范围内充分“均匀散布”,不再考虑“整齐可比”,因此布点均匀性反而比正交设计更好,代表性更强;更重要的是试验次数大幅下降。同样 5 因素 31 水平,采用均匀设计只需 31 次试验,效果基本相同。原因是它每个因素的每个水平仅做一次试验:水平数增加时,试验数随水平数线性增加;正交设计则随水平数的平方增加。这个差异在水平数上到两位数以后,是数量级上的差别。
2.2 均匀设计的取舍:只保均匀分散,把分析交给回归
省下来的试验次数不是白省的,代价转移到了数据分析环节。因为不再有整齐可比性,试验结果的处理不能沿用正交设计那套极差分析和方差分析表,而要采用回归分析方法——线性回归或多项式回归。回归分析里对模型中各因素做回归显著性检验,根据因素偏回归平方和的大小确定该因素对回归的重要性;在各因素之间没有相关关系时,偏回归平方和的大小也体现了它对试验指标影响的重要性。
这条链路一般都要借助计算机完成,这也是为什么课件里必须单独讲软件:手算 13 行数据的多元回归、还要算偏回归平方和和 F 检验,不现实。换个角度理解更清楚:均匀设计是拿“算力”换“试验量”。试验台前的成本降一个数量级,代价是电脑前多花半天建模型,这笔交换在绝大多数工程场景里都是划算的。
边界也要说清楚。均匀设计在需要精确估计因素之间交互作用的场合,不如正交设计适用——因为它的试验点不保证正交性,交互项估计的精度和可解释性会打折。所以我的判断标准通常是:主效应筛选、配方寻优、工艺参数粗调,用均匀设计;交互效应是研究核心、要严格做方差分解,用正交设计或响应面。
2.3 把课件内容拆成四块可交付物
课件本身的结构比较完整,落到“能交作业、能直接照着做”的层面,我一般把它拆成四块交付物,每块都有明确的产出:
| 模块 | 交付内容 | 怎么算过关 |
|---|---|---|
| 概念与特点 | 均匀设计的定义、与正交设计的差异、适用与不适用场景 | 能说清为什么 961 次能压到 31 次 |
| 原理与建表 | 均匀设计表 Un(q^s)、使用表、偏差、好格子点法、拟水平法 | 能手工推出一张小表的某几列 |
| 软件操作 | 建表、选列、导出试验方案、录入结果、回归分析 | 能独立跑完一次三因素案例 |
| 实例 | 温度、压力、时间三因素对产品强度的完整分析 | 能给出因素主次和推荐组合 |
这四块里,第三块最容易被当成“点几下按钮”而做浅。实际上软件只是把建表和回归封装了,如果不知道它在背后选的是哪几列、用的什么模型,参数一改结果就全变,自己还以为是软件玄学。所以下一章先把表讲透。
3. 原理落到表上:Un(q^s) 怎么构造,使用表和偏差怎么挑列
均匀设计和正交设计相似,也是通过一套精心设计的表来安排试验。表的记号是 Un(q^s) 或 Un*(q^s):U 代表均匀设计,n 代表要做的试验次数,q 代表每个因素有 q 个水平,s 代表该表有 s 列;带星号和不带星号是两类不同的表,星号表由 Un+1 类型的表构造而来。这一章要做的事,是把“表从哪来、列怎么挑、水平数不齐怎么办”讲成可以动手复现的流程。
3.1 好格子点法:从欧拉函数 E(n) 到生成向量 h
用好格子点法(Good Lattice Point)构造均匀设计表,步骤只有两步,但每一步的含义值得展开:
- 定义试验次数 n,寻找比 n 小、且与 n 的最大公约数为 1 的整数 h,这些 h 组成一个向量 h = (h1, …, hm);
- 表的第 j 列由 uij = i·hj [mod n] 产生(同余运算),若 i·hj 超过 n,就减去 n 的适当倍数,使结果落在 [1, n] 内。
实际写代码时不用真的做乘法取模,递推更快:u1j = hj,u(i+1)j = uij + hj(若 uij + hj ≤ n),否则 u(i+1)j = uij + hj − n。这样生成的表记作 Un(n^m),向量 h 称为该表的生成向量,表也可以记成 Un(h)。
列数 m 不是随便定的,它是 n 的函数,叫欧拉函数 E(n),含义是“这张表最多可能有多少列”。数论给出的结论分三种情形:
- n 为素数时,E(n) = n − 1,这是最好的情形,比如 n = 11 最多 10 列、n = 13 最多 12 列;
- n 为素数幂,即 n = p^l,则 E(n) = n(1 − 1/p)。例如 n = 9 = 3²,E(9) = 9(1 − 1/3) = 6,U9 最多 6 列;
- n 不属于上面两种,一定可写成不同素数方幂的积 n = p1^l1 · p2^l2 … ps^ls,则 E(n) = n(1 − 1/p1)…(1 − 1/ps)。例如 n = 12 = 2² × 3,E(12) = 12(1 − 1/2)(1 − 1/3) = 4,U12 最多 4 列。
下面这段代码把上面两步直接实现,顺便验证课件的 U11(11^6):
from math import gcd def gen_vector(n): """生成向量 h:所有与 n 互素、且小于 n 的正整数,个数即欧拉函数 E(n)""" return [h for h in range(1, n) if gcd(h, n) == 1] def uniform_table(n, cols=None): """好格子点法构造 Un(n^m)。cols 指定取生成向量的前几列,默认全取""" hs = gen_vector(n) if cols: hs = hs[:cols] table = [] for i in range(1, n + 1): row = [] for h in hs: v = (i * h) % n row.append(n if v == 0 else v) # 余数 0 映射为水平 n,保证值域 1..n table.append(row) return hs, table hs, t = uniform_table(11) # n=11 为素数,最多 10 列 print("生成向量 h =", hs, "列数 =", len(hs)) for row in t[:5]: print(row) # 前 5 行,检查列 1 是否为 1,2,3,4,5 hs6, t6 = uniform_table(11, cols=6) # 取前 6 列,对应课件的 U11(11^6)这段代码有两个参数值得注意。n 决定试验次数和最多列数,选 11 这种素数最省心;cols 决定实际取几列,取前 6 列得到的正是课件里 U11(11^6) 的六列,生成向量为 (1,2,3,4,5,6)。代码里“余数 0 映射成 n”这一步不能省,否则水平会落到 0,后面映射真实取值时会整体错位一格——这个错位很隐蔽,试验照做,结论偏移,属于典型的血泪经验。
3.2 使用表与偏差 D:为什么 13 水平 3 因素要选 1、3、4 列
有了表还不够。从 Un(n^m) 里选 s 列来安排 s 个因素,可能的选法有 C(m,s) 种,但不同列组合代表的点集均匀性不同,试验效果也不同。所以每个均匀设计表都附一张使用表,直接告诉你几因素时该用哪几列。
判据是偏差(discrepancy),它是使用历史最久、被接受最广的均匀性度量,偏差越小,表的均匀性越好,试验成功的几率和结果可靠性越大。课件没有展开偏差的计算方法(那部分内容量很大),而是直接给出使用表——这是很务实的处理,因为工程上你只需要查表。
以课件里的 U13*(13^4) 为例,使用表给出的推荐是:2 因素用第 1、3 列,偏差 0.0962;3 因素用第 1、3、4 列,偏差 0.1442;4 因素全用,偏差 0.2076。这里有个容易误读的点:列用得越多偏差越大,这不是选错了,而是维度增加必然带来的数值变化,不要拿 2 因素的 0.0962 去和 4 因素的 0.2076 比优劣。
如果想自己复核使用表,可以枚举列组合并算偏差。下面用中心化 L2 偏差(CD2)做一个打分器:
import itertools import numpy as np def cd2(points): """中心化 L2 偏差,points 每行一个试验点,取值已归一化到 (0,1]""" n, s = points.shape half = np.abs(points - 0.5) t1 = (13.0 / 12.0) ** s # 常数项 t2 = np.prod(1 + 0.5 * half - 0.5 * half ** 2, axis=1).sum() t2 = (2.0 ** (1 - s)) / n * t2 # 单点项 t3 = 0.0 for i in range(n): for j in range(n): t3 += np.prod(1 + 0.5 * np.abs(points[i] - 0.5) + 0.5 * np.abs(points[j] - 0.5) - 0.5 * np.abs(points[i] - points[j])) return t1 - t2 + t3 / (n ** 2) # 点对项 def rank_columns(table, n, s): """枚举 s 列组合,按 CD2 从小到大排序,返回 [(列号组合, 偏差), ...]""" arr = np.array(table, dtype=float) / n # 水平 1..n 归一到 (0,1] m = arr.shape[1] res = [] for cols in itertools.combinations(range(m), s): res.append((tuple(c + 1 for c in cols), cd2(arr[:, list(cols)]))) return sorted(res, key=lambda x: x[1])用法上要提醒一句:偏差的定义有好几个版本,CD2 只是其中一种。不同定义给出的排序可能略有差别,所以脚本只用来“复核”和“自建表”,正式排试验以表自带的使用表为准。如果脚本排第一的组合和使用表推荐不一致,先怀疑自己归一化方式或偏差定义,别急着推翻使用表。
3.3 拟水平法:等水平表怎么改成混合水平表
前面讲的都是各因素水平数相等的情形。真实试验里经常是温度 13 水平、压力 5 水平、时间 3 水平,这时候要用混合水平设计表,最常用的改造手段是拟水平法。
规则很明确:一个试验次数为 n 的设计表,如果某个因素的水平和数 m 不足 n(n 必须是 m 的整数倍),就把设计表中代表该因素的水平合并。设 i 为该因素的第 i 水平(i = 1, 2, …, n),把 i 从小到大分成 m 组,每组 n/m 个,用 i 所在组的组号代替设计表中的 i,就得到混合水平设计表。
def collapse_levels(col, m): """拟水平法:把 1..n 的等水平列合并为 m 个水平,要求 n 能被 m 整除""" n = len(col) if n % m != 0: raise ValueError(f"试验次数 n={n} 必须是水平数 m={m} 的整数倍") block = n // m return [(i - 1) // block + 1 for i in col] # 1..block 归 1,block+1..2*block 归 2 # 9 次试验的表,把某因素从 9 水平压成 3 水平 demo = list(range(1, 10)) print(collapse_levels(demo, 3)) # [1,1,1,2,2,2,3,3,3]合并会改变点集分布,偏差必须重算,不能直接沿用原表的偏差值。实践中的一个顺序技巧:把水平数最多的因素放在不合并的列上,只对其他列做拟水平,这样整体均匀性损失最小;另外 n 必须能被 m 整除这条是硬约束,n = 13、m = 5 就做不了拟水平,得换 n 或者把水平数调成能整除的数。
3.4 星号表 Un*:删掉最后一行换来的列数
当 n 不是素数也不是素数幂时,列数会明显不够。比如 E(6) = 2,U6 最多只能安排两个试验因素,这在三因素场景里直接无法使用。办法是用 U(n+1) 表划去最后一行构造 Un* 表,例如 U6*(6^6) 可以有 6 列之多。
def star_table(n, cols=None): """构造 Un*:先按 n+1 用好格子点法建表,再删掉最后一行""" hs, t = uniform_table(n + 1, cols=cols) return hs, t[:-1] # 行数回落为 n hs, t = star_table(13, cols=4) # U13*:由 14 行的表删最后一行得到 13 行 4 列 print("生成向量 =", hs) # 对应 U14 的 (1, 5, 9, 11)跑一遍就能对上课件:U13*(13^4) 的生成向量是 (1, 5, 9, 11),第 1 列是 1 到 13 顺序排列,第 2 列是 5、10、1、6、11、2、7、12、3、8、13、4、9,第 3 列是 9、4、13、8、3、12、7、2、11、6、1、10、5,第 4 列是 11、8、5、2、13、10、7、4、1、12、9、6、3。三因素时按使用表取第 1、3、4 列,13 次试验的水平组合就是 (1,5,9)、(2,10,4)、(3,1,13)、(4,6,8)、(5,11,3)、(6,2,12)、(7,7,7)、(8,12,2)、(9,3,11)、(10,8,6)、(11,13,1)、(12,4,10)、(13,9,5)。这张表就是你后面要拿去排试验、录数据、跑回归的底表,务必自己生成一遍核对。
4. 从因素水平到回归结论:一套能照着排的落地流程
建表是原理层面的事,接下来是执行层面。一套完整的均匀设计试验,我一般按四步走:定因素定水平、选表排试验、跑回归定主次、给推荐组合并验证。四步之间有强依赖,前一步含糊,后一步的结论就站不住。
4.1 第一步:定因素、定水平、定指标
三个东西必须先写死,而且要写在方案第一页:因素(要考察的变量)、每个因素的水平数(水平的具体取值)、指标(要测的响应值,以及测量方法、精度、重复次数)。这一步看起来最没技术含量,实际决定了后面一切。
水平数的选择有个常用策略:取素数或素数幂,比如 9、11、13、16。理由是这类 n 的表列数多、结构好,不容易出现“因素数比列数多”的尴尬。如果实际工艺只能取 5 水平,那就接受 E(5) = 4 这个列数上限,或者用 U6*(6^6) 这类星号表来凑列。
指标测量这一项容易被糊弄。均匀设计的试验点没有重复(每个因素每个水平只做一次),这意味着你拿不到纯误差估计。通常的做法是:在 13 次试验里挑 2 到 3 个点做重复,或者在试验结束后对推荐组合补做验证试验,用这部分数据充当误差项。没有这一步,后面的显著性检验就缺少对照标准。
4.2 第二步:选表与排试验
继续用温度、压力、时间的三因素案例。三个因素都是 13 水平,选 U13*(13^4),按使用表取第 1、3、4 列。下面把水平编号映射成真实取值并导出安排表:
import pandas as pd # 因素的真实水平取值(13 个水平,按工艺窗口等分或按经验取值) levels = { "温度": [60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120], "压力": [1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4], "时间": [10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34], } # U13*(13^4) 使用表推荐的 1、3、4 列(行号从 1 开始) plan_index = [ (1, 5, 9), (2, 10, 4), (3, 1, 13), (4, 6, 8), (5, 11, 3), (6, 2, 12), (7, 7, 7), (8, 12, 2), (9, 3, 11), (10, 8, 6), (11, 13, 1), (12, 4, 10), (13, 9, 5), ] names = list(levels.keys()) rows = [] for k, combo in enumerate(plan_index, start=1): row = {"试验号": k} for name, lv in zip(names, combo): row[name] = levels[name][lv - 1] # 水平号转真实取值 rows.append(row) plan = pd.DataFrame(rows) plan.to_csv("uniform_plan.csv", index=False, encoding="utf-8-sig") print(plan.to_string(index=False))这段代码做的是“水平号 → 真实取值”的翻译,参数只有两个:levels 里的取值列表长度必须等于水平数,plan_index 必须来自使用表推荐列而不是自己拍脑袋挑。第 7 号试验是 (7,7,7),三个因素都取中间水平,这是均匀设计表的一个典型特征——中心点天然被覆盖到一次,正好可以拿来做重复试验的位置。
导出 CSV 之后直接拿去车间或实验室当记录表用,测完把指标列填回来。
4.3 第三步:回归分析,偏回归平方和定主次
结果处理走多项式回归。三因素场景一般先拟合二次模型:常数项、三个线性项、三个平方项、三个两两交互项,共 10 个待估参数。13 次试验减 10 个参数只剩 3 个自由度,这时候全模型是勉强能拟合的,但显著性检验的灵敏度很低——这也是后面避坑章节要展开的一个点。
import numpy as np def build_design(df, factors, quadratic=True, interaction=True): """构造多项式回归设计矩阵,先对因素做中心化编码""" cols, names = [np.ones(len(df))], ["常数"] coded = {} for f in factors: x = df[f].values.astype(float) coded[f] = (x - x.mean()) / (x.max() - x.min()) # 归一化到 [-0.5, 0.5] cols.append(coded[f]); names.append(f) if quadratic: for f in factors: cols.append(coded[f] ** 2); names.append(f"{f}^2") if interaction: for i in range(len(factors)): for j in range(i + 1, len(factors)): a, b = factors[i], factors[j] cols.append(coded[a] * coded[b]); names.append(f"{a}*{b}") return np.column_stack(cols), names def fit_partial_ss(X, y, names): """最小二乘拟合 + 逐项偏回归平方和与 F 值""" beta, *_ = np.linalg.lstsq(X, y, rcond=None) rss_full = float(((y - X @ beta) ** 2).sum()) df_full = len(y) - X.shape[1] out = [] for k, name in enumerate(names): keep = [i for i in range(X.shape[1]) if i != k] b_r, *_ = np.linalg.lstsq(X[:, keep], y, rcond=None) rss_r = float(((y - X[:, keep] @ b_r) ** 2).sum()) ss = rss_r - rss_full # 偏回归平方和 f = (ss / 1) / (rss_full / df_full) if df_full > 0 else np.nan out.append((name, ss, f)) return beta, rss_full, df_full, sorted(out, key=lambda r: -r[1])核心逻辑是:对每一项,把它从模型里拿掉重拟合一次,残差平方和的增量就是这一项的偏回归平方和,增量越大说明该项越不可缺。各因素之间没有相关关系时,偏回归平方和的大小直接体现它对指标影响的重要性,排序结果就是因素主次。参数上要注意 df_full 必须大于 0,否则 F 值算不出来——这也是模型项数不能无限堆的原因。
如果某个二次项或交互项在排序里长期垫底且 F 值很小,就删掉重拟合,用精简后的模型给结论。删项要有节制,一次删一项,删完看整体残差和拟合优度有没有明显恶化。
4.4 第四步:软件环节,建表—安排—分析三段式
课件里的均匀设计软件承担的正是把上面这些步骤串起来的工作。按常规做法,它至少覆盖这几块:均匀设计表库与使用表查询、按因素数与水平数自动推荐列、试验方案生成与导出、试验结果录入、线性与多项式回归、回归显著性检验与偏回归平方和输出、图形化展示。用的时候把参数填清楚就行:
# 软件里需要确认的参数(三因素十三水平案例) config = { "试验次数n": 13, # 与水平数对齐,每个水平做一次 "因素数s": 3, "各因素水平数": [13, 13, 13], # 不等水平时写成不同值,走拟水平法 "选表方式": "按使用表推荐列", "推荐列": [1, 3, 4], # U13*(13^4) 三因素的组合,不要手改成 1,2,3 "结果模型": "二次多项式回归", "显著性水平": 0.05, }最容易被跳过的是“推荐列”这一项。软件默认往往按列顺序取前 s 列,而使用表的推荐列不一定是前 s 列——U13*(13^4) 三因素推荐的是 1、3、4,不是 1、2、3。用错列不会报错,试验照做,软件照样给出回归结果,只是均匀性变差、结论可靠性下降,属于查不出来的那种翻车。
5. 避坑:均匀设计最容易翻车的五个点
这一章按“现象 → 原因 → 解决”写,都是我见过或自己踩过的。
第一坑:直接取前 s 列,偏差悄悄变大。现象是试验做完、回归也出结果,但复现性差,换一批原料结论就飘。原因是没有按使用表选列,随手用了 1、2、3 这类顺序列,点集均匀性明显变差,偏差偏大。解决办法很土:每次建表后对照使用表核一遍列号,把推荐列写进方案文档,软件里手动指定,不要依赖默认值。
第二坑:n 选了 6、12 这类数,列数不够用。现象是三个因素却只能安排两列,软件提示列数不足,或者被迫把两个因素挤到一列。原因是欧拉函数的限制,E(6) = 2、E(12) = 4,非素数非素数幂的 n 列数天然少。解决办法有两条:把 n 调成素数或素数幂(如 9、11、13、16),或者改用星号表 Un*,例如 U6*(6^6) 就有 6 列。
第三坑:拟水平时 n 除不尽 m,水平分组错位。现象是合并后的水平分布明显不均,某个水平出现了 4 次、另一个只出现 1 次。原因是 n 不是 m 的整数倍,分组时余数被塞进了某一组。解决办法是先做整除检查,代码里那句 raise 不是摆设;实在除不尽就调整水平数或试验次数,不要硬合并。
第四坑:硬套线性模型,拟合差就怪试验。现象是回归 R² 很低,残差图有明显弯曲,于是判断“均匀设计不靠谱”。原因是均匀设计丢掉了整齐可比,因素与指标之间往往是非线性关系,线性模型本来就不该拟合得上。解决办法是改用二次或更高阶多项式回归,先看平方项和交互项是否显著,再决定模型形式。
第五坑:13 次试验塞 10 个参数,还加交互项。现象是模型拟合得极好,R² 接近 1,但预测新点全部偏离。原因是自由度耗尽,模型把噪声也拟合进去了,这在均匀设计里特别常见,因为试验次数本来就压得很紧。解决办法是控制模型项数,先拟合主效应加平方项,交互项只在有明显依据时加入;同时留 2 到 3 次验证试验做外部检验,别用训练集自证。
6. 验收与答辩:怎么证明这套表选得对、结论站得住
答辩现场最常被问的两个问题,一个是“你为什么用均匀设计而不是正交设计”,另一个是“你怎么知道这 13 次试验的结果可信”。这两个问题都不该临场编,应该在方案里就留下证据。我一般按下面这张清单自查,每一条都能拿出实物:
| 验收项 | 合格标准 | 留痕证据 |
|---|---|---|
| 方法选型 | 能说清试验次数差异(如 961 次对 31 次)与适用边界 | 方案第 1 页的选型对比段落 |
| 表与列 | 表名、生成向量、使用表推荐列三者一致 | 建表脚本输出 + 使用表截图 |
| 试验安排 | 每因素每水平恰好出现一次,无重复无遗漏 | 导出的 CSV 安排表 + 水平频次统计 |
| 模型 | 项数与试验次数匹配,删项有依据 | 回归结果表、偏回归平方和排序 |
| 验证 | 推荐组合有独立验证试验数据 | 补做的 2 到 3 组验证记录 |
第三条那个“水平频次统计”值得单独说。做法很简单,对安排表每一列做一次计数,13 行 13 水平,每列每个水平必须恰好出现 1 次;混合水平表则检查每组出现次数是否等于 n/m。这一步三十秒能做完,却能把大部分低级错误挡在试验之前。
关于验证试验,我的建议是把它写进方案而不是当成可选项。均匀设计的试验点没有重复,纯误差无从估计,你必须有一份独立数据来说明模型不是拟合噪声。挑验证点的原则:优先取回归模型预测的最优点,其次取中心点,两者各做一次重复。如果预测最优点的实测值落在模型给出的置信区间内,这套方案就站得住;如果偏离很大,先检查模型项数是否过多,再去怀疑试验本身。
最后说一句教训。早年做一版三因素方案,我图省事用了软件默认的前三列,13 次试验做得干干净净,回归 R² 也有 0.93,汇报时很漂亮。后来换批次复现,最优点完全跑偏,回头查才发现使用表推荐的是 1、3、4 列——序号差一位,偏差差一截,前面的功夫全打了折。从那以后我每次建完表,都强制走一遍“对使用表、数水平频次、留验证点”这三步,哪怕时间再紧也不跳。希望帮到你。
本文还有配套的精品资源,点击获取