工程信箱
第六集:小心曲线!
简而言之:如何在实验设计中设置中心点时进行简单的曲率测试?观看视频即可了解!此外,现在还有一个插件可以进行这项分析——链接和详细信息在文章底部。
作为一项新功能——我将在这些文章中提供简短的视频讲解,重点介绍文章中的关键点。以防您需要快速找到答案。
介绍
我们系统工程师偶尔会遇到一些有趣的问题,这些问题超出了JMP的典型使用范围。有时,这些问题本身就很有意思,让我有机会深入探究我们在 JMP 中采用特定方法的原因。
今天这个问题需要特别解答。我经常在和接受过传统实验设计(DOE)方法训练的人交流时被问到这个问题。所以,这是一个帮助一位欧洲同事的机会,同时也能向大家展示一些你们可能不知道如何在JMP中实现的有趣功能。
这个问题
嗨,迈克,
我还有一个问题……如果我进行中心点运行,是为了检查是否存在二次项,但我可能不确定哪个项是二次项。我应该能够在不将其与任何特定因子关联的情况下检查是否存在显著曲率,我的理解是否正确?
凯文
我的回复
嗨,凯文!
……我对这个曲率检验做了很多研究。结果发现它其实就是一个t检验!我在蒙哥马利的书里找到了相关的公式。更重要的是,它真的很容易操作。虽然不是一键就能完成的,但我反而更喜欢这种方法,因为它能迫使你理解假设。我附上了一个数据表。
- 在数据表中创建一个列,用于指示某行的角点或中心点。如果您已有包含设计代码的列,则可以使用 recode 来实现此目的。
- 转到“拟合 Y 对 X”选项。将您的响应值放入 Y 列的“响应”字段中,并将您创建的指示角点或中心点的列放入 X 列的“因子”字段中。
- 点击确定。
- 在红色三角形下方,运行 t 检验(除非有重复样本,否则不要使用合并 t 检验)。你需要的是 Prob > |t| 的 p 值。本例中的零假设是均值之差(中心点和角点之间的均值之差)为零。蒙哥马利的解释是,如果 t 检验表明均值存在差异,则中心点位于与模型线性元素不同的平面上(存在曲率)。

如果你想把所有信息都放在一个报告里(就像[某个不愿透露名称但名字听起来像“really drab”的软件]那样),你只需要把标记模型中心点的列作为主效应包含在内(见截图)。点击“运行”后,顶部的“效应汇总”会得出类似的结论(区分中心点和角点并不显著)。你可以查看一下,看看能否在你的数据集上验证这一点。


最好的,
M
我刚才到底提了什么鬼建议?
在深入探讨这个话题之前,我想先简单介绍一下这个问题——因为我和我的同事经常被问到。基本上,这个问题源于经典的筛选设计(例如部分因子设计、Plackett-Burman 设计等)。这些设计通常采用两水平多中心点策略。这样做的好处是,在经典设计的框架内(稍后会详细介绍),资源利用效率非常高。缺点是,它只能让你寻找主效应和一些交互作用(如果运气好的话)。中心点的加入是为了对冲风险,以便实验者在后续实验中是否需要考虑二次项。这就是为什么在进行曲率分析时需要进行这种检验的原因。
好了,回到我的建议。我提出的建议可能看起来有点奇怪。我建议,在设计好的实验中,只需使用看似普通的t检验,就能找到曲线行为(这词儿听起来就挺有意思的!)。我的意思是,我们寻找像曲线行为这样名字听起来就很吸引人的现象时,似乎应该用一些更专业的工具。但事实并非如此。而且,这其实不是我原创的想法。正如我之前提到的,我最早找到的这种技术实例出自道格拉斯·蒙哥马利(Douglas Montgomery)的著作《实验设计与分析》(Design and Analysis of Experiments)。这本书是我研究生第一门统计学课的必读书目。课很棒,书也很棒。总之,回到我们讨论的话题。
我不会详细解释其中的数学原理,但基本思路是这样的:如果从研究系统中收集的数据具有严格的线性关系(例如,可以用直线连接数据集中的所有点),那么数据集均值(不包括中心点)的置信区间应该包含中心点均值的置信区间。因此,如果我们对边缘点和角点的均值与全局中心点的均值进行t检验,低p值表明系统中存在曲率,而高p值则表明系统曲率的证据不足。这并不意味着曲率不存在,只是噪声太大,无法判断。现在,由于信息量较大,我们来看一些例子,以便您更好地理解。
一个简单的例子
用两个连续因子的简单例子来形象化理解可能最容易。请注意,这里我模拟了数据,并且使用了比通常双因子设计中要多得多的数据。这只是为了说明问题,请继续往下看。另外,请注意,本文中的所有示例都发布在JMP 公共上,如果您想尝试使用它们,可以从那里获取数据集。
好的,这是一个包含两个因素和三个中心点的设计实验。
中心点用红色标出,以便后续定位。现在,让我们模拟一些数据到设计中,不考虑二次效应。在 JMP 中,我们可以使用 DOE 平台中的模拟响应功能来实现这一点。现在,在进行t检验之前,我们先来看看数据本身的情况。我们来看一个三维散点图。我已经添加了拟合模型及其95%置信区间,以展示蒙哥马利提到的平面。

你可以看到,当不存在曲率时,数据点位于由置信区间的上下限(蓝色和紫色网格)定义的区域内。
现在,我们来看一个我在模拟模型中加入一些曲率的例子。我使用了相同的线性和双因素交互系数,只是在数据中添加了一些二次效应。首先,我们来看一下三维图:

注意看,红色中心点不再位于由蓝色边缘/角点定义的平面内了吗?你是否也注意到中心点是如何……外部表面的置信区间是多少?
现在,如果我们查看这些数据集的t检验结果(我使用了JMP Public中的列切换器来显示两者),我们可以看到,在没有曲率的情况下,中心点和边缘位置的置信区间重叠得很好。该t检验的p值相当高,正如我们预期的那样。然后,您可以切换到存在曲率的情况,并查看置信区间和p值的差异。
t检验结果表明,有强有力的证据表明中心点与边缘/角点不属于同一总体。然而,我们知道这些数据来自同一系统,因此必然存在另一种解释——即该系统比我们想象的更为复杂,并且具有曲线行为。
更复杂一些的东西
接下来,我们稍微增加一下问题的难度:五个因素。这里的问题是,同样的逻辑是否适用于两个因素的情况?我们无法直观地描述这种情况,所以只能依赖 t 检验的 p 值。但我们提出的问题是一样的:中心点的均值置信区间是否与边缘/角点的均值置信区间重叠?就是这样。而且,同样的逻辑仍然适用。
在这个例子中,我基本上做了和第一个例子相同的事情。下图是设计空间的散点图矩阵。红色标记是中心点,蓝色标记是边缘或角点。还要注意的是,经典的全因子设计中缺少一些数据点。我这样做是为了说明即使使用 JMP 自定义设计方法,这种方法也有效。
如果我们看一下这两个模拟的 t 检验,我们可以看到 p 值非常清楚地表明数据集中何时存在曲率。
看来事情就是这样了,对吧?
其实不然。关于实验设计还有另一种思路,我认为它比简单地在筛选设计中随意添加一些全局中心点就完事,更能有效地解决这个问题。
现代能源部关于曲率的建议
DOE中曲率问题的根源在于经典设计中的两个难题。首先,过去人们必须用纸笔进行DOE计算,可能还需要用到RPN计算器(为了显得自己很懂技术)。因此,设计方案的选择旨在尽可能简化计算。这就将正交性的概念引入了实验设计领域。正交性使得数学计算更容易理解。第二个难题在于设计本身的创建。正交设计的概念相对容易理解,并且与传统的科学方法非常契合。它们很容易被编入实验人员的参考手册中。
这两个问题现在都解决了。你很可能不会用计算器(无论是RPN计算器还是其他计算器)进行数据分析。而且,你可能也不会翻阅尘封已久的古籍来确定实验方案,尽管你可能正在使用数字化的替代方案却浑然不知。事实上,除非你选修了一门统计学课程,而且教授非常严格,否则你肯定会使用软件来分析你的实验设计,甚至可能还会用它来生成设计图。这意味着你无需再用纸笔进行DOE分析——你可以让计算机来完成这项工作。这也意味着你可以让计算机算法来确定实验在设计空间中的位置,从而创建完全符合你需求的定制设计。抛弃旧有的限制,你就能使用一种极其强大的工具——现代实验设计。
我不会深入探讨现代实验设计(DOE)(这方面有很多优秀的书籍: 比如这本和这本都是不错的入门读物),而且相关文献也层出不穷。我将重点介绍现代实验设计的一个方面:最优设计。最优设计的简化版允许你从一开始就定义你认为的曲率位置。然后,算法会设置合适的实验条件来验证曲率是否存在,而不会造成任何浪费。这一点至关重要。你几乎不可能完全不知道研究系统中是否存在曲率。如果你在设计生成过程中与领域专家合作,他们应该了解这类信息。以下是 JMP 中相关功能的截图:

在模型部分,我已指出我认为主效应和交互作用都很重要。两个平方项周围的绿色方框表示我认为这两个因素的系统存在曲率。最优设计会将中心点放置在正确的位置以检验这种曲率。现在,如果我有五个因素,我可以只在模型项中包含我想要探索曲率的因素,如下所示:

请注意我未在此处列出的所有组合(交互和能力);这些都是我无需使用的素材。在分析此设计时,我们仍然可以在模型生成过程中检查曲率:
现在,如果您想在筛选设计中检验曲线曲率,您还可以使用一种现代方法:确定性筛选设计。这种设计内置了中心点,并且比部分因子设计和其他设计类型效率更高。JMP 社区的 Brad Jones 提供了一些很棒的资源。以下是我最喜欢的一些:
最后想说的
好了,就这些。在设计实验时注意曲线非常重要。你可以用 JMP 中的 t 检验轻松地通过中心点来检测曲率。分析本身并不神秘,但结果可能比较难解读。我的同事@Ross_Metusalem开发了一个插件,可以出色地完成这项分析并呈现结果。点击这里查看: 纯二次曲率测试。下次见,TTFN!
很棒的博客文章!
把我算在用铅笔(我从来没有用过钢笔……无法擦除我的错误)、纸和计算器创建和分析我们的实验设计的小组中……我从来不喜欢逆波兰表示法风格……总是更喜欢我所说的“执行顺序”式计算器。
然后我被介绍给 SAS,稍后又接触到 JMP...并且再也没有回头!