正交实验方差分析:手算流程与SPSS多因素方差分析对照

发布时间:2026/10/1 16:29:06
正交实验方差分析:手算流程与SPSS多因素方差分析对照 1. 正交实验做完以后为什么还得回头做方差分析正交实验设计这套东西做过配方、工艺、材料、农业、化工的人都不陌生。用一张正交表把三因素三水平本来要做的 27 组试验压缩到 9 组用最少的试验次数把各因素各水平的搭配都覆盖一遍这是它的核心价值。但真正让很多人卡住的地方不是怎么排表而是跑完这 9 组之后我怎么知道哪个因素的差异是真差异哪个只是我手抖、炉温波动、称量误差搞出来的噪声。这就轮到方差分析出场了。我这篇东西想聊的是一件很具体的事正交实验的数据拿到手之后怎么用手算把方差分析表从头到尾算一遍搞清楚每一列平方和是怎么来的、自由度怎么分、误差项从哪儿来然后再把同一批数据搬进 SPSS用一般线性模型里的单变量过程做多因素方差分析并且验证 SPSS 的输出跟我手算的结果是不是对得上。整篇的算例是一张 L9(3⁴) 正交表、三个因素三个水平、一个空列数据我做过的处理都写清楚你可以直接照着复现。适合谁看刚接触试验设计的学生、做工艺优化的工程师、写论文要出方差分析表的研究生、以及用 SPSS 但从没搞明白Ⅲ型平方和到底是什么的人。不需要你有很深的统计背景但最好知道均值、方差、正态分布这几个基本概念。核心关键词就几个正交实验、方差分析、SPSS、多因素方差分析。这四个词贯穿全文我不会跑偏去讲别的。1.1 极差分析能告诉你什么又会漏掉什么排完正交表、做完试验、把数据填进去绝大多数人第一步都是算 K 值和极差 R。这一步叫极差分析也有人叫直观分析。做法很朴素把某个因素在同一水平下做过的所有试验结果加起来除以次数得到该水平的均值 K然后取最大值减最小值得到极差 R。R 越大说明这个因素在水平之间挪动时指标变化越剧烈通常就认为它越重要。这一步的价值在于它快、直观、不需要任何分布假设还能直接告诉你每个因素的优水平是哪个拼起来就是一个看起来最优的组合。但它有三个绕不过去的短板这也是为什么光有极差分析不够第一个短板是它没法把因素效应和试验误差分开。极差 R 里混着两样东西因素水平变化带来的真实差异还有试验本身的随机波动。如果误差本身就大得离谱R 再大也不能说明因素真的有效。极差分析没有任何机制去衡量这个 R 相对于噪声来说算不算大。第二个短板是它给不出显著性判断。你没法说A 因素在 0.05 水平上显著只能说A 因素极差最大。论文里审稿人最常问的就是这句话你的显著性检验呢没做方差分析这个表格就是残缺的。第三个短板是它无法量化每个因素的贡献占比。R 只能排序不能告诉你 A 解释了总变异的百分之多少。而贡献率在做成本取舍的时候非常关键——如果一个因素只贡献 3%但它换水平要涨 20% 的成本那完全可以不动它。1.2 方差分析解决的是信不信得过的问题方差分析的核心思想只有一句话把数据的总波动拆开看每个因素分到的波动份额够不够大。总波动用总平方和 SS_T 衡量它等于每个观测值减去总均值的平方之和。方差分析要做的事就是证明这个 SS_T 可以被精确地拆成若干块——A 因素一块、B 因素一块、C 因素一块、误差一块而且这几块加起来正好等于 SS_T。这个正好等于不是近似的是数学上恒等的这一点跟回归里的平方和分解是同一个道理。拆完之后每个因素的平方和除以自己的自由度得到均方 MS再用它的 MS 除以误差的 MS 得到一个比值 F。F 的含义很直白这个因素造成的平均波动是误差造成的平均波动的多少倍。如果 F 接近 1说明这个因素跟随机噪声没区别F 越大越有底气说它是真效应。再拿 F 去查 F 分布表就得到了 p 值也就是如果这个因素其实完全没用我观察到这么大差异的概率有多大。跟极差分析相比方差分析多出来的能力是误差有了明确的来源和量级显著性有了统计学依据贡献率可以直接从平方和算出来。这就是它值得多花半小时的原因。1.3 空列当误差正交实验方差分析的核心惯例这里有个新手最容易懵的点正交实验里误差平方和从哪来如果是有重复的试验——也就是每个试验号重复做了 n 次——那么误差平方和可以直接算组内平方和这很干净叫纯误差。但很多正交实验为了省成本每个试验号只做一次。这时候没有组内变异可算怎么办答案是用空列。正交表的列数通常比因素数多。比如三因素三水平如果选 L9(3⁴)表里有 4 列但你只有 3 个因素多出来的那一列不安排任何因素就叫空列。空列上各水平的差异理论上不来自任何真实因素只来自误差和未考虑到的交互作用所以它的平方和就可以拿来当误差平方和用。这个惯例有一个隐含前提空列的平方和应该相对最小。如果你排了两个空列结果其中一个空列的平方和比某个真实因素还大那就要警惕了——很可能两个因素之间存在交互作用交互效应被混进了空列里这时候直接用空列当误差会把误差估计得偏大检验变得迟钝严重的还会得出错误结论。我一开始做正交实验的时候就不理解为什么非要留一列空着觉得多排一个因素不好吗后来才明白那一列空着不是浪费是留出位置来估计噪声。没有噪声估计整个方差分析就无从谈起。如果实在因素太多、列不够用退而求其次的做法是把平方和最小的那一列因素并入误差这叫合并误差pooling但这么做的代价是损失一个因素的检验能力而且必须在报告里写清楚不能偷偷合并。2. 手工算一遍L9(3⁴) 的完整方差分析流程理论说再多不如拿一组数从头算到尾。这一节我用一张标准的 L9(3⁴) 表三个因素 A、B、C各三水平第四列留空当误差指标值越大越好。2.1 试验方案与数据记录L9(3⁴) 的标准排布是这样的每一行是一次试验数字代表取第几个水平试验号ABCD(空列)指标 y111115221222603133368421236652231726231272731327683213789332186这张表有个特点任意两列之间各水平组合恰好出现且只出现一次这就是正交性也是后面平方和可以干净地分解的根本原因。第四列 D 我们故意不安排因素留着当误差来源。先做极差分析把各水平的和与均值算出来A 因素第 1、2、3 号试验归 A1和 526068180均值 604、5、6 号归 A2和 667272210均值 707、8、9 号归 A3和 767886240均值 80。极差 R_A 80-60 20。B 因素1、4、7 号归 B1和 526676194均值 64.6672、5、8 号归 B2和 607278210均值 703、6、9 号归 B3和 687286226均值 75.333。极差 R_B 10.667。C 因素1、6、8 号归 C1和 527278202均值 67.3332、4、9 号归 C2和 606686212均值 70.6673、5、7 号归 C3和 687276216均值 72。极差 R_C 4.667。D 空列1、5、9 号和 527286210均值 702、6、7 号和 607276208均值 69.3333、4、8 号和 686678212均值 70.667。极差 R_D 1.333。极差排序是 A B C D而且空列的极差确实最小说明这张表排得没问题没有明显的混杂。现在进入方差分析。2.2 平方和分解从校正项到各因素平方和方差分析的第一步是算校正项 CT有的教材写成 C 或 CF它等于总和的平方除以总试验次数CT (Σy)² / n 630² / 9 396900 / 9 44100这个数其实是如果所有试验结果都等于总均值 70那么 9 个数的平方和会是多少——它是后面所有平方和的基准线。接着算总平方和 SS_T它等于各观测值平方和减去 CTΣy² 52²60²68²66²72²72²76²78²86² 44908SS_T 44908 - 44100 808这个 808 就是全部数据的总波动接下来要把它分给四个来源。某因素的平方和公式是把该因素各水平的数据之和平方除以每个水平出现的次数求和之后再减去 CT。每个水平出现 3 次所以SS_A (180² 210² 240²) / 3 - 44100 (32400 44100 57600) / 3 - 44100 134100 / 3 - 44100 44700 - 44100 600SS_B (194² 210² 226²) / 3 - 44100 (37636 44100 51076) / 3 - 44100 132812 / 3 - 44100 44270.667 - 44100 170.667SS_C (202² 212² 216²) / 3 - 44100 (40804 44944 46656) / 3 - 44100 132404 / 3 - 44100 44134.667 - 44100 34.667SS_D(空列) (210² 208² 212²) / 3 - 44100 (44100 43264 44944) / 3 - 44100 132308 / 3 - 44100 44102.667 - 44100 2.667验算一下600 170.667 34.667 2.667 808正好等于 SS_T。这说明分解没有算错。这一步一定要验算它是整个流程里最容易出错也最容易被忽略的检查点。我自己刚开始做的时候有一次把一个水平的和抄错了一位数结果四个平方和加起来比 SS_T 多出两百多愣是没发现后面 F 值全错。2.3 自由度分配与误差项的确定平方和不能直接比大小必须除以各自的自由度变成均方之后才有可比性。自由度分配遵循两条规则总自由度f_T n - 1 9 - 1 8某因素自由度f 水平数 - 1 3 - 1 2所以 f_A f_B f_C f_D 2四个加起来正好是 8跟总自由度对上了。这种情况说明表里没有任何剩余的自由度误差只能靠空列来提供。如果一个因素的某个水平因为数据缺失没做自由度就会乱整个表就废了。这里有一个关键判断误差项到底用谁。本例中唯一能当误差用的就是空列 D所以 SS_e SS_D 2.667f_e 2。注意如果你的正交实验每号做了重复试验误差平方和应该是空列平方和 纯误差平方和自由度也是两者相加。只把空列当误差会低估误差方差导致 F 值虚高、把不显著的因素判成显著。这是很常见的错误做法。另外再强调一遍合并误差的规则只有当某个因素的均方明显小于误差均方也就是 F 1并且有专业上的理由认为它确实没影响时才可以考虑把它并入误差。合并之后自由度变大检验更灵敏。但这次我们的例子不合并因为 C 的 F 值并不小。2.4 F检验、显著性判定与贡献率均方 MS 平方和 / 自由度F 因素的 MS / 误差的 MS变异来源平方和 SS自由度 f均方 MSF 值A6002300225.0B170.667285.33364.0C34.667217.33313.0误差(D)2.66721.333—总和8088——接下来查 F 分布表的临界值。误差自由度是 2因素自由度也是 2所以查的是 F(2, 2)F₀.₁₀(2,2) 9.00F₀.₀₅(2,2) 19.00F₀.₀₁(2,2) 99.00对照一下AF 225.0 99.00在 0.01 水平上极显著标记 **BF 64.0 19.00 但 99.00在 0.05 水平上显著标记 *CF 13.0 9.00 但 19.00在 0.05 水平上不显著只在 0.10 水平上边缘显著还有一个很有用的指标叫贡献率用某因素的平方和除以总平方和A 的贡献率 600 / 808 74.26%B 的贡献率 170.667 / 808 21.12%C 的贡献率 34.667 / 808 4.29%误差贡献率 2.667 / 808 0.33%从贡献率能一眼看出总变异里有四分之三是 A 贡献的B 占两成C 只占不到 5%误差几乎可以忽略。这个图景跟 F 检验的结论完全一致。不过这里必须坦白一句误差贡献率只有 0.33%这个数字偏小得不真实。它反映的是这份数据里空列的波动实在太小了。误差自由度只有 2检验的灵敏度其实很差——这也是为什么用空列当误差的正交实验方差分析结论往往比较软。真正稳妥的做法是加重复试验把纯误差补进来把 f_e 提上去。3. 把这套数据搬进SPSS多因素方差分析实操手算的意义在于让你理解每一列数字的来源但日常干活不可能每次都手算。SPSS 的多因素方差分析一般线性模型 → 单变量是标配工具。下面我把同一批数据搬进 SPSS操作步骤和结果对照都写清楚。3.1 数据录入长表结构怎么搭SPSS 做多因素方差分析用的是长表结构一行代表一次观测一列代表一个变量。所以上面那 9 行数据要录成这样行号ABCy111152212260313368421266522372623172731376832178933286几个录数据的细节很多新手都栽在这上面水平编号要用数字不要用 A1、A2 这种文本。虽然 SPSS 允许字符串变量但方差分析里字符串只会被当成名义变量而且排序容易乱。用 1、2、3 最省事。值标签Value Labels要加上。把 1 标成低温、2 标成中温、3 标成高温输出表格里直接显示中文省得回头对照片。变量测量尺度A、B、C 设成名义y 设成标度。设错了不会报错但有些过程会受影响。提示如果你之前在 SPSS 里用过 数据 → 拆分文件Split File一定要先关掉选分析所有个案不创建组。这个功能一旦开着后续所有分析都会按分组变量分别运行你会得到几组独立的结果而不是一个总的方差分析表。我见过不止一个人因此怀疑软件坏了。3.2 一般线性模型→单变量的菜单逐项设置路径是分析 → 一般线性模型 → 单变量Analyze → General Linear Model → Univariate。这是 SPSS 里做多因素方差分析的主入口同级别还有多变量多个因变量和重复测量同一个对象多次测量别点错。进去之后的设置因变量框放 y。这里只能放一个连续变量。如果你有多个指标要么分几次做要么用多变量过程。顺便说一句很多人最开始接触 SPSS 是拿它做聚类分析或者相关性分析那些过程对因变量数量没这么挑剔换到方差分析就容易不适应。固定因子框放 A、B、C。这里就是前面说的关键操作D 不放进去。因为 D 是空列我们要让它的变异自动落到残差里正好跟手算里的误差项对应。如果你把 D 也放进去SPSS 会把它当成第四个真实因素来检验误差平方和就变成 0整张表算不下去。为什么不放 D 就等于把 D 当误差因为 SPSS 的残差平方和 校正后总平方和 - 模型解释的平方和而模型只包含 A、B、C 三个因素所以剩下没被解释的部分自然就是 D 那一列的平方和。这个逻辑跟手算里SS_T 减去三个因素平方和等于误差平方和是完全一样的。模型按钮点开选设定还是全因子本例只有主效应选设定然后把 A、B、C 三个主效应移进模型或者直接选全因子也行因为三个因素的全因子模型就包含主效应和所有交互项而 L9 表没有任何自由度留给交互SPSS 会自动跳过。如果要做交互就必须用更大的正交表见第 4 节。对比按钮一般不用动默认无。事后比较按钮把 A、B、C 移进去勾选 LSD 和 Duncan。但注意——本例的误差自由度只有 2事后多重比较几乎没有功效输出的结果意义不大。这也是我一直强调要加重复试验的原因。选项按钮里有几个必勾的描述统计给出各水平组的均值、标准差、样本量效应量估计输出偏 Eta 方方差齐性检验Levene 检验残差图、正态概率图用来做模型诊断参数估计需要写回归系数的时候用观测功效看检验功效够不够设置完点确定结果就出来了。3.3 输出表格逐行对照SPSS结果与手算是否对得上SPSS 输出的核心表格叫主体间效应检验Tests of Between-Subjects Effects。对应到我们的数据Ⅲ型平方和那一列应该是来源Ⅲ型平方和自由度均方F显著性校正模型805.3336134.222100.667.010截距44100.000144100.00033075.000.000A600.0002300.000225.000.004B170.667285.33364.000.015C34.667217.33313.000.071误差2.66721.333——总计44908.0009———校正后总计808.0008———逐项对一下就明白了校正模型的平方和 600 170.667 34.667 805.333等于三个因素平方和之和自由度 6 也是 222。误差平方和 2.667正好等于我们手算的空列 D 的平方和自由度 2。校正后总计808跟手算的 SS_T 一模一样。总计44908就是我们前面算的 Σy²。截距那一行对应 CT也就是校正项只是 SPSS 用的是未校正的基准一般不解读它。再看 F 值和显著性A 的 F 225.000显著性 .004B 的 F 64.000显著性 .015C 的 F 13.000显著性 .071。这三个 p 值跟我手算的结论完全对应——A 极显著、B 显著、C 只在 0.10 水平边缘显著。手算和 SPSS 对上了说明两边的理解和设置都没问题。如果你用的是 SPSS 的中文版表格标题可能是主体间效应检验英文版是 Tests of Between-Subjects Effects。不同版本的界面措辞会有细微差异但表格结构是一致的。3.4 多重比较、效应量与统计功效的补充设置除了主表还有几块输出值得看。参数估计会给出每个水平的回归系数以最后一个水平为参照。比如 A 因素A3 会被设成参照系数 0A1 的系数是 -20A2 的系数是 -10。翻译成人话就是A1 比 A3 平均低 20 个单位A2 比 A3 平均低 10 个单位。这种以末水平为基准的编码方式初学者容易看晕建议直接看描述统计里的均值更直观。效应量里的偏 Eta 方本例 A 是 600/(6002.667) 0.9955B 是 0.9847C 是 0.9286。这些数值高得离谱原因是误差方差太小。效应量这个东西要结合领域经验看心理学里 0.14 就算大效应工程实验里 0.9 也常见因为仪器精度高、干扰少。不要拿其他领域的标准来套自己的数据。观测功效那一列本例 A 和 B 接近 1C 大概是 0.3 左右。功效低意味着即使 C 真的有中等效应这次试验也可能测不出来。这是误差自由度太小的直接后果。方差齐性检验的 Levene 检验本例 F 的显著性如果大于 0.05说明各组方差没有显著差异满足方差分析的前提。样本量这么小的情况下这个检验本身也不灵敏只能当参考。残差图和正态概率图用来目视检查残差是否近似正态、有没有明显的喇叭形或弯曲趋势。9 个点看不出太多东西但习惯要养成——它是发现异常值的唯一途径。4. 结果解读、模型诊断与决策落地算出 F 值和 p 值只是中间步骤真正难的是接下来怎么办。这一节讲三件事显著性怎么解读、前提假设怎么查、以及怎么把统计结论变成实际决策。4.1 显著与不显著分别意味着什么显著的准确含义是在当前误差水平下这个因素不同水平之间的差异大到不太可能纯由随机波动解释。它不等于这个因素很重要也不等于效应很大。样本量足够大的时候一个微不足道的差异也能显著。不显著的准确含义是没有足够证据说这个因素有影响。它不等于这个因素没用。可能它真的没用也可能误差太大把它的信号盖住了或者水平间隔设得太窄导致效应本来就不大。这就是absence of evidence is not evidence of absence。具体到本例A 极显著且贡献率 74%毫无疑问是主控因素优化时必须优先调它而且三个水平之间差异大值得进一步细化水平间隔做第二轮试验。B 显著贡献率 21%属于次重要因素同样要纳入优化方案。C 不显著贡献率 4.29%但它的均方并不比误差小太多F 13。这时候怎么处理我的做法是不直接删掉而是看成本。如果 C 换水平不增加成本、不延长周期那就按均值最好的水平取如果换水平代价很高就固定在成本最低的那个水平在报告里说明该因素在 0.05 水平上不显著出于成本考虑固定于 C1。这种处理方式既尊重统计结论也尊重工程现实。空列 D 的贡献率 0.33%说明这一列基本没混进什么东西本次试验的表排得比较干净。4.2 三个前提假设的检查方法方差分析的 F 检验依赖三个假设任何一个被严重违反p 值就不可信。正态性要求每一组的残差观测值减去该组均值服从正态分布。小样本下没法严格验证可以看正态概率图或者对残差做 Shapiro-Wilk 检验。如果数据明显偏态可以试试对因变量取对数或开方再做分析。工程数据里成分百分比、收率这类指标经常需要转换。独立性要求每次试验之间互不影响。这条无法用统计检验验证只能靠试验设计保证。常见的违反场景包括同一批原料按顺序做完 9 组试验、同一台设备连续作业导致漂移、操作员越做越熟练。解决办法是随机化试验顺序。别小看这一步我见过太多按 1 到 9 顺序做下来的正交实验最后一列方差特别大就是因为有系统性的时间趋势混在里面。方差齐性要求各组的误差方差相等。看 Levene 检验的显著性大于 0.05 就可以接受。如果严重不齐可以对因变量做变换或者改用 Welch 校正的方差分析。注意三个假设里正态性和方差齐性对结论的影响相对温和独立性被破坏才是最致命的因为它会让误差估计完全失真而且事后无法补救。所以试验顺序随机化这一步做实验的时候就要想好不能事后补。4.3 交互作用、重复试验与更复杂的安排前面一直避开了一个话题交互作用。交互作用的定义是一个因素的效应大小依赖于另一个因素取什么水平。举个例子温度对收率的影响在低压下很小在高压下却很大——这就是温度和压力有交互。这种效应在正交实验里非常常见但用 L9(3⁴) 是查不出交互的因为三个主效应已经占满了全部 8 个自由度一列空余都没有。要估计交互有三条路第一条换更大的正交表。比如三因素三水平要估计两两交互可以用 L27(3¹³)把交互作用按交互作用表排到指定列上。代价是试验次数从 9 涨到 27成本翻三倍。第二条用二水平的 L8(2⁷)。这张表有个很妙的特点任意两列的交互作用恰好落在第三列上所以可以专门留一列来放两因素交互。做筛选实验时这个设计很常用。第三条加重复试验。每个试验号重复 n 次好处有三一是能算纯误差把误差自由度从 2 提到 9 甚至更多检验灵敏度大幅提升二是能顺便检查试验的重现性三是即使不排交互列重复数据也能帮你判断空列里到底有没有混杂。代价同样是成本翻倍。我自己做工业化项目时一般的节奏是第一轮用 L9 做主效应筛选不留重复第二轮针对前两个最重要的因素用全因子设计做精细优化同时每个点做两次重复。这样既省了首轮成本又保证了关键结论的可靠性。另外提一个容易忽略的点重复试验和重复测量是两回事。重复试验是对同一个试验条件重新做一遍得到的是纯误差重复测量是对同一个样本测多次那是测量误差。前者的自由度可以进误差项后者不行。SPSS 里的重复测量过程处理的是后者别用错了。4.4 从统计结论到工艺参数怎么定最优组合把统计结论翻译成可执行的参数通常按这个顺序走第一步确定纳入优化的因素。显著的因素必须纳入。边缘显著的因素比如本例的 C视成本决定。完全不显著且 F 接近 1 的因素可以固定在一个方便的水平上不用管它。第二步为每个纳入的因素选优水平。如果指标越大越好就选均值最大的那个水平越小越好就选最小的。本例因子的最优组合是 A3B3C3理论上预测指标约为 86 附近实际上第 9 号试验正好就是 A3B3C2实测值 86已经接近三水平全优的状态。第三步考虑交互和实际约束。如果两个因素之间存在交互各自选最优水平不一定是最优组合因为它们的效应不独立。这时候要看交互表或者做验证试验。另外还要考虑操作窗口——比如 A3 是温度 120 度但你设备上限只能到 110 度那再优也没法用。第四步做验证试验。这一点特别重要也是很多论文被我挑出问题的原因。方差分析给出的最优组合一定要重新做试验验证。原因有两个一是正交实验的 9 个点只是全因子 27 个点的一部分最优组合可能根本不在做过的 9 个点里是预测出来的二是指标值存在随机波动预测值和实测值之间通常有差距。验证试验一般做 2 到 3 次看均值是否落在预测区间内。第五步计算预测区间。粗略的做法是用最优组合下的预测值加减一个误差范围。更严谨的做法要按正交实验的预测值置信区间公式来算涉及误差均方和有效重复数。做工程决策时如果预测值的置信下界都还比现有水平高那就很有底气。5. 常见问题速查与踩坑记录这一节把我在实际项目里遇到过的问题整理成表遇到时可以直接对照排查。5.1 高频报错与异常场景速查现象最可能的原因处理办法平方和加起来对不上 SS_T某水平的和抄错或水平归属搞错逐行核对原始数据先验算各水平和再加总空列的 SS 比某个因素还大存在未考虑的交互作用或数据有异常值检查交互作用表考虑换更大正交表检查异常点SPSS 误差自由度为 0F 算不出来把所有列都放进了固定因子框或每个试验号只有一次观测且没有空列把空列从固定因子中移除或者加重复试验F 值大得离谱显著性全是 .000误差被低估没算纯误差或者数据录入时把同一行复制了多次补上重复试验的组内平方和检查数据行数所有因素都不显著误差自由度太小f_e 2检验没功效或者水平间隔设得太窄加重复试验提高 f_e重新设计水平间隔事后比较表格出不来某个因素只有一个水平或者误差自由度为 0检查因素的水平数设置输出结果跟预期分组不一致数据 → 拆分文件还开着关闭拆分文件选分析所有个案显著性 p 值是 .000只是小于 0.0005 的显示方式不是真的 0报告时写 p 0.001主效应和手算的不一样模型里多放了空列或者交互项被自动纳入模型设定里明确只放主效应5.2 我自己踩过的几个坑坑一把空列也拖进固定因子框。第一次用 SPSS 做正交实验方差分析我想着表格里 4 列都录进去了那就 4 个都放进去吧结果误差平方和变成 0F 值全是缺失输出表格一片空白。折腾了一下午才明白空列的作用就是当误差放进去等于把误差消灭了。坑二以为显著就等于重要。有一次做配方优化某个因素 p 0.02非常显著我兴冲冲地把它定为主控因素。结果后来算贡献率发现它只占总变异的 6%——显著是因为误差极小不是因为它效应大。后来才知道显著性和效应量是两件事报告里两个都要写。坑三忽略试验顺序带来的漂移。一批试验做下来用了三天第一天温度低、第三天温度高而第三天恰好做的都是某个因素的高水平。结果这个因素看起来特别显著实际上是环境漂移造成的。随机化试验顺序这个要求不是形式主义是实打实的防线。坑四直接照搬别人的水平间隔。看到文献里用 60、70、80 三个水平我也用 60、70、80。但我的反应体系跟人家完全不同结果三个水平之间的差异全被误差淹没了方差分析一个都不显著。后来把间隔拉开到 50、70、90效应立刻就出来了。水平间隔要根据预试验确定不能抄。坑五忘了做验证试验。有一批数据算出来的最优组合是 A3B2C1但这个组合在 9 次试验里根本没做过。我当时直接把预测值写进了报告结果复现的时候实测值差了将近 8%客户当场质疑。从那以后只要最优组合不在试验点里我一定补做验证试验哪怕是深夜加做。坑六用错了平方和类型。SPSS 的主体间效应检验里默认输出的是Ⅲ型平方和。对于正交平衡设计每个格子样本量相同Ⅰ型、Ⅱ型、Ⅲ型的结果是相同的随便用哪个都对。但如果数据不平衡比如有缺失、某些组合只做了一次三种类型的结果就会不同这时候必须明确说明用的哪一种而且要知道Ⅲ型在不平衡设计下的解释比较复杂。做正交实验的好处之一就是天然平衡这个问题一般不会遇到——这也是正交表除了省试验之外的一个隐藏优势。坑七以为重复数越多越好。重复确实能提高功效但前提是每次重复是真正独立的。如果 3 次重复是在同一批原料、同一时段、同一操作员下连续做完的那这 3 次之间的变异只反映很小的测量误差会把纯误差估小进而让 F 值虚高。真正有价值的重复是在不同批次、不同时段之间随机穿插的重复。最后说一个我自己的体会正交实验的方差分析看起来是一堆公式但真正决定成败的是前面那一步——表有没有排对、试验有没有随机化、误差有没有留出位置。运算本身交给 SPSS 也只是点几下的事但如果前面的设计有漏洞后面算得再漂亮也是自欺欺人。我的习惯是动手做实验之前先在纸上把空列画出来把误差自由度数一遍如果 f_e 小于 4我就知道这次检验的功效会很有限要么接受这个局限并如实报告要么干脆加重复。这个习惯帮我省下了不少返工的时间。