分析程序需要严格按照行和列结构排列的数据,并且通常将行视为独立的观测值。因果图则将行置于一个层级结构中,用父子关系来描述。该平台最初用于记录质量管理中的头脑风暴结果,但它也是一个强大的工具,可以用来可视化其他结构。
JSL 脚本中的通用数据结构是关联数组和列表。它们的元素可以是值,也可以是列表或关联数组,从而为快速高效地管理复杂数据结构提供了一个框架。JSON 接口在系统通信中应用广泛,是另一种层次化数据结构的例子。如果对数据项采用不同的处理方式,并在处理后测量不同的参数,则可以采用相同的方式记录实际的组合。
本次演示中,我们将介绍(并提供)一个 JSL 函数,该函数能够遍历列表或数组,并将所有内容放入数据表中。因果图以图形化的方式展示了内容。应用示例则说明了该概念的通用性和强大功能。
欢迎,请跟随我一同深入探索深邃的层级结构。我们先从一个数据表开始。这是我们想要看到的布局:一个完整的网格,没有空白,也没有缺失值。但是,当我们查看这个数据表时,会发现布局和晶圆 ID 这两个字段存在重复值。这表明数据表存在层级结构。
我们先从简单的入手,使用 JMP 脚本语言 JSL 来理解什么是层级结构和组织结构。这是一个列表。列表用花括号括起来,元素按位置进行访问。这里的第二个位置是我的姓氏,Heinen。
这是相同的内容,但以关联数组的形式呈现。关联数组用方括号括起来,其元素带有名称。此元素名为 fn,代表名字,并且数据已绑定。名字的内容已绑定。
构建数据结构有两种不同的方法。这些结构可以相互堆叠,从而产生像这样的组合转换。你会看到很多花括号和方括号,最后还会看到两个方括号和闭合的花括号。在这种结构中,很难确定每个元素的位置。
但了解这一点很重要,因为例如在所谓的 REST 接口中,计算机与互联网服务通信时,数据是以 JSON 结构交换的,而 JSON 结构正是列表和关联数组的组合。弄清楚每个元素的位置至关重要。
手动操作有点笨拙。有个程序可以帮你完成这项工作。这个程序是我写的,我把它分享出来。你不需要了解很多编程知识。这里只有两个重要的语句:for 循环和递归。
“for”表示这是一个循环。括号内的所有内容都会重复执行多次。递归很有意思。它告诉JMP,记住程序当前的位置,然后重新运行整个程序。运行完毕后,再回到这里继续执行。递归本质上可以重复任意次数。
这个程序做什么呢?它首先会获取整个数据结构。然后它会询问:你的数据是列表还是关联数组?如果是,我们就将其指定为父级。当我们思考层级结构时,可以想到世代关系:祖父母、父母、子女、孙子女等等。这是第一代父级。
我们取第一个元素,也就是它的第一个子元素,然后增加堆栈层级,记住我们现在处于第二代,然后重新开始整个查询过程,直到到达终点。终点始终是一个数据元素。
然后我们记住,保存这个数据元素的所有信息,降低堆栈级别,这样我们就回溯一代。我们现在位于孙代,现在我们再回溯一代,询问该代中是否有同级元素?如果有,我们就选择下一个同级元素,整个过程重新开始,直到没有同级元素为止,最终到达堆栈顶部,也就是祖代。然后我们生成输出。
在这种情况下,或者举个例子,在重叠比较中,标准化的零件被送到实验室,用不同的分析仪进行测试,并输出不同的测量值组。
然后对这些数据进行分析,并显示在这张表格中。我们可以看到表格中有父级和子级两列,我稍微加了点颜色,以便更清楚地说明情况。这是向下遍历到第一个数据元素的第一条路径,然后是它的所有同级元素,向上再一层,我们发现已经到达了终点,没有更多子元素了,然后再次向上再一层,就到了下一个结构元素。
由于我们也保存了数据,所以我们清楚地知道每一步都在讨论什么。无论是关于实验室、关于零件,还是关于实验室分析中的一组测量值。在底部,您可以看到一个值,在本例中称为 cv,即变异系数。
像这样的数据表我们该怎么处理?我们要生成这个图表。它在“分析”菜单的“分析”>“质量和过程”>“图表”里。我以前做过,所以可以自动填充。这其实很简单。
默认是鱼骨图。最后,我们在这里看到整个集合。这很难阅读。右键单击这里,我们可以将类型更改为层次结构。现在我们可以看到最多七层的层次结构,这里是整个集合的开始,依此类推。我们还有关联数组和列表。
我们如何浏览这些分组呢?当然,我们首先要查看整个数据集。然后,我们向下浏览一个包含各个部件的关联数组,再向下浏览第一圈。可以看到,这条线一直向右延伸,所以还有很多圈。我们选取其中一个分析仪,在本例中是 E2。这组测量值是一个列表,列表中的第三个元素是值为 6 的数据点。
这正是程序员访问该数据点的方式。这比在这种结构中摸索要容易得多。我们有一个程序可以进行分析。我们有应用程序、JSON 接口、REST 接口和 JSON 结构,这些都非常有用。
一切都完美吗?嗯,脚本假定数据结构已经是 JSL 结构。如果能有一个用户界面,用户可以说:“这是我的数据表。这是我的列层次结构。请生成一个像这样的图表。”那就更好了。然后程序就会生成相应的图表。
当您使用此图表时,您可能会发现它与 JMP 的集成度并不像现代平台那样高。它似乎源自 JMP 2 或 3 版本。如果 JMP 开发人员看到了这条信息,请对该平台进行改进。
您可以从我的Discovery演讲网页上获取演讲稿。如果您感兴趣,或者有任何疑问,或者想在3月7日星期四的Discovery峰会上见到我,请到2号展位(宴会厅)找我。我会在那里。