感谢各位的参与。我的主题是“多种设计,少量时间”。我是JMP高级分析研发总监Ryan Lekivetz,目前领导着JMP的DOE和可靠性团队。我认为这个话题会很有意思,因为在最新版本的JMP中,我们对设计探索器做了一些额外的改进。如果您还没有看到,在本次演讲结束时您就会看到。
但我想,在那之前,你们应该已经大致了解了。我们打算稍微绕个弯,聊聊实验设计背后的理念。部分原因是……我回顾了之前的一些发现讨论,发现自从 JMP 13 引入比较设计以来,我们就很少讨论这个了。我想那已经是十年前的事了。我觉得如果没有看到这句话,这应该就不是一次发现会议了,对吧?“所有模型都是错误的,但有些模型是有用的。”
诚然,当我们设计实验时,我听到的批评之一是这些模型过于简单,它们永远无法真正解释我的实验过程。为什么实验设计能够持续这么久?归根结底,它们能够构建有助于理解和改进我们系统的模型。我们完全承认这些模型并非完美,但至少我们可以更好地了解哪些因素或哪些效应将驱动该系统。
我经常喜欢用方差偏倚权衡的方法来看待实验设计。我们会在不同设计的实验结果中看到这一点。我认为这也是我在选择设计时经常考虑的因素。这就是我拥有哪些模型效应背后的概念?我告诉 JMP 我想要的模型项,以及我可能没有包含但可能成为有用模型一部分的模型项。如果我进行更多次运行,收集更多数据,可能会发现其中一些效应或模型项非常重要。
我们来看一个简单的例子。你看,我设计了一个简单的实验,包含三个因子 X1、X2 和 X3,我已经完成了实验并收集了一些反馈。当我考虑方差偏差权衡时,如果我们看一下估计效率之类的东西,它就能告诉我效应估计(在本例中为 X1、X2、X3)的标准误差是多少。
如果这个 Y 值中有很多噪音,我可能就无法判断太多。但如果我们实际看一下,这里我刚刚生成了一些数据。我们来运行一下。正如你所见,RMSE 大约在 1 左右。如果我们查看参数估计值,就会发现标准误差与相对标准误差 0.2 直接相关。
这实际上告诉我,如果我的效应估计值很大,如果我的主效应估计值很大,理想情况下,这个设计应该能够检测到这一点。这就是我们在这里看到的,估计效率,以及分数的提升,我甚至无法做得更好。如果这是我正在使用的设计,我不可能做得更好了。
但现在真正的问题是:“如果我错了怎么办?” 这个设计是我设计的。如果我们看一下实验设计对话框,我假设有主效应。我有X1、X2和X3,我说我所有的都是主效应。那么,如果事实证明X1和X2之间确实存在交互作用怎么办?也许已经太晚了,我已经仔细研究过了,也收集了数据,但会发生什么呢?同样的设计,如果我看一下那个评估设计,如果我直接添加了那个特定的交互作用会怎么样?X1和X2。
我们在这里看到,我想我用了不同的设计,但结果却是 X2 和 X3 以及这个相互作用的数值增加了。所有这些都告诉我,实际上,由于添加了 X1 和 X2 的相互作用,我的 X2 和 X3 的变体数值略有上升,因为我的设计中并没有考虑到这一点。我想说的是,这种情况通常也会在别名矩阵中出现,如果你曾经观察过它,就会发现负三分之一的数值就是从那里得到的。
这到底有什么关系呢?如果我们考虑一下这个评估设计,这实际上是相同的设计。在这里,我所做的就是明确地添加了 X1 和 X2 的交互作用。所有这些都表明我要取 X1 乘以 X2。让我们在这里思考一下。这就是我现在得到的估计值。
现在,如果我们看一下相关性的彩色图,你会发现我们经常这样做。这就是你得到那些较大块数据的地方。但现在这有什么关系呢?假设我有X1和X2,我仍然可以模拟我的主效应。如果我对这样的情况进行建模,这有什么关系呢?
我们来看看参数估计值。现在你注意到了,结果并不一定显著,但这真的重要吗?我的意思是,一切都还好,那么这种现象在哪里起作用呢?假设我反复这样做。你看到这里,我得到了这个 Y 轴模拟。我们来看看背后的公式。假设这是我的真实模型。我有这些主效应,X1、X2、X3 都在起作用,以及 X1 和 X2 的交互作用。
但是,如果我在建模时遗漏了这一点怎么办?我们可以在 JMP 中反复运行模拟。如果我这样做,我们来看看会发生什么。我只需要反复绘制该分布即可。我所做的只是添加一些随机噪声。如果我们在这里看到 X1,平均值正好在 2 处,这正是我想要的。X2 是 3,这也是我们预期的。但你看,这里的 X3 是 1。
这是为什么呢?这和别名矩阵有关。事实证明,由于我漏掉了X1和X2,X3的偏差会达到参数估计值的三分之一。如果模型中没有这个项,我们这样做就会把事情搞砸。这是我们在设计实验时必须始终考虑的事情,我们会尽力构建我们认为正确的模型。但很多时候,当我们进行诊断时,你会看到我们经常使用相关性的彩色图,这是因为我们要比较模型中的项,以及那些可能属于别名项集合的项,但如果这些项变得很重要,会发生什么。
这就是定制设计发挥作用的地方。如果您在 JMP 中没有做过很多设计实验,那么定制设计就是我们的首选。它可以根据您的特定实验设置创建最优设计。在这里,我们将进行定制设计。我们假设我们有一个有用的模型。再次强调,并非所有模型都是错误的。我们假设我们对系统有足够的了解,可以这样说:“好吧,如果我观察这些主效应或一些交互作用,我可以根据这个有用的模型进行设计吗?”
现在,定制设计的一个特点是,即使你看一下那个悬停,它也会讨论到最优设计的概念。最优设计中的效率概念,实际上与我们实际想要从实验中获得的结果相关。具体来说,如果我们在这里启动定制设计,我们不同的最优标准,正如你所见,有各种不同的字母,D、I、A,以及推荐值。这归结起来是什么?
嗯,第一个基本条件就是,如果我要估计模型项。假设我们有一个有用的模型,我可能想确保我能很好地估计这些项。
无论是我的主要效应,还是我的交互作用,我不想深入探讨其中的数学细节。类似D最优性,就是要最小化这些参数估计的整体置信椭球。它表示我要一次性考虑所有这些因素。而A更像一个平均值,你只需要最小化这些参数估计的平均方差。
如果我只是说“我真的想确保我得到的是正确的术语”,那么这些就很棒了。但是,这个模型有用吗?我能弄清楚这个有用模型中最重要的东西是什么吗?
那么,这些是从哪里来的呢?嗯,我们来看看,在定制设计中,它会基于我告诉 JMP 的模型。默认情况下,它可能只包含主效应。那些别名项可能很重要,但我没有将它们包含在模型中。而如果我告诉 JMP,我想要这些双因子交互作用,那么它就会基于我告诉它的模型来计算不同的效率。这就是定制设计的概念。
现在,假设我实际上认为我已经有一个有用的模型。也许我更感兴趣的是预测,更好地预测响应。这时,你就得到了另一个 I 最优性。我只是想最小化平均值。如果我考虑整个设计区域,我只是想确保我总体上做得很好。我会使用 I 最优性。
在一些不同的效率指标中,G 最优只是说:“最小化最坏情况。确保我不会表现得太糟糕。”你也会看到一些内容。别名最优,这更像是一种妥协。它说:“保护我免受那些别名项的偏差影响。尽量保护我免受那些模型中可能没有但可能很重要的项的影响,同时仍然保证总体设计合理。”
您还会看到一个名为“如果可能”的项。如果我回到那个实验设计(DOE)。“如果可能”项是什么?我们来看一下。现在我可以告诉 JMP:“这些交互作用,也许重要,也许不重要。我现在可以将它们设置为‘如果可能’。” 这句话其实是在告诉 JMP:“给我那些必要的项。你必须确保能够估算它们。‘如果可能’项,如果你没有机会估算它们,那就去做吧,但它们不像那些必要的项那么重要。”
这些是如何发挥作用的?我可以告诉 JMP:“这就是我想要的。我有我的模型,我有我的别名项,我有不同的最优性准则。” 现在,最大的问题之一实际上是在设计评估阶段。我已经创建了我的设计,并告诉 JMP,这就是我想要做的。结果发现,有些诊断与样本量有关,有些则无关。
如果你考虑功效分析之类的事情,你会发现功效实际上并不关心你的样本量。当然,样本量越大,你的效应估计的功效就越高,但这与样本量无关。
同样,估计的标准误差只是一个计算,但置信区间的分数增加与样本量有关。
同样,相关性的彩色图只是一种计算,但我们最终得到的不同效率指标与样本量相关。这只是我创建的12次运行设计。我只提到了主效应。正如我之前所说,其中一些,比如功效,只是简单的计算。像设计诊断这样的功能,你会看到它显示“嗯,这是100%的D效率”。这是因为它是一个12次运行的设计,它达到了12次运行设计所能达到的最佳效率。
但与此同时,我可以对16次运行的设计做同样的事情。但现在,如果我们看一下功效分析,不出所料,我们的样本量更大了。现在,设计诊断在这里。同样,D、G和A效率都显示为100%,因为这些效率与样本量有关。
这告诉我,对于16次运行的设计,我不可能做得更好了。同样,对于12次运行的情况,它说,对于12次运行,我不可能做得更好了。这是否意味着我应该使用12次运行的设计而不是16次运行的设计?嗯,这要视情况而定。如果我能负担得起16次运行,也许我更愿意考虑其他一些因素,以确保这是否是我想要做的。
这实际上有时会成为问题,因为当我开始思考哪些应该比较,哪些不比较时,我们就需要用到比较设计了。在讨论这个问题之前,我想先谈谈确定性筛选设计。如果你参加过一些 JMP Discovery 会议,你会经常听到有人提到确定性筛选设计。事实上,我们已将其列在确定性筛选设计菜单的首位。
再次强调,这里不想过多地涉及数学细节。确定性筛选设计之所以特殊,是因为它采用了会议矩阵的折叠概念。现在,我非常喜欢将确定性筛选设计视为这些折衷方案。如果你还记得那些不同的最优性准则,它们实际上是作为一种别名最优设计被发现的。但它们实际上是有效的设计,我们在对角线上保留了零点,并添加了一个中心点。确定性筛选设计如此流行的原因之一是,当我们考虑方差偏差权衡时,会发现这些设计是正交的。
回到那个估计,主效应估计得非常好。但如果我们发现存在交互作用或二次效应,这些主效应就会受到保护。我们拥有偏差保护机制,如果有用的模型存在二次效应或交互作用,通过以这种方式构建设计,我们将获得内置的保护。也就是主效应偏差保护。
现在,想想我之前提到的另外两个设计,我们为什么要用这个?我想说,其中一个非常好的地方是,通过添加零点,我们可以确保是否存在非线性效应,如果设计空间中间发生了某些事情,那么传统的只使用正一和负一的方法就会忽略这些变化。我喜欢这样想:如果我烤蛋糕,也许我应该使用 350 度。如果我用 325 度或 375 度,可能就不太合适了。
如果我告诉 JMP 我希望我的范围在 325 到 375 之间,我实际上从未在 350 处看到任何东西,而也许我想确保我正在这样做。
我在这里想顺便提一下,你可能没有注意到,如果你上过实验设计课,他们经常会提到经典的部分因子设计,这些设计会出现在我们的筛选设计平台中,但其中也隐藏着一些叫做近正交设计和正交混合水平设计的东西,它们实际上就像是“确定性筛选”的一个特例。它们实际上隐藏在经典设计之下。在最新版本的 JMP 中,你将会看到我们让这些设计更容易找到。
最终筛选设计的另一个问题是,我实际上无法从定制设计中获得它。我之前说这是一个折衷方案,别名是最优的,但结果却恰到好处地强制使用了那些零。如果你曾经尝试过同时进行最终筛选设计和定制设计,那么这是可以做到的,但这需要大量的工作。而我需要做的,我可以在这个平台上自动完成。它帮我构建起来没有任何麻烦。
假设我正在和一些同事讨论,我们正在三种不同的设计之间进行讨论。有人已经做过了。我有一个12次运行的设计,它来自五因素的定制设计。我有一个五因素的最终筛选设计,以及一个16次运行的设计。现在,16次运行的设计会更贵。但是我想做什么呢?嗯,这就是比较设计发挥作用的地方。
现在,我可以在同一个平台上比较多个设计。我不用费心去启动这些单独的评估设计,也不必费力去弄清楚哪些设计值得比较,哪些不值得比较。我刚才提到,你可以匹配列名,或者让 JMP 尝试一下,这样我们就可以考虑多个模型了。
你会发现比较设计。在“实验设计”(DOE)的“设计诊断”下,我们可以看到比较设计。你现在可以看到我的活动数据表是第16次运行的数据表。我们可以将它与第12次运行和第13次运行的数据表进行比较。现在,在底部,我可以告诉JMP我想要如何匹配列,但我们先试试自动匹配。
JMP 会尝试找到实现这一点的方法。我们在这里看到,它确实找到了正确的方案。即使它们的因子名称不同,JMP 也会尝试帮你匹配。比较设计之类的功能有什么好处呢?现在我可以开始进行功效分析之类的工作了。现在我可以和同事一起研究,然后决定这三个设计中选哪一个?当然,16 次运行的成本会更高,但当然,我会获得更高的功效。
我可以观察事物。设计空间图的这个部分与预测方差有关。在整个范围内,它的表现如何?现在,好消息是,因为我们在比较设计,所以我们可以使用相对效率的概念。我不必担心它与特定的运行规模进行比较,我可以直接进行这些比较。
现在你会说:“嗯,根据这个,我可能只想用那个16或12。我为什么要用DSD?” 这就回到了这个问题。问题在于这些不同的相关性。那些模型项与别名项。如果结果显示我有一个类似双因子交互作用的变量,这就是比较设计的好处。我可以玩假设游戏。实际上,我们可以看到,在这种情况下,其中一个设计甚至无法拟合那个特定的交互作用,因为它的设置方式。
现在我可能会说:“嗯,这有问题。我再试试加点别的。” 你会发现,这个设计似乎没什么用。现在你可以想想,如果我尝试添加交互作用,看起来那个16次运行的设计有问题。我试着把它们全部加进去。我们看到JMP实际上告诉我:“嗯,这个设计实际上很难拟合交互作用。顺便说一句,我已经构建了它,因为我之前没有把这个因素考虑进设计构建中,现在我再尝试添加它,根本无法很好地完成。”
这又回到了那个想法,如果我担心那些别名项,那么这里就有一些双因素交互作用的别名项。如果我担心交互作用,那么我可能更倾向于使用类似确定性筛选设计的方法。这时比较设计就能帮我解决这个问题了。
好的,我想说比较设计是一个非常棒的工具。自从我们内置了这个工具以来,即使在JMP中,我们也经常使用它。不过,比较设计的一个问题是,如果你注意到的话,我需要创建每个单独的数据表,而且我必须非常清楚自己想要比较哪些设计。
但早些时候,我实际上更愿意在进行全面的设计比较之前考虑更多设计。这时设计探索器就派上用场了。如果你没见过设计探索器,我这里会再次启动自定义设计,然后做同样的事情。我们只需要添加五个不同的因素。然后我点击“继续”。
假设我们要尝试这个主效应模型。如果你注意到,就在那个设计方案的正下方。当它可用时,你会看到一个设计探索器。“使用当前的因子和模型,探索不同的设计方案,以帮助选择设计方案。”让我们点击设计探索器,看看会得到什么。它告诉我,我有一个主效应模型,我在这里找到了这个模型。
我们看到的是,为单个设计或指定选项的组合选择选项。也许现在我想和某人谈谈,我们会说:“好吧,我们试试D最优设计和A最优设计,可能运行12到20次。”如果我让设计浏览器这样做,你会看到它实际上创建了运行12、16和20次的D最优设计,以及运行12、16和20次的A最优设计。
在之前版本的设计探索器中,我只能在自定义设计中生成一些内容。在最新版本的 JMP 中,我甚至可以引入最终筛选设计。如果我想比较一下如果进行最终筛选设计会产生什么结果,现在就可以尝试一下。
现在我可以开始比较这些不同的效率,看看会发生什么。你注意到了吗,它会告诉我……主效应与二次效应和双因子交互作用正交。这给了我一个提示,通过选择这一点,我可以做一些额外的事情。现在我明白了,我可以开始比较这些不同的设计相对于我现有的其他选择的效果了。
同样,这是一种你可能从未见过的设计,它非常接近正交阵列,实际上只是试图平衡。这种主效应筛选设计,它所做的就是平衡每对列。同样,像这种正交混合水平设计,过去隐藏在筛选平台之下的另一种设计类型。
现在我可以快速生成所有这些不同的设计,并开始考虑我可能想要使用哪一个。与此同时,我可能开始感到不知所措。我会说:“好吧,我甚至不知道从哪里开始。为什么不把它发给同事呢?”你看,我们有这个增强的数据表。我有效率与运行次数的关系图,以及效率散点图。但它的另一个好处是,我现在可以把它发给同事。我这里有现成的脚本,他们可以运行并创建这些设计。
同样,如果我自己做这件事,我可能会说:“好吧,这个经过17次运行的DSD看起来不错。让我评估一下,看看效果如何。” 我仍然可以直接在这里进行设计评估。也许等我准备好了,我就可以继续创建选定的设计了。我的17次运行的最终筛选设计已经准备就绪。
这就是设计探索器。如果你在 Discovery,我会在,很乐意和你聊聊这个。如果你不在,你可以在下方留言。这个是在线的。
最后再说几点。我想说,即使有了设计探索器,你仍然可能觉得设计太多了。我喜欢这句话:“偶然的发现常常值得庆祝,但精心设计的发现更可靠。”
好吧,这么说吧,所有模型都是错的。我喜欢的另一句名言是:“计划实验的最佳时机是在实验完成后。” 我想我做过的每一个实验,总会有人这样想:“唉,真希望我当时就做了这个。” 或者事后你会想:“嗯,如果我事先想到的话,这显然是可行的。” 但事实上,如果你正在考虑做一个设计实验,那么你已经领先一步了。
即使是那些失败的实验,或者我称之为失败的实验,你也总能从中学到一些关于下次该做什么的知识。你真的应该把实验设计看作一个循序渐进的过程。实际上,它能帮助你弄清楚下一次该做什么。
不过,我想提的另一件事是,建模方式确实很重要。一般来说,只要你只是在思考实验设计,在JMP,我们每天都会思考如何让用户在运行实验时处于最佳位置,并尝试通过诸如确定性筛选设计之类的方法保护他们,避免偏见等等。
但归根结底,如何建模确实很重要。如果你考虑诸如确定性筛选设计和所有这些相互作用的“如果可能”项之类的因素,当我设计实验时,我经常尝试不同的建模技术,以确保我没有遗漏一些我可能没有考虑到原始模型中的项,或者确保我认为有用的模型是我能找到的最有用的模型。
我想说,当你进行功效分析之类的分析时,这一点也非常正确。我思考的一点是,如果我有这四个因子及其交互作用,如果我对这些主效应和双因子交互作用进行功效分析,我很少会期望这些项中的每一个都出现在我的最终模型中。
我经常在考虑功效分析之类的问题时,会进行模拟来玩“假设游戏”。如果其中两个显著呢?或者如果其中三个显著呢?因为我的最终模型很少会包含所有这些因素。我认为,在设计这些实验时,你需要牢记的一点是,我要在模型选择和“假设游戏”方面投入多少精力?
非常感谢大家抽出时间。希望本次演讲对大家有所帮助。欢迎大家在下方留言评论或提问。谢谢。