扬声器
|
成绩单
|
| 丰富的 |
大家好,我叫 Rich Newman,是英特尔的一名统计学家。 今天,我将介绍一个 JMP 脚本,该脚本使用 K-最近邻方法确定同时 95% 的界限。 |
| |
此演示文稿由 Don Kent 共同撰写,他也在英特尔工作,我们俩都位于新墨西哥州的 Rio Rancho。 |
| |
我想从激发问题开始今天的演讲,然后我将分享一些可能的解决方案,并最终确定我们采用的解决方案。 |
| |
在此过程中,我将提供一些图表来帮助进一步说明要点,最后,我将展示我们用来解决问题的 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,由绿蓝色线表示,然后我们找到组合得到黄色星形和紫色五边形,这是最坏的情况。 |
| |
现在我们对这种方法有点担心。 第一个问题是第一类错误率。 因此,当我发现阻力 1 的 95% 界限和阻力界限的 95% 时... |
| |
对于电容 1,请记住,我有八个变量,总的来说我知道我的置信水平,而不是 95%。 它是什么,将取决于变量的相关性。 |
| |
现在我们可以通过进行 alpha 调整来克服这个障碍,但我想讨论另一个障碍,它对我们来说有点更大的担忧。 |
| |
好吧,如果我们对这个黄色圆圈指定的高/高组合感兴趣怎么办? |
| |
在这个特定的例子中,你可以看到我们没有任何数据接近这个最坏情况的界限,所以如果我们要使用这个,这是非常保守的。 |
| |
当我们去设计我们的设备时,它会有一个成本和时间因素与之相关,所以我们想要保守一点,但我们不想太保守以至于我们会使用这个黄色圆圈,因为我们真的没有得到任何数据点。 |
| |
好的,有一些替代方法可以在 JMP 中轻松完成,我们想考虑作为解决此问题的方法,第一个是密度椭圆。 |
| |
这是在 X 平台拟合 Y 中找到的,所以如果我在二元拟合上点击那个红色三角形,我可以选择密度椭圆,在这种情况下,我选择了 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 标准差(我想指出,您也可以使用 mmean), |
| |
在这样做的过程中,我们定义了我们所谓的目标角,或我们想要的角,这是最低的最高……基于每个变量的高点越低。 |
| |
然后,我们要做的是找到每个点到目标角的距离,我们将从最小到最大的距离排序, |
| |
并且,就我们的需求而言(我将在下一张幻灯片中对此进行更多解释),我们将 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% 的置信区间,它可能只是五个点的平均值,或者可能是第 25 个最接近的距离,例如。 |
| |
我们要做的不是使用这种方法,而是取前 25 个点的平均值,这样做我们会得到黑色椭圆,你可以看到它们正在向外移动,它正在生成保守一点。 |
| |
所以我们通过设计来做到这一点,更保守一点。 |
| |
再一次,这是一个选择,对我们来说,好的是它不像我们目前的方法那样保守,所以我们在那里有一点保守的性质,但我们并不是非常保守。 |
| |
好吧。 那么这种方法的优缺点是什么? 积极的一面是我们不需要知道变量的分布。 |
| |
我们可以轻松处理一些相关或因变量,我们可以轻松处理多个变量,尤其是两个以上。 |
| |
我们知道有接近该解决方案的数据,其中一部分取决于大数据量,我们可以在 JMP 的插件中构建脚本以轻松执行计算。 |
| |
不利的是,它确实需要一个相当大的数据集,因为如果你想要 99% 的置信水平作为例子,一个真正的高置信水平,你真的需要大量的数据。 |
| |
好的,这就是我们的插件的样子,这个用户界面,所以你在左上角有可能的变量。 |
| |
然后在你输入的高边,例如,我们想要电阻的高值,那是绿色突出显示。 如果我去紫色突出显示,我们可以在低端添加一些值,所以在这个例子中,我们会说我们想要低电容组合。 |
| |
那么接下来你要做的就是输入你想要的信心。 |
| |
我们有一个召回按钮,这对人们来说非常方便。 |
| |
然后我们有我们的团队标志,这使项目看起来漂亮和专业。 |
| |
好的,一旦你运行这个插件,它就会触发脚本并且输出将是一个 JMP 表。 |
| |
在这个 JMP 表中,我想在这个突出显示的绿色突出显示中指出的第一件事是对于所有八个变量,我们得到中位数、标准差,以及它是低端还是高端我们感兴趣。 |
| |
所以从那里我们将建立所需的角落,所以它是中值减去三个标准偏差的低边和中值加上三个标准偏差的高边。 现在又是紫色,这是我们的目标角落。 |
| |
然后我们要做的下一件事是找到所有点的距离 |
| |
到那个想要的角落。 然后我们将在这个例子中找到最接近所需角的五个点,这就是邻域值。 它们将成为我们的五个值的向量。 邻域指数,我将在下一张幻灯片中解释更多。 |
| |
然后在蓝色中,我们取这五个最近邻居的平均值,这成为我们解决问题的方法。 所以蓝色的那一列是最坏情况值,或者它们是我们用来帮助我们设计设备的最坏情况值。 |
| |
现在我们在这里还有一个名为 Neighbor Z-score 的列,也就是说,它采用邻居平均值,我们的解决方案,并且向后工作,看看它与中位数有多少标准偏差。 |
| |
我们这样做的原因是因为我们最初的方法是大致取这个中位数加或减三个标准差。 |
| |
我们发现,为了得到我们想要的,我们实际上可以使用一个小得多的乘数。 所以这只是帮助我们了解我们当前的方法是多么保守或过于保守。 除了帮助我们理解之外,它没有用于任何计算。 |
| |
好吧,我提到了那些邻居……对不起,邻居索引。 所以在右上角,我用紫色突出显示了 109 和 126。 |
| |
这对应于数据的行。 因此,当您运行此插件时,您将获得 JMP 表。 |
| |
它会告诉你哪五行代表五个最近的邻居, |
| |
并在您的原始数据集中选择它们。 这样做的好处是,它使着色代码变得容易。 所以早些时候,我向你展示了黄色的例子,所以五个黄色和五个紫色。 |
| |
运行此插件后,只需在运行插件后立即更改颜色,就很容易了。 |
| |
好的,这就是我们的八个变量的输出。 |
| |
你可以看到,绿点代表低电阻/高电容值,红点代表高电阻/低电容值。 我只想在这张图的右下角指出我用紫色突出显示的部分, |
| |
例如,您可以看到绿色和红色点,它们不是任何给定变量的极端点,这就是这个问题的同时方面。 |
| |
它确实解决了所有八个变量的问题。 因此,对于某些变量,这可能是极端的,对于其他变量可能不是,这对我们来说很好。 |
| |
但是再次......这样做有助于理解我们的变量之间的关系,这将再次以图形显示我们的最终解决方案是什么,我们最坏的情况......我们最坏的情况值。 |
| |
好的,如果我回到那个 BigClass 数据集只是为了说明加载项,我想认识到这是一个小数据集。 这仅用于说明目的。 我可以运行脚本并要求高/高端,我可以运行它并要求低/低端。 |
| |
像以前一样再次这样做,我将获得中位数和标准差。 我要用它来寻找界限。 |
| |
那是我想要的角落,然后我会找到最接近那个边界的五个邻居。 您可以看到绿色,这些是实际值,并且在图表上以黄色和紫色绘制。 |
| |
邻居索引指的是行,这使我可以快速对数据进行颜色编码。 |
| |
邻居平均值是我们的黄色星星和紫色五边形,这将是我们解决问题的方法。 我们再次进行 Z 分数,以便我们在内部对这种方法的保守程度有一个想法。 |
| |
好的,在这一点上,我只想强调我们脚本的一些要点。 因此,当我们构建脚本时,您可以在右上角看到,您知道我们构建了这个面板框。 |
| |
浅蓝色,这就是我们要求用户输入变量的地方……我们在高边找到变量,在低边找到变量。 |
| |
在那种铜色中,这就是我们输入百分位数的地方,这实际上是一个数字。 |
| |
您还可以在第 222 和 223 行看到,这就是我们正在构建的召回功能。 |
| |
好的,我们喜欢做的一件事是数据质量检查,所以你知道我们希望它尽可能地防错,防错。 |
| |
因此,例如,您必须将置信水平输入为数字,然后我们进行检查以确保它在 0 到 100 之间,否则用户会收到一条错误消息,提示他们需要更改输入。 |
| |
同样在底部,我们需要低列表或高列表中的某些内容才能运行它,因此我们进行这些数据检查以确保输入了某些内容。 |
| |
好的,接下来我们要做的是有一个叫做 sumcols 函数的东西。 |
| |
sumcols 函数的作用是遍历过去的列。 因此,换句话说,它正在获取您输入的低点和高点 |
| |
并返回一个字典或关联数组,其中包含一些对我们很重要的信息。 所以如果我看右边,右下角, |
| |
对不起,如果我看右下角,例如橙色,它将收集有关数据类型的信息, |
| |
有多少数据点,中位数是多少,标准差是多少。 在紫色中,它将进行计算并得到我们想要的 |
| |
角落或目标角落,我们将称之为界限。 然后是蓝色的 AA,这是我们的关联数组,它带来了所有信息或存储了我们下一步需要的所有信息。 |
| |
好吧,我们从这里开始计算这些距离。 所以你可以在蓝色高光中看到, |
| |
那是偏低的,如果你从它下面走,那是偏高的。 我们开始寻找从每个点到目标角的距离。 |
| |
我们必须做数学,你知道,这在前面显示,我们在平方然后取平方根,但本质上我们只是找到从点到三个西格玛的距离。 |
| |
然后在底部,我们将完成对它们进行排序的过程,对这些距离进行排序,然后挑选出我们需要的那些。 |
| |
我想用橙色突出显示,六、七和八。 |
| |
每当我们编写脚本时,我们都会尽最大努力发表评论。 有时,不幸的是,当一个人正在编写脚本时,他们会被拉到其他事情上,而其他人可以 |
| |
完成它,所以很高兴有这些评论,这样其他人就可以接管并真正了解正在发生的事情。 |
| |
此外,很高兴这些评论,即使你是唯一一个致力于它的人,如果你必须回到它,你知道,多年后,你记得每一步都在做什么。 因此,我们尽最大努力发表评论。 |
| |
好吧,最后,我们所做的是,你知道,我们遍历低端和高端,并在字典 j 中返回一些值。 你可以看到蓝色,我们所做的是我们提取最小的邻居,这就是输出中出现的那个向量。 |
| |
然后我们取它们的平均值,这就是我们的解决方案;这是橙色的。 举个例子,紫色是我们的 Z 分数。 所以一旦我们得到信息,所有这些距离,已经对它们进行了排序, |
| |
然后我们提取我们需要的信息,然后构建一个属于我们的表。 |
| |
好吧,所以把所有这些放在一起。 我们的动机问题是我们想找到这些同时出现的最坏情况界限来帮助我们设计设备,而我们目前的解决方案过于保守;它花费我们的金钱和时间。 |
| |
而当我们去解决这个问题时,我们知道数据可能服从也可能不服从多元正态分布,我们的数据不是独立的。 |
| |
而且这种频率确实需要一个简单的解决方案,最好使用 JMP,所以我们的解决方案 |
| |
是构建一个易于使用的 JMP 插件,它使用 k 近邻概念,输出易于理解,它帮助我们快速构建那些我们可以用颜色编码的图表,以便我们可以向其他人展示。 |
| |
好的,非常感谢。 |