好的,让我们来谈谈在有通过/失败响应的情况下如何设计和分析实验。我将在整个课程中讨论通过/失败响应。但是,这实际上适用于我们处理具有两个类别的响应的任何情况,即二元响应,您可以属于这两个类别之一或另一个类别。它们是互斥的和详尽的。通过/失败、通过/不通过、是/否,只要该响应具有两个互斥且详尽的类别。我们将课程分为四个不同的部分。我们将从一个例子开始。也许,希望它看起来很熟悉。
希望您以前可能见过这种处理实验失败反应的方法。我们将讨论一些可能出错的地方。之后,我们将讨论模型,因为一切都取决于我对模型做出的基本假设,以及这些假设将决定我选择的分析方向和实验规模。看完 PowerPoint 幻灯片后,我们将实际看到我将如何分析实验数据,即我将要展示的示例数据。
我们将讨论 JMP 和 JMP Pro 中可用的部分选项。最后,我们将总结一下如何确定实验规模?事实证明,对于通过/失败实验,重要的不是实验运行,而是实验运行的次数,即每个实验条件的试验次数。我们将讨论如何在 JMP Pro 中进行设置,如何设置模拟,以便我们确定这个试验次数是否足够好。让我们来谈谈我们的例子,我们正在制作小部件。我们有一个流程,我们对失败率不是特别满意。
我们确定了四个不同的因素,我们认为这些因素将有助于我们改善这些小部件的故障率,我们有添加剂,我们有压缩步骤,其中有三个因素我们会改变。我们有温度、压力和保持时间,我们会改变它们。问题是,小部件是否有缺陷?我们处理小部件。是的,它有缺陷,不,它没有缺陷。如果它有缺陷,我们就称之为失败。目前的缺陷率为 15%,我们最终将使用它来衡量我们的实验。
我们的目标是将故障率降低到 5%。但是,如果我们能够确定大约 3% 到 5% 的差异,我们就会很高兴。如果我们能够检测到我们的缺陷率下降到 10%,那么我们就会很高兴。我们希望能够检测到这一点。我想知道的另一件事是每次运行大约需要 10 分钟。就我想要的运行次数而言,我没有限制。我每小时可以运行大约六次。
好吧,假设我们将这个因素放入 JMP。我们打开自定义设计器。我们决定要一个响应曲面设计。我们将添加三个中心点,这就是我们想出的设计。到目前为止一切顺利。我们采用设计,将设计发送给将要运行实验的操作员,他们会返回这个设计。我们有 24 次运行,大约 4 小时来运行这个实验。我们被告知这些 1 和 0 代表有缺陷的观察结果或没有缺陷的观察结果。现在,我要分析数据,我将其放入 JMP。
现在,我知道那些 1 和 0 不是连续数据。它们实际上是分类数据。它们是二进制数据。我将把它们当作二进制数据。我可能知道我处理的是逻辑回归。因为我已经在 JMP 中设计了这个实验,所以响应面模型出现在我的模型构建对话框中。我开始进行分析,但马上我就应该担心了。对于这些参数估计,我收到一条消息,说这些参数估计不稳定。
假设我与对这类实验更了解的人讨论这个问题,他们告诉我,问题是你只对一组治疗条件进行了一次试验。你真的需要进行多次试验才能得到一个好的估计。假设我回去,我与操作员讨论这个问题,因为他们不喜欢将我的实验规模从一次试验增加到五次试验的想法。现在我的实验将持续大约 20 小时。但我说服他们我们确实需要这样做,决定重新运行实验,现在我对每组实验条件进行了五次试验。
我拿回了数据。我得到了两个新的列,它们来自我的实验。Y5 列对应于失败的次数。N 列对应于一组实验条件下的试验次数。现在,这一次,与其处理计数数据,不如用失败试验次数除以总试验次数,然后将其视为连续数据。这里我得到了给定一组实验条件下的失败比例。
我将把它当作连续数据。这让我更舒服,因为我更熟悉用这种方式建模数据。我们上次看到的模型相同,但是,我不会使用逻辑回归,而是使用标准最小二乘法。好的,到目前为止一切顺利。我使用我最喜欢的建模技术,也许我会使用我最喜欢的模型简化技术,然后我得出这个最终模型。同样,到目前为止一切顺利。接下来我想做的是优化。
我想知道什么条件会促使错误率尽可能低。我使用分析器中的优化器,它告诉我将整个时间设置为 45 秒,将温度设置为 45 摄氏度,这样应该会得到低于零的预测错误率。我可能愿意忽略这一点,因为这已经足够接近零了,可以说,好吧,也许它真的很接近零,而不是低于零。但我知道从技术上讲这是不可能的。我不能让错误率低于零。即使我可能会这样做,我可能会对自己说,好吧,这个估计有多准确?
我离零到底有多近?我建立的模型是否不好?一切都回到我建立的模型上……当我将数据视为连续数据时,我所做的假设以及当我获得通过/失败数据时可能应该做出的假设。这是我们的典型模型。左侧是我们的响应,我们的观察结果。在我们的例子中,这是失败的概率。抱歉,左侧是失败的概率。
在右侧,我们得到了线性模型,也就是我们试图建立的输入和输出之间的关系。这通常是我们考虑的。在这种情况下,典型的假设是,这种关系是线性的,我的响应范围是无界的,我的残差是正态的。我的残差是,我将模型拟合到数据中,剩下的就是我的残差。我假设它们是正态分布的,这意味着它们围绕零对称,并且它们具有所有这些良好的特性。这是问题的一部分。
如果我们处理的是概率,我们的响应实际上看起来是这样的,我认为它更像是 S 形,而不是线性关系。这种线性关系实际上并不成立。无界响应范围也不成立,因为我知道既然我处理的是概率,那么不可能有任何值低于零,也不可能有任何值高于一。即使是最后一点,正常误差的假设也不起作用。如果你仔细想想,当我的预测值越来越接近零时,我的残差将有越来越小的可操作空间。在我的拟合值和零之间,它开始缩小。
对称误差不可能接近于零。同样,当误差越来越接近于一时,对称误差也不可能存在。在这种情况下,必须有所作为。现在,我希望可以找到一种简单的方法来解决此问题。可能只需进行简单的转换。但愿如此,也许可以使用不同的分布。我们可以在 JMP 中执行此操作吗?答案是,我们有三个不同的选项。第一个选项,我们已经在示例中看到过,即逻辑回归。即对数据使用 Logit 转换。
在这种情况下,我们不是将概率视为响应,而是查看两个不同响应水平的比率。失败概率除以通过概率,然后取对数。我们取对数以使关系成为线性关系。另一种看待这个问题的方法是,由于我们只有两个不同的级别,因此它可能是失败概率除以 1 减去失败概率的比率。现在,如果您以前使用过这些类型的模型,并且听说过术语几率和对数几率,这就是确切的定义。
等式的第一部分就是概率的定义。它是某个级别与另一个级别之比。这就是我的概率,然后我取它的对数。这是一个选项。另一个选项是使用所谓的遗嘱分析。在遗嘱分析中,我只是使用了不同的变换。在这种情况下,我使用的是正态分布的逆。或者,如果我曾经在公式编辑器中或使用 JSL 构建过它,那只是正常的分位数函数。
现在,JMP 中还有第三个选项。这需要一点工作量,我们不会详细介绍它的使用方法,但我想介绍一下,因为您在文献中经常看到它,它是互补的对数函数。现在,JMP 中无法直接使用。我们需要使用类似非线性平台的东西来自己构建它。可以近似,有一种分布称为最小极值分布,但我们必须将其留到另一天再讨论。实际上,我们将重点介绍 JMP 中现成可用的功能。
现在,我们需要做出第二个大假设,即,即使给定我们选择的转换,无论是 Logit 还是 Probit,我们都会假设误差为二项分布。因为它由两部分组成。我不仅进行转换,还假设了不同的分布。正如我所提到的,前两个可以直接在 JMP 平台中使用,因此很容易。我们将重点介绍它们。最后一个可以使用非线性平台进行建模。好消息是,一切都可以从拟合模型平台获得。我在 JMP 中有三个不同的选项。
我可以使用逻辑回归,我们在示例中也看到过。有一个选项称为广义线性模型,名义逻辑回归和广义线性之间存在很强的关系。然后对于 JMP Pro 用户,我们有广义回归,这也为我提供了一大堆其他选项。现在,还有另一个平台,您可以在其中进行简单的逻辑回归,即用 X 拟合 Y。但是,因为我们处理的是实验条件,而且我们通常有多个因素,所以我不打算讨论这个。但对于简单的逻辑回归,用 X 拟合 Y 也有效。
在介绍如何在 JMP 中实现这一点之前,我们需要讨论一下数据组织,因为我们知道如何组织数据,数据是什么?在拟合模型对话框中设置起来很容易。让我给你举一个简单的例子。假设我们有一个双因素实验,时间和温度。我们已经完成了全因子分析,所以我们有时间和温度的所有可能组合。假设我们计划对每个实验处理进行五次试验。
我说的治疗是指行,即我们独特的组合集,即此数据表中的行。我有三种不同的数据设置方法。第一种设置数据的方法就是原始数据。数据表中的每一行都对应一次试验。您会注意到,原始数据中的第一行是治疗组合,具有给定的时间和温度。在这种情况下,我的二元响应是我的响应是绿色还是红色。第一个响应是绿色。第二行又是治疗组合 1,该响应是红色,依此类推。
这就是原始格式。这三种方法都可以使用原始格式。现在,我可以总结了。有时总结数据更有意义。当我总结数据时,我会总结治疗条件和响应水平。您会注意到,对于第一行,在汇总堆栈中,我有治疗条件一,我有所有的绿色,还有两种我看到绿色的情况。第二行是我的第二个治疗组合,三个绿色观察值,等等。我刚刚汇总了治疗组合和响应水平。
好的,这三种方法都可以使用汇总堆栈格式。第三种组织方式,对很多人来说可能是最自然的,因为这看起来很像我将用于线性模型的组织方式,即汇总拆分格式。在本例中,我再次汇总了治疗组合,但只针对我的一个治疗水平。您会注意到,在本例中,我计算了每次试验中看到绿色观察值的次数,还计算了试验次数。如果我要使用自定义设计器构建 DOE,如果我输入数据,这就是我期望使用的格式。
如果我想使用汇总堆栈格式,我必须实际复制这些运行。我会为我的绿色创建一个,为我的红色创建一个,然后稍微重新组织一下。现在,逻辑回归不能使用这种格式。我必须使用其他两种格式中的一种。广义线性模型和广义回归可以使用这种格式。如果您打算使用逻辑回归,请注意这一点。好的,让我来做这件事。PowerPoint 就够了。让我进入 JMP,让我们谈谈我将如何使用我们看到的实验数据分析每个示例。
好的,让我们进行逻辑回归。我们从第一个示例逻辑回归开始。我还注意到,我有汇总堆栈,这里有一个格式。我有一列,里面有我的通过和失败,即计数。这是汇总数据。我在另一列中也有计数。好的,非常简单。我们要讨论的所有内容都将在拟合模型下进行。因为我在 JMP 中设计了它,所以它与我的模型一起出现。
这是我设计实验的响应面模型。它已经预先填充到我的对话框中。但我只想指出的是,在这种情况下,我的响应是名义上的。即通过/失败。我还需要这些计数,因为我已经汇总了我的数据。我将选择我的目标水平,这实际上取决于我想要看到输出的方向,无论我想从通过方向还是失败方向进行操作。让我设置一下。让我们将其恢复为通过。现在,我这里有几个不同的选择。
它们都是逻辑回归。我有名义逻辑回归。如果我对逐步回归有一点了解,我也可以对我的 Logit 模型和逻辑回归模型进行逐步回归。这也是一种选择。好吧,让我们继续使用原始的名义逻辑。我要运行我的模型。同样,我将使用一些数据缩减技术或一些模型缩减技术。我可能会直接进入那里,手动从模型中删除项目等等。或者我可以使用逐步回归来实现这一点。
这其实并不重要,因为我一开始就得到了正确的模型。让我从模型中删除一个术语。好了。假设这是我们的最终模型,我们对这个模型很满意。让我们进入我们的分析器。让我向下滚动到分析器的底部,将其放大一点,这样我们就可以看得更清楚。现在,使用此模型的好处之一是我的分析,我的通过和失败,是有界的,但我们必须有介于零和一之间的概率。让我打开我的可取性函数。现在,这看起来会有点不同,因为它实际上分为两组。
我已经确定了想要达到的通过率和失败率。我将把失败率降为零,因为我不想针对任何失败进行优化。我将提高通过率的可取性,让我们继续最大化可取性。它再次告诉我,整个温度都相同。但是,我可以更好地估计预测的失败率或本例中的预测通过率。它告诉我,在这些设置下,我应该有大约 96% 的通过率,因此大约 4% 的失败率。
当然不会低于零,而且比我预期的离零稍远一点。好的,让我们继续讨论广义线性模型,我们将使用汇总分割格式。同样,如果您之前使用过线性模型,这种格式应该看起来很熟悉。我得到的这些很可能是我的设计实验得出的观察结果。我计算了其中一个级别的观察结果数量,在本例中,我计算了失败项目的数量,然后我得到了总试验次数。
好的,再次,我将进入“拟合模型”对话框。这个设置有点不同。对于这个特定的组织,我有两个连续变量。第一个必须是我个人级别的计数,第二个必须是我的总数。我在这里已经默认为广义线性模型。我选择了我的分布。在这种情况下,它默认为二项式。在这里我可以选择查看 Logit 或 Probit。我们在概率方面略有不同。让我们继续使用 Logit。现在,默认情况下,Logit 和 Logistic 回归将为我提供相同的结果。
广义线性模型的一个优点是,我可以放宽我们之前看到的一些假设。其中一个假设是误差项服从二项分布。对于二项误差,它们是固定的,无论概率是多少,它们都是相同的。打开我的过度分散,就会发现,变异性比我预期的要大一点,或者误差可能比我预期的要大一点。它稍微放宽了二项误差的假设。
我还可以调整我的估计值以消除潜在的偏差。我只需打开过度分散功能。再次运行我的模型。现在,这种方法的缺点之一是您没有分步能力。您需要进入那里,手动执行此操作或在决定要使用哪个最终模型之前假设一些模型。再次,我只需手动执行此操作。我将提出三个重要因素。您会注意到,如果您将其与逻辑回归进行比较,因为我打开了过度分散功能,我的变异性实际上比估计的要大一点。
我的 P 值稍微大一些。在这里我需要问自己,好吧,我是否真的想相信,即使这些并不重要,它们也不值得留在模型中等等。但好消息是,我可以选择在模型中放宽该特定假设。同样,如果我想打开我的 Profiler 并进行优化,也可以使用。我拥有同样出色的功能。在这种情况下,组织方式略有不同,因为我建模的不是过去的失败,而是概率。这是我们更习惯看到的 Profiler。显然,在这种情况下,我不想优化它,因为这样会最大化我的失败。我要将其最小化。让我们继续优化它。
同样,它告诉我所有时间,45 秒,温度,45 秒。它会给我一个略有不同的估计值,尽管它们非常接近。同样,好消息是我在这里是有界的。滑块移到哪里并不重要,我被这些概率限制在 0 和 1 之间。好的,对于最后一个例子,让我们谈谈广义回归。现在,这是 JMP Pro 独有的功能。它为我提供了其他几个附加选项。我得到了相同的起点、拟合模型、相同的设置,因为我有汇总的拆分数据。
但是,我将选择广义回归。现在,我将选择不同的分布。在这种情况下,我知道我的响应,因为它在这里设置了两个不同的变量。我有一个二项式响应,或者我可以选择 beta-二项式。Beta-二项式是一种类似于在我的广义线性模型中使用过度分散选项的技术。这使我能够解释随概率位置而变化的方差。在这种情况下,我们将坚持使用默认值。让我们继续运行模型。
如果您以前使用过广义回归,您就会知道,所有模型简化技术都可以从此平台获得。在这种情况下,我可能会使用其中一种技术。让我确保我已获得我的……我将强制遗传。让我们使用前向逐步回归。我这里有很多不同的选择。如果您以前从未见过广义回归,我有很多不错的不同选项,包括我的模型简化技术。我将使用前向逐步,这是逐步回归的默认设置。单击“开始”,这是我的最终模型。
再次,非常一致。这三个模型都显示出非常一致的结果。参数估计会略有不同。概率也会略有不同。好的,现在的问题是,我是否进行了足够的试验,才能真正使这个实验值得?这让我们开始思考如何正确调整我的实验规模?让我回到我的 PowerPoint 幻灯片组,观看几张关于设置实验的简短幻灯片。
我们将要执行的操作、我们将要确定实验规模的方法,顺便说一下,这是 JMP Pro 中独有的功能。对于非 JMP Pro 用户,您可能可以为此编写 JSL 脚本,但这会非常麻烦。JMP Pro 使设置变得非常简单。我们将从自定义设计器开始。我们要做的就是使用自定义设计器构建我们想要的设计。在生成我们看到的最终表格之前,我们将打开模拟响应。
它位于左上角的热点中。创建数据表后,我们将看到一个对话框,我们可以在其中更改系数。因此,在下一张幻灯片中,我将稍微介绍一下如何设置这些系数?我们将更改这些系数。我们将把它们更改为我们想要的大小。同样,我将在下一张幻灯片中更详细地介绍。更改系数后,我们将把误差设置为二项式,我们将选择样本大小、我们想要查看的试验次数,然后单击“应用”。
模拟响应选项将创建两列,因为我选择了二项式误差,所以一列包含模拟试验次数、试验成功次数,另一列包含总试验次数。这就是我们将用来进行整体模拟的内容。让我们来谈谈如何设置这些系数,因为这是确定实验规模的关键步骤。如何设置这些系数将取决于底层模型。也就是说,我选择 Logit 还是 Probit 模型。
我的示例将使用我们当前看到的数据,使用我们当前在 Logit 模型中看到的示例。这将决定我们如何设置这些值,即基线概率。如果您还记得我们的示例,我们说过,在基线,我们的失败率约为 15%。这将是我们的基线。然后我们必须问,我希望在什么概率下能够看到差异?再次回想一下,我们说过,如果我们能够看到 10% 的变化,那么我们会很高兴。那么这就是我们在实验中想要的规模,这种能够看到从 15% 到 10% 的改进的能力。
我们要做的是,实际使用我们看到的变换来计算基线、10% 和我们想要检测的概率的值。我们将取这两个值的差值,并将其用作系数。如果我们使用这个 Logit 基线,则只是将 15% 除以 1 减去 15%。我们的基线是 -1.73。如果我们有兴趣看到 10% 的故障率变化,同样,我将把它代入方程。它是 0.1 除以 1 减去 0.1。这得到负 2.2。这使得系数只是这两个值之间的差值。我将使用大约 0.5 作为系数。
PowerPoint 就到此为止。让我们来看看在实践中如何做到这一点。我已经完成了实验,实验因素。我将使用自定义设计器。让我继续在那里加载我的因素。我将构建我想要的设计。如果您还记得,我说,好吧,我有一个响应曲面设计。让我们在那里添加三个中心点。让我们在 24 次运行中完成此操作。我将继续单击“制作设计”,让它运行并从算法中确定最佳设计。在生成最后一张表之前,我将转到热点,然后我要说“模拟响应”。现在,我要创建我的表。该表为我提供了我的设计,我将把我的系数更改为我计算的值。
让我继续重置它们。我说我的截距是 -1.73。我要将我的每个系数设置为 0.5。让我复制它,这样我就可以粘贴它们。最后,我要将我的分布、我的误差分布设置为二项式。现在,我要单击“应用”按钮。我希望您关注该表。它将生成我将用于分析的两列。让我先回顾一下。我想设置我的样本大小。我不能忘记这样做。如果您还记得,在原始实验中,我进行了五次运行。第二次我运行实验时。我要重新应用它。现在我得到了正确的方程式。
这些是我将用于初始分析和模拟的列。现在,如果您愿意,您可以实际对这些影响进行签名。通过签名,我的意思是根据您期望看到的关系将它们设为负数或正数。为了节省时间,我没有谈论这个。我有一张幻灯片,介绍了我如何通过这些不同的影响并说,嗯,应该是正数还是负数?也可以这样做。当然,它对结果的影响程度小于实际影响大小的影响程度。但对于大多数设计,除非它们完全正交,否则这些影响之间存在相关性,并且影响是正数还是负数可能会对我的功效值产生一定影响。
现在我已经完成了,现在我已经实际生成了我的初始设计,我将进入我的拟合模型。我将分析设计。我必须确保输入我的模拟和试验。对于这种特殊情况,我通常会使用广义回归,并且再次使用二项式,因为在模型简化方面有所有这些选项。好处是,通过模拟,所有这些都可以实现。我不必担心编写任何脚本来做到这一点。让我们继续运行它。再次,我将使用前向选择。我只需单击“开始”。让我向下滚动到我的前向选择模型。它就在这里。
现在我已经得到了我的单一观察结果,我可以做的是右键单击。我通常会将鼠标悬停在其中一个概率值上。我将右键单击,在最底部,有一个模拟选项。我必须确保在这两个选项中都选择了模拟成功次数的公式列,默认情况下应该是这样。我将指定要进行的样本试验次数。现在,一旦我单击“开始”,将会发生的情况是,模拟的每次迭代都会重新计算该公式列,并根据我的底层模型为我提供一组新的试验次数。
进行 2,500 次运行,然后将数据汇总到一份漂亮的报告中。现在,不用花时间看着它运转,速度很快。通常只需要半分钟,也许一分钟。我实际上已经运行了结果,结果如下。这是我的 2,500 次运行,比第一次初始运行少。我实际上在这里添加了一些额外的函数,公式,我很乐意与大家分享。但这是生成此报告时添加的两个脚本。功率分析只是分布的一个子集。让我们来看看功率分析。
它的作用是为我提供所有这些运行的大量数据,这些 P 值的分布是什么?如果您回想一下本例中的底层模型,您会发现一切都很重要。它告诉我,这是我通过模拟看到的 P 值的分布,我的预测值约为 1/10,000,所以这很好。我得到了我预测的 P 值的置信区间的计算结果。实际上,我不认为这是一个置信区间,因为我们使用的是贝叶斯方法。
这更像是一个可信区间。也许它是一个置信区间。但它会限制概率值。但一个有趣而重要的信息是我拒绝零假设的次数,在本例中是零假设。这告诉我,如果我选择 0.01 的 alpha 水平,我将有一半的时间拒绝零假设,即使我知道,事实上,我将其建模为真实效果。如果我选择 0.05,我将有四分之三的时间拒绝它,依此类推。
这是我用来提出问题的资料,我是否正确确定了实验规模?我是否能够检测到主效应、主效应和双因子交互作用以及对我的模型的任何其他影响,足够多次,足够比例的次数,让我对我选择的运行次数感到满意?我经常发现自己在这些情况下会这样做,因此我不仅依赖一些内置报告,而且我会做的是计算正确显著效应的数量。
我将输入一个截止值,并计算正确响应的数量。同样,所有这些都将与材料一起打包,并附上一点解释,以及我将如何构建所有这些模型的公式。同样,我真的需要使用我自己的风险定义来确定,我是否捕获了足够数量的这些显著影响,以使该实验值得运行 5 次、10 次或 20 次等等。好的,这就是我想在 JMP 中向您展示的内容。让我们回到我们的总结。
总而言之,当我对这些数据进行建模时,无论我使用哪种技术,我都将使用“拟合模型”平台。我有逻辑回归,在这种情况下,我可以使用逻辑回归或逐步回归,并在后台使用逻辑回归。我有广义线性模型,默认情况下,它将给我与逻辑回归相同的输出,但具有放宽对我的错误假设和纠正偏差的额外能力。然后,如果我有 JMP Pro,我就可以得到广义回归,它允许我执行我在逻辑回归或广义线性模型中看到的操作,此外还允许我进行一些模型制作。
当我确定实验规模时,我将使用自定义设计器构建实验,然后使用 JMP 的内置模拟功能来运行引导模拟实验和引导模拟分析。这就是我想要讨论的内容。补充幻灯片中将提供更多信息,遗憾的是我没有时间介绍这些内容,但我希望您喜欢所看到的内容,希望您能从中受益,并受益匪浅。非常感谢。