|
扬声器
|
脚本
|
| 丰富的n |
大家好,我叫 Rich Newman,是英特尔的一名统计员。今天我将介绍一个 JMP 脚本,该脚本使用 K-最近邻方法确定同时 95% 的界限。 |
| |
该演示文稿由唐肯特 (Don Kent) 共同撰写,他也是英特尔的员工,我们俩都位于新墨西哥州的里奥兰乔。 |
| |
我想从问题的根源开始今天的演讲,然后,我将分享一些可能的解决方案,并最终找到我们采用的解决方案。 |
| |
在此过程中,我将提供一些图表来进一步说明要点,最后,我将展示我们用来解决问题的 JMP 插件和一些说明脚本的屏幕截图。 |
| |
我们正在设计一个设备,我们需要知道我们看到的最坏情况的四个电阻和四个电容值是什么。 |
| |
对我们来说,最坏的情况定义为低电阻/高电容和高电阻/低电容的组合。因此,为了清楚起见, |
| |
我们有八个变量,我们可能需要同时确定四个低电阻值和四个高电容值的界限,这样我们就可以用它来帮助我们设计设备。最坏的情况可能定义为 95% 置信度或 99% 置信度,最终这取决于用户。 |
| |
好吧,为了说明这个问题,我们只使用一个电阻和一个电容值。因此,我在 X 轴上表示电阻,在 Y 轴上表示电容,我们想知道两件事。我们想知道那个黄色星号,最糟糕的 |
| |
低电阻/高电容组合,我们想知道紫色五边形,高电阻/低电容组合。 |
| |
好的,关于我们的问题,我想指出的是,我们认识到这八个变量,这八个响应并不是独立的。它们之间存在一些相关性。 |
| |
此外,这些响应中的每一个都可能遵循或不遵循正态分布或多元正态分布。 |
| |
我们经常问这类问题。换句话说,我们不想解决这个问题就完事了,再也不处理它了。我们被问到这些问题 |
| |
所以我们确实需要一个易于使用的强大解决方案。在我们的案例中,我们很幸运,因为我们往往拥有相对较大的数据集,至少有 400 个点,而且我们通常有 |
| |
1,000 点。对我们来说,只要有统计方法论支撑,实用的解决方案就行得通。所以如果我回到之前的图表,我不会在那张图上扔飞镖,然后说,无论它落在哪里, |
| |
这将是我们的最坏情况界限。你确实需要更多细节,但我想指出的是,我们不一定对最坏情况有一个定义,无论是 99% 还是 95%。 |
| |
我们只知道最好保守一点,以确保我们设计的设备确实能正常工作,并且将来不会出现任何问题。 |
| |
好吧,我想分享一个完全虚构的例子,只是为了说明这种问题在任何行业都可能发生。 |
| |
想象一下,我们为教室制作了可调节的课桌,并且我们希望我们的课桌能够适合 99% 的人口。 |
| |
一个人的身高和一个人的宽度。 |
| |
现在,当你使用 JMP 时,它会附带一些样本数据,其中一个数据集称为 BigClass。在 BigClass 中,它具有 |
| |
一些学生的身高和体重。因此,我们可以使用该数据集来帮助我们确定覆盖 99% 人口的身高和体重范围。 |
| |
所以如果我看右下角的这个图表,我们会看到这些点代表……每个点代表一名学生的身高和体重组合。 |
| |
好吧,如果我回到我们的问题上, |
| |
我们相信,我们目前的方法是可以改进的,即独立找到电阻和电容的 95% 或 99% 的预测界限。 |
| |
在这个例子中,我只看一个电阻和一个电容,我们会发现两个单独的界限。 |
| |
举例来说,我们会发现阻力的 95% 预测边界值为 4.52 和 4.97,以深蓝色线表示。 |
| |
然后,我们会发现电容的 95% 预测平衡,即 15.6 和 16.5,由绿蓝色线条表示,然后我们找到组合来获得黄色星号和紫色五边形,这是我们最坏的情况。 |
| |
现在我们对这种方法有点担心。第一个担心的是 I 类错误率。因此,当我发现 1 号阻力的 95% 界限和 2 号阻力的 95% 界限时... |
| |
对于电容 1,请记住,我有八个变量,总体而言,我知道我的置信水平,不是 95%。而它是什么,将取决于变量的相关性。 |
| |
现在我们可以通过进行 alpha 调整来克服这个障碍,但我想讨论的另一个障碍对我们来说更令人担忧。 |
| |
好吧,如果我们对这个黄色圆圈指定的高/高组合感兴趣怎么办? |
| |
在这个特定的例子中,你可以看到我们没有任何接近这个最坏情况界限的数据,所以如果我们要使用它,这是非常保守的。 |
| |
当我们设计我们的设备时,它会有一个相关的成本和时间元素,所以我们想要稍微保守一点,但我们不想太保守以至于使用这个黄色圆圈,因为我们实际上没有得到它周围的任何数据点。 |
| |
好的,我们想考虑一些可以在 JMP 中轻松完成的替代方法来解决此问题,其中第一个是密度椭圆。 |
| |
这是在“Y 乘以 X”平台中找到的,因此,如果我在双变量拟合中点击红色三角形,我可以选择密度椭圆,在本例中,我选择了 95% 椭圆。我在图表上得到了红色椭圆。 |
| |
好吧,当 JMP 提供这个密度椭圆时,如果你看演示文稿的右下角,它会呈现两个变量的平均标准差和相关性。 |
| |
JMP 不提供椭圆方程。现在,这是我们可以克服的一个障碍。我们只需要做一些数学运算就能解决它。 |
| |
但更大的障碍是,如果你有两个以上的变量会发生什么?在这种情况下,JMP 没有简单的选择 |
| |
以便我们解决这个问题。因此,我们可以做成对的省略号,或者一次只做两个变量,但我们会遇到相同的 alpha 问题,而且挑选出我们想要用作 ??? 的点会非常困难。 |
| |
现在,这种方法中还有一个非常小的问题,那就是如果我们对那个高/高角或那个黄色圆圈感兴趣怎么办?我们选择椭圆上的哪个点? |
| |
再次重申,我认为这是一个我们可以克服的障碍,但当我们有两个以上的变量时,这是一个相当棘手的障碍。我们不确定它是否能轻易解决。 |
| |
好的,我们可以使用另一种方法...我们可以...这可以在 JMP 中轻松完成,那就是主成分。 |
| |
主成分的作用是创建新变量,JMP 会将它们标记为 Prin 1 和 Prin 2, |
| |
这样新变量就相互正交了。我们可以利用正交这一事实来帮助我们解决最坏情况的界限。 |
| |
这是在多元方法平台中发现的,因此如果您去分析多元方法、主成分,我们可以要求这些主成分。 |
| |
现在对主成分方法的担忧是,当有两个以上的变量时,数学计算会变得极其困难。 |
| |
此外,理论上,主成分会尝试降低维数,换句话说,如果我有八个变量,我想尝试找到这种最坏情况的同时......同时界限, |
| |
但 JMP 可能会回来说,好吧,我们发现了三个主要原理,它们确实有助于解释正在发生的事情。 |
| |
在这种情况下,我们有三个方程,有八个未知数,这确实使我们很难解决这个问题。因此,出于这个原因,我们不会使用这种主成分方法。 |
| |
那么我们该怎么办呢?所以我们的目标是找到同时发生的最坏情况界限,即高/高、低/高或低/低/高/高的组合。 |
| |
我们想使用...我们想使用 JMP 来帮助我们解决问题。它必须能够处理三个或更多变量。 |
| |
每个变量可能正常,也可能不正常。我们预计会存在一些相关性。好消息是我们往往拥有相对较大的数据集。 |
| |
我们希望确保如果我们请求这个角落,那么那里就有数据,我们不会陷入没有数据的境地。同样,一个简单实用的解决方案可能就足够了。 |
| |
好的,现在我想要做的是解释一个概念,然后我将向你们展示如何使用这个概念来解决我们的问题。 |
| |
因此,有一个概念称为 K-最近邻方法,其思想是,你有一个点,然后找到从该点到其他每个点的距离。 |
| |
然后确定该点的 k 个最近邻点,或者距离最短的 k 个点。为了理解这一点,让我们看一个例子。让我们关注用红色突出显示的点……深红色,它的坐标是 |
| |
4.51 和 15.66。如果我取蓝色点,坐标为 4.67 和 15.54,我就能找到这些点之间的距离。 |
| |
或者最近邻居的想法是针对红色点,我可以在数据集中的每个其他点找到与该点的距离。 |
| |
然后我可以按距离从小到大进行排序,然后挑选我想要的距离。 |
| |
因此,例如,如果我想知道当 k=2 时,与红色点最近的两个点,我会看到它们是粉色的两个点,并且它们是最接近红色点的点。 |
| |
好的,我现在想做的是讨论解决方案,然后从高层次讲解,然后我会慢慢讲解这些步骤。我们的解决方案是基于,如果你有一个大数据集, |
| |
我们可以先找到每个变量的中位数 +/-3 个标准差(我想指出的是,你也可以使用平均值), |
| |
在这样做的过程中,我们定义了所谓的目标角,或者期望角,这就是最低的最高点......基于每个变量的最低点。 |
| |
然后我们要做的就是找出每个点到目标角的距离,然后按距离从小到大进行排序, |
| |
在我们的例子中,为了满足我们的需求(我将在下一张幻灯片中对此进行更详细的解释),我们将 k 个最近邻带到目标角落。一般来说,您可以收集代表所需置信度的 k 个邻居。稍后我将对此进行更详细的解释。 |
| |
然后我们要做的是取 k 个邻居的平均值,这就是我们的解决方案。 |
| |
好的,我们的想法是,从两个变量开始,找到平均值 +/-......对不起,中位数 +/-3 标准差,我们也可以使用平均值。 |
| |
在这样做时,我们称其为我们的目标角,所以如果我对低/高角感兴趣,那么五角大楼中黄色星星的高/低角就是我们所说的她定义的目标角。 |
| |
下一步我们获取所有数据点并找到数据集中每个点到目标角落的距离。 |
| |
一旦我们得到这些距离,我们就会按从小到大的顺序排列它们。 |
| |
然后,在这个特定的例子中,我们找到最接近目标角的 k 个最近邻。因此,作为说明,您可以看到黄色的五个点 |
| |
是距离黄色星星最近的五个点,紫色的五个点是距离紫色五边形最近的五个点。 |
| |
然后我们要做的是分别取这五个点的平均值,这样,这些黑色椭圆代表我们将用作最坏情况的值。 |
| |
然后我们将用它来帮助我们设计我们的设备。 |
| |
现在我想向你们展示那些相对于密度椭圆和相对于这些目标角的点,黄色星号和紫色五边形就是我们原来的方法。 |
| |
我们可以看到密度椭圆并不坏,它们变得更好了一点。这个特定解决方案真正好的地方在于我们在它们附近有数据点,这正是它的设计。 |
| |
此外,它对我们来说并不太保守,因此在设计设备时我们不必支付这笔额外费用,也不必担心数据的分布。相关性实际上与我们如何解决问题无关。 |
| |
好吧,假设您对高/高和低/低边界、浅蓝色五边形或深蓝色星形感兴趣。此方法同样有效。 |
| |
您在黑色椭圆中看到的就是我们的解决方案,这里我们再次有了数据点。 |
| |
所以,对我们来说,这是一个非常棒的方法,因为,特别是相对于我们目前的方法,它并不太保守。它可能有点保守,但不像这个五边形和星形那么保守。 |
| |
好的,之前我对我们如何处理这个问题发表了一些评论,并且有一些选择,所以现在我想讨论一下 K 的选择以及我们应该取平均值吗? |
| |
对我来说,K 可能取决于你的信心水平、样本大小和哲学类型,让我解释一下。 |
| |
举个例子,假设我有 1,000 个数据点,并且我希望有 95% 的置信度。 |
| |
在这种情况下,我可以取两个角的第 25 个最近距离,那就是低边或低/高边的偏差为 2.5%,另一边的偏差为 22.5%,这样我就获得了 95% 的置信度。 |
| |
因此,我只需取第 25 个最接近的距离即可。这是一种方法。我还可以取第 23、24、25、26 和 27 个距离,然后取平均值。 |
| |
然后取五个值的平均值,并以此作为方法。因此,有几种不同的方法可以处理它。 |
| |
在我们的特定需求中,我们再次强调,我们有非常大的样本量,我们希望稍微保守一点,我们不受 95% 或 99% 置信度的影响。因此,为了说明目的, |
| |
右侧图表上的橙色圆圈可能表示 95% 的置信区间,也可能只是 5 个点的平均值,或者可能是第 25 个最近距离,这只是一个例子。 |
| |
我们不会使用这种方法,而是取前 25 个点的平均值,这样我们就会得到黑色椭圆,您可以看到它们在向外移动,这使得它更加保守。 |
| |
所以我们特意这样做,做得更保守一些。 |
| |
再次强调,这是一个选择,对我们来说,好的方面是它不像那些期望的角落那样保守,我们目前的方法,所以我们在其中得到了一点保守的性质,但我们并不是非常保守。 |
| |
好吧。那么这种方法的优缺点是什么?优点是我们不需要知道变量的分布。 |
| |
我们可以轻松处理一些相关性或因变量,我们可以轻松处理多个变量,尤其是两个以上的变量。 |
| |
我们知道有接近该解决方案的数据,其中一部分取决于大数据量,我们可以在 JMP 的插件中构建脚本来轻松执行计算。 |
| |
缺点是它确实需要一个相当大的数据集,因为如果您想要 99% 的置信度作为示例,一个真正高的置信度,您确实需要大量的数据。 |
| |
好的,这就是我们的插件的样子,这个用户界面,所以你可以在左上角看到可能的变量。 |
| |
然后在高侧输入,例如,我们想要电阻的高值,即绿色突出显示的部分。如果我转到紫色突出显示的部分,我们可以在低侧添加一些值,因此在这个例子中,我们会说我们想要低电容组合。 |
| |
然后您要做的下一件事就是输入您想要的信心。 |
| |
我们还有一个召回按钮,这为人们带来了很大的方便。 |
| |
然后我们有我们的团队标志,这使得物品看起来漂亮且专业。 |
| |
好的,一旦您运行这个插件,它将触发脚本并且输出将是一个 JMP 表。 |
| |
在这个 JMP 表中,我想指出的第一件事是,在这个突出显示的绿色突出显示中,对于所有八个变量,我们得到了中位数、标准差,以及我们感兴趣的是低端还是高端。 |
| |
因此,我们将从那里构建所需的角落,因此它将是中位数减去低端的三个标准差,以及中位数加上高端的三个标准差。现在再次用紫色表示,这是我们的目标角落。 |
| |
然后我们要做的是找到所有点的距离 |
| |
到所需的角。然后我们将在此示例中找到最接近所需角的五个点,这就是邻域值。它们将成为我们的五个值的向量。邻域索引,我将在下一张幻灯片中进一步解释。 |
| |
然后,我们用蓝色表示这五个最近邻的平均值,这就是我们解决问题的方法。所以蓝色那一列是最坏情况值,或者说是我们用来帮助我们设计设备的最坏情况值。 |
| |
现在我们还有一列称为邻居 Z 分数,它取邻居的平均值,即我们的解决方案,然后向后推算出它与中位数相差多少个标准差。 |
| |
我们这样做的原因在于,我们最初的方法是大致取这个中位数加上或减去三个标准差。 |
| |
我们发现,为了得到我们想要的结果,我们实际上可以使用更小的乘数。所以这只是帮助我们了解我们当前的方法有多保守或过于保守。它没有用于任何计算,只是帮助我们理解。 |
| |
好吧,我提到了那些邻里……对不起,邻居索引。所以在右上角我用紫色突出显示了 109 和 126。 |
| |
这对应于数据的行。因此,当您运行此插件时,您将获得 JMP 表。 |
| |
它会告诉你哪五行代表五个最近的邻居, |
| |
并在原始数据集中选择它们。这样做的好处是,它使颜色编码变得容易。之前,我向你展示了黄色的例子,所以有五个黄色和五个紫色。 |
| |
一旦运行此插件,就可以轻松地立即更改颜色...运行插件后即可。 |
| |
好的,这就是我们的八个变量的输出。 |
| |
你可以看到,绿点代表低电阻/高电容值,红点代表高电阻/低电容值。我只想指出,在这张图的右下角,我用紫色突出显示了, |
| |
例如,您可以看到绿点和红点,它们不是任何给定变量的极值点,这是该问题的同时性方面。 |
| |
它实际上解决了所有八个变量的问题。因此,对于某些变量来说,这可能是极端的,而对于其他变量来说,可能不是,这对我们来说没问题。 |
| |
但是再说一次...这样做有助于理解变量之间的关系,这又将以图形方式显示我们的最终解决方案、最坏情况...最坏情况值。 |
| |
好的,如果我回到那个 BigClass 数据集只是为了说明插件,我想认识到这是一个小数据集。这只是为了说明目的。我可以运行脚本并要求高/高侧,我可以运行它并要求低/低侧。 |
| |
像之前一样,再次执行此操作,我将获得中位数和标准差。我将使用它来找到界限。 |
| |
这就是我想要的角,然后我要找到最接近该边界的五个邻居。您可以看到绿色的是实际值,它们在图表上用黄色和紫色绘制。 |
| |
邻居索引指的是行,这使我能够快速地对数据进行颜色编码。 |
| |
邻居平均值是我们的黄色星星和紫色五边形,这就是我们解决问题的方法。我们再次计算 Z 分数,这样我们就可以内部了解这种方法的保守程度。 |
| |
好的,现在我只想强调一下我们脚本的一些要点。当我们构建脚本时,您可以在右上角看到,我们构建了这个面板框。 |
| |
浅蓝色是我们要求用户输入的变量...我们在高端找到的变量和在低端找到的变量。 |
| |
在那种铜色中,我们输入的是百分位数,它实际上是一个数字。 |
| |
您还可以在第 222 行和第 223 行看到,这就是我们正在构建的召回函数。 |
| |
好的,我们喜欢做的事情之一就是数据质量检查,所以你知道我们希望它尽可能地防错,防错误。 |
| |
例如,您必须以数字形式输入该置信度,然后我们会进行检查以确保它介于 0 到 100 之间,否则用户会收到一条错误消息,提示他们需要更改输入。 |
| |
同样,在底部,我们需要低列表或高列表中的一些内容才能运行它,因此我们进行这些数据检查以确保已输入某些内容。 |
| |
好的,我们接下来要做的事情是使用 sumcols 函数。 |
| |
sumcols 函数的作用是循环遍历过去的列。换句话说,它会获取您输入的最低值和最高值 |
| |
并返回一个字典或关联数组,其中包含一些对我们很重要的信息。所以如果我看右边,右下角, |
| |
抱歉,如果我看右下角,例如橙色部分,它会收集数据类型的信息, |
| |
有多少个数据点,中位数是多少,标准差是多少。紫色部分表示计算结果,并得到我们想要的结果 |
| |
角点或目标角点,我们将其称为边界。蓝色的 AA 是我们的关联数组,它包含或存储了下一步所需的所有信息。 |
| |
好的,我们从这里开始计算这些距离。所以你可以在蓝色高亮部分看到, |
| |
那是低的,如果你正好在它下面,那是高的。我们开始寻找从每个点到目标角落的距离。 |
| |
我们必须进行数学运算,您知道,这之前已经展示过了,我们先求平方,然后取平方根,但本质上我们只是找到从点到三西格玛的距离。 |
| |
然后在底部,我们将对它们进行排序,按距离排序,然后挑选出我们需要的。 |
| |
我想用橙色突出显示六、七和八。 |
| |
每当我们写剧本时,我们都会尽力征求意见。有时,当一个人在写剧本时,不幸的是,他被其他事情牵扯进来,其他人就可以 |
| |
完成它,所以有这些评论真的很好,这样其他人就可以接手并真正了解发生了什么。 |
| |
此外,即使你是唯一一个从事这项工作的人,这些评论也很好,如果你几年后需要回去看,你还记得每一步都在做什么。所以我们会尽力发表评论。 |
| |
好的,最后,我们要做的是,你知道,我们遍历低端和高端,然后返回字典中的一些值。你可以看到蓝色部分,我们所做的是挑选出最小邻居,这就是输出中出现的向量。 |
| |
然后我们取平均值,这就是我们的解决方案;橙色部分就是这个。举个例子,紫色部分是我们找到的 Z 分数。所以一旦我们得到信息,所有这些距离,都已经排序好了, |
| |
然后我们挑选出我们需要的信息来构建一个属于我们的表格。 |
| |
好吧,把所有这些放在一起。我们的动机问题是,我们希望找到这些同时发生的最坏情况界限来帮助我们设计设备,而我们目前的解决方案过于保守;它浪费了我们的金钱和时间。 |
| |
当我们解决这个问题时,我们知道数据可能遵循也可能不遵循多元正态分布,我们的数据不是独立的。 |
| |
这个频率确实需要一个简单的解决方案,最好使用 JMP,所以我们的解决方案 |
| |
是为了构建一个易于使用的 JMP 插件,它使用 k-最近邻概念,并且输出易于理解,它可以帮助我们快速构建那些可以用颜色编码的图形,以便我们向其他人展示。 |
| |
好的,非常感谢。 |