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