介绍
欢迎回到我们的空间填充设计系列!在第一部分中,我们探讨了空间填充设计的基本原理和常见类型。现在,我们将深入比较研究的核心:建立一个稳健的框架,以便在不同场景下评估和比较这些设计。
比较研究框架
为了公平地评估空间填充设计,我们需要标准化的条件和有意义的指标。我们的方法从多个性能维度评估设计。
- 回复
空间覆盖率指标/均匀性响应
- 偏差:用于衡量与理论均匀分布的偏差。目标是最小化设计生成的分布与每个因素的均匀分布之间的差异。偏差响应可以评估设计点重新分布的空间覆盖率和均匀性:偏差越低,设计点的重新分布越均匀(实验空间的覆盖率也越高)。
在空间填充平台中输入因素并选择设计类型后,即可在设计诊断面板中找到差异值(图 1)。
图 1:空间填充设计面板。快速柔性填充设计(双因素,20 次运行)的设计诊断。设计生成后,在设计诊断面板中显示偏差值(红色)和 MaxPro 值(蓝色)。
为了更好地理解差异值及其与设计点之间距离的关系,让我们比较两种空间填充设计——拉丁超立方和快速灵活填充——它们针对六个因素创建,每个因素运行 60 次(图 2)。

图 2:快速灵活填充和拉丁超立方设计中点之间最小距离的可视化。
比较两种设计方案中点之间的最小距离,我们可以清楚地看到,拉丁超立方设计方案的最小距离值分布非常窄。这一结果表明,对于这种特定的维度和点数,拉丁超立方设计方案比快速灵活填充设计方案具有更好的差异性,因为在这种设计方案下,设计点分布均匀,从而能够获得更稳定的最小距离。
投影属性响应
- MaxPro:评估投影到所有可能的因子子集上的空间填充特性。目标是最小化 MaxPro 准则,以确保点之间的距离在所有维度上都最大,从而保证设计点在低维空间中的良好投影。因此,成功最小化此准则的唯一方法是确保任何两个点在任何维度上都不具有相似的坐标值。
在空间填充平台中输入因素并选择设计类型后,即可在设计诊断面板中找到 MaxPro 值(图 1)。
对于球体堆积设计,MaxPro 统计量未定义,因为点在一个维度上可能具有相同的值。
为了更好地理解 MaxPro 值及其与设计投影特性的关系,让我们比较两个空间填充设计——拉丁超立方和快速灵活填充——这两个设计分别针对六个因子进行了 60 次运行。
如果我们把这两个空间填充设计的设计点投影到二维平面上,就可以比较投影的差异(图 3)。
图 3:两种空间填充设计(六因子,60 次运行)的投影特性可视化。请注意,在拉丁超立方设计中,Waern 连接线如何根据设计点的实际邻近性连接所有设计点,但在快速灵活填充设计中则不然。
对于左侧的拉丁超立方设计,设计点之间的距离均匀且较小。这种较小且均匀的设计点距离减少了点在所有投影上的分布,从而提高了 MaxPro 准则值。对于右侧的快速柔性填充设计,设计点之间的距离不均匀且较大,这对应于这些点在投影到更少维度时发生坍塌的风险较低。
在考虑不同样本量时,差异值和 MaxPro 值呈显著负相关。差异值极低的设计可能具有较高的 MaxPro 值:由于样本量大,设计点之间的距离较小,导致这些点在低维空间中更容易彼此靠近。因此,差异值和 MaxPro 准则主要用于比较样本量相同的不同设计。
设计生成复杂性
- HP Time():HP Time() 函数返回一个以微秒为单位的高精度时间值。由于该函数只有在与另一个 HP Time() 值结合使用时才有用,因此它被包含在设计生成脚本中。此示例创建了一个球体堆积设计,针对三个因素进行了 60 次运行,生成时间的记录和显示是两个 HP Time() 函数共同作用的结果:
t1 = HP Time();
DOE(
Space Filling Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Continuous, -1, 1, "X1", 0 ),
Add Factor( Continuous, -1, 1, "X2", 0 ),
Add Factor( Continuous, -1, 1, "X3", 0 ),
Set Random Seed( 138892707 ),
Space Filling Design Type( Sphere Packing, 60 ), Simulate Responses( 0 ),
Set Run Order( Randomize ), Make Table}
);
t2 = HP Time();
Show( t2 - t1 ); The generation time (t2-t1) can be seen in the log (Figure 4).

图 4:脚本的日志结果,显示生成时间。
A transformed response column Time (s) is used for the response, as the units (seconds) are much more understandable and comparable between designs and enable the design generation time to be assessed more easily. The column Time (s) is created with the following formula:
Time (s) = HP Time (µs) / 1000000
- 因素
由于我们想要涵盖空间填充设计生成过程中最大的差异,我们需要具体说明有助于在设计生成方法、维度和点密度方面创建多样化设计的不同因素。
- 设计类型:正如本系列第一篇文章所述,空间填充设计存在多种设计生成方法,针对不同的应用场景和优势,它们在分布或几何方面各有侧重。在本研究中,我们将探讨最常用的空间填充设计生成方法,包括均匀填充、球体堆积、拉丁超立方填充和快速柔性填充。
- 维度(因子数量):随着维度(因子数量)的增加,空间填充设计的性能可能会下降,因为要保持每个因子的均匀分布和良好的投影特性变得更加复杂和耗时。为了研究维度对所列不同响应的影响,我们从三个层面研究维度:
- 样本量变化(运行次数/因子):默认情况下,JMP 提供的每因子运行次数的默认值为 10,这可以保证良好的设计性能并确保易于建模。然而,根据实验预算的不同,空间填充设计的性能可能会有很大差异,因为对于较少的设计点,要保持每个因子的均匀分布或良好的投影特性可能会变得非常复杂。为了解决这个问题,我们测试了多种样本量:
- 小的每个因素有三个设计点,这种情况类似于经典的中心复合设计 (CCD),其中点的重新分配使得每个因素在其最小值、中间值和最大值处进行测试。
- 中等的每个因素 20 个设计点,接近 JMP 默认的每个因素 10 个设计点的比例。
- 大的每个因素有 100 个设计点,这满足了构建高预测模型的需要,因为设计空间中的点密度很高。
- 实验步骤:设计选择
我们希望采用一种非常简单的设计,以便于比较不同因子水平。此外,由于设计生成种子并非固定不变,我们希望评估算法变异性,并将这种随机变异性与任何因子效应区分开来。同时,某些组合对于特定的设计配置可能难以实现,因此我们希望设计能够即使在存在异常值或缺失值的情况下也能进行稳健的分析。
基于以上所有原因,我们选择全因子设计。在 JMP 中创建全因子设计非常简单直接:在 DOE 菜单中选择“经典” ,然后选择“全因子设计” (图 5)。

图 5:用于创建全因子设计的 DOE 菜单。
根据前面列出的响应和因素定义,我们可以创建我们的设计来评估和比较不同的空间填充配置(图 6)。

图 6:创建全因子设计以评估和比较不同的空间填充方案。
由于全因子设计可以执行所有可能的因子水平组合,因此需要 36 次运行 (4x3x3)。生成完整析因设计的脚本如下:
DOE(
Full Factorial Design,
{Add Response( Minimize, "Discrepancy", ., ., . ),
Add Response( Minimize, "MaxPro", ., ., . ),
Add Response( Minimize, "Time", ., ., ., ., ., "s" ),
Add Factor(
Categorical,
{"Fast Flexible", "Uniform", "Sphere Packing", "Latin Hypercube"},
"Type",
0
), Add Factor( Continuous, {3, 6, 9}, "Factors", 0 ),
Add Factor( Continuous, {3, 20, 100}, "Ratio exp/factors", 0 ),
Set Random Seed( 31068506 ), Make Design, Simulate Responses( 0 ),
Set Run Order( Randomize ), Make Table}
);
使用此脚本获得的数据表如图 7 所示。
图 7:全因子设计表
响应评估
对于设计中的每一行,都会创建一个空间填充设计,并指定相应的参数值:连续因子数、每个因子的点数和设计类型。所有设计配置的偏差值和 MaxPro 指标值都会被记录。
分析框架
为了分析这项关于空间填充设计的综合研究结果,我们考虑了两种方法:
<CODE class=" language-jsl"><CODE class=" language-jsl">
<UL>
<LI><STRONG><SPAN>建模方法</SPAN></STRONG><SPAN><SPAN>建模方法是在设计生成后,使用数据表中附加的模型脚本来实现的。由于研究设计是全因子设计,因此该脚本中指定的默认先验模型包含所有主效应(设计类型、因子数量和每个因子的实验比例)以及所有双因子交互作用(图 8)。<BR /><BR /></SPAN></SPAN><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="FitModel1.svg" style="width: 888px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="FitModel1.svg" style="width: 888px;"><span class="lia-inline-image-display-wrapper" image-alt="FitModel1.svg" style="width: 888px;"><img src="https://us.v-cdn.net/6038925/uploads/images/86065i17D7A66B8EE3BEA4/FitModel1.svg" width="888" height="499" role="button" title="FitModel1.svg" alt="FitModel1.svg" /></span></SPAN></SPAN><BR /><EM style="font-size: 1em;">图 8:默认拟合模型启动。</EM><EM style="font-size: 1em;">选中<STRONG>“分别拟合”</STRONG>选项,以便为每个响应变量拟合单独的模型。</EM><BR /><EM style="font-size: 1em;"><EM style="font-size: 1em;"><BR /></EM></EM> <P><SPAN>由于连续因子使用了三个水平,因此修改了建模脚本以考虑连续因子的二次效应引起的曲率效应(图 9)。<BR /></SPAN></P> <SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="FitModel2.svg" style="width: 889px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="FitModel2.svg" style="width: 889px;"><span class="lia-inline-image-display-wrapper" image-alt="FitModel2.svg" style="width: 889px;"><img src="https://us.v-cdn.net/6038925/uploads/images/86066i67BC3913B034FFA6/FitModel2.svg" width="889" height="500" role="button" title="FitModel2.svg" alt="FitModel2.svg" /></span></SPAN></SPAN><EM style="font-size: 1em;"><EM style="font-size: 1em;">图 9:启动修改后的拟合模型。模型脚本通过为连续因子添加二次效应进行修改。选择两个连续因子,然后单击<STRONG>“宏”</STRONG> > <STRONG>“多项式阶数”</STRONG>以添加两个二次效应。<BR /><BR /></EM></EM> <P><SPAN>用于分析空间填充设计性能响应的模型包括连续因素的主效应、双因素交互作用和二次效应。</SPAN></P> </LI>
</UL> <BR /> <H2 style="font-weight: 400;" id="toc-hId-227218614" id="toc-hId-227305845" id="toc-hId-227305845"><STRONG>接下来</STRONG></H2> <P><SPAN>在最后一篇文章中,我们将揭晓这项全面对比的结果!我们将展示哪些空间填充设计在不同场景下表现优异,并根据实验目标和限制条件,提供设计选择的实用指南。</SPAN></P> <P><EM><SPAN>这是关于空间填充实验设计的三篇系列文章的第二部分:</SPAN></EM></P>
<OL>
<LI><SPAN><A href="https://community.jmp.com/t5/JMP-Blog/Part1-Introduction-to-common-types-of-space-filling-designs/ba-p/906541" target="_blank">空间填充设计常见类型简介</A>. </SPAN></LI>
<LI><STRONG><SPAN>比较框架和评估指标</SPAN></STRONG><SPAN>(这篇文章)。</SPAN></LI>
<LI><A href="https://community.jmp.com/t5/JMP-Blog/Exploring-space-filling-designs-part-3-Results-analysis-and/ba-p/915402" target="_self"><EM><SPAN>结果、分析和设计选择指南</SPAN></EM></A><SPAN>.</SPAN></LI>
</OL>
Victor,您好!非常感谢您这篇富有洞见的帖子!JMP 是否可以计算非 JMP 生成的空间填充设计的空间填充设计诊断指标,例如差异和 MaxPro 标准?“评估设计”功能似乎没有提供这些统计数据,所以我想知道是否有其他更简便的方法来进行这项评估。
嗨@ktbrickey22 ,
非常感谢您的积极反馈!
目前还无法计算在 JMP 之外生成的空间填充设计的任何诊断指标(差异和 MaxPro 值)。这也是我在为这篇博客做实验时遇到的问题: 如何获取任何空间填充设计的 MaxPro 值?由于目前似乎无法轻松计算这些值,我为此创建了一个愿望清单: 空间填充设计的比较平台
目前,如果我需要比较两个空间填充设计之间的差异,我会使用SciPy 中的差异函数。虽然它给出的值与 JMP 中的不同,但它允许我比较任何设计。SciPy 还提供了其他一些不错的指标和可视化工具,例如最小生成树,可以用来可视化点之间的最小距离。
对于 MaxPro 来说,这是一个更复杂的问题,我还没有找到令人满意的解决方案(目前为止)。
希望这个答案对您有所帮助 
感谢@Victor_G 的快速回复和建议!我很喜欢你列出的愿望清单,我会在此期间研究一下 SciPy 函数。谢谢!
@Victor_G ,我有个问题。关于您上面提到的 MaxPro 方法,您提到“目标是最大化 MaxPro 准则,以确保设计点在低维空间中的良好投影”。但是,帮助文档中却说目标是最小化 MaxPro 准则。您能解释一下吗?
嗨@charlie_whitman ,
非常感谢您仔细阅读并提出意见,并指出了这个潜在的错误。我深感抱歉,我在阅读有关 MaxPro 准则的内容时可能产生了误解。该准则旨在评估设计的投影特性,因此投影特性越高越好,因为它有助于最大化信息量,即使在存在不活跃/低重要性因素的情况下,也能实现高效的布局设计。它通过最大化潜在设计点之间距离的乘积来影响布局间距。然而,在 JMP 帮助文档中 MaxPro 准则的公式中,设计点之间的距离位于分母,因此该准则似乎应该最小化。JMP 帮助文档中的“设计诊断”部分也重复了这一点:“值越小越好” 。
即使 JMP 帮助文档中有相关说明,我仍然感到困惑,尤其是在查看贝叶斯优化平台中的“最大化 MaxPro 准则”选项时。最大化 MaxPro 准则有什么好处(在查看实验空间的较小子空间时,运行结果可能会出现聚集或“堆叠”的情况)?该部分的帮助文档提到:“此选项是对因子空间进行无模型探索,避免在训练数据和当前批次中重复任何因子设置。当一个或多个模型拟合不佳时,无论批次大小如何,都可以使用此选项。 ” 如果目标是由于模型拟合不佳而进行进一步探索,那么为了确保新添加的运行结果得到良好的覆盖,此选项是否应该尝试最小化 MaxPro 新设计点的值(以增加设计点之间的距离并探索实验空间),而不是最大化它们?
如果 JMP DoE 团队的某位成员能够帮忙解答这个疑惑,我将不胜感激!
我将尽快对本博客文章系列的第二部分和第三部分进行相应更正。
@Victor_G - 感谢您的快速回复。发现不一致之处的不是我,而是一位客户。再次感谢!
@charlie_whitman再次为这个错误道歉。第二部分和第三部分已经进行了更正。如果您或您的客户发现其他错误,请告知我(希望不会)。