因此,使用 API Rest(即数据库访问)获取实时信息至关重要。在本例中,HTTP 请求用于定期上传曼彻斯特未来七天的天气预报。然后,通过 JSON 解析自动准备数据以定义规格限值,并自动生成 JMP Live 报告。这些报告可以包含交互式可视化效果或统计监控工具,例如控制图。此 SPC 监控遵循与天气验收设计空间相关的一系列约束条件,并在发生偏差时发出警报。这些警报会通过电子邮件通知所有关注偏差存在的人员,以便他们做出相应反应。通过这种方式,JMP Live 中数据访问、数据准备、报告、控制图更新和实时通信的整个 SPC 链完全自动化。
大家好,欢迎收听本次演讲,主题为“我应该带伞去曼彻斯特吗:过程监控的类比”。我是 Florence Kussener,JMP 的首席系统工程师,12 年前加入法国的 JMP。
本主题的目的是创建一个案例研究,重现您在日常工作中可能遇到的所有流程监控步骤。从问题的定义、数据收集、所有分析步骤、信息共享(这非常重要,我会花时间讨论)到所有这些不同步骤的更新。流程监控中还有一件事也很重要,那就是改进。我会花大量时间讨论这个问题。这就是我本次会议的议程。
接下来,我想要的是一些可访问且定期更新的数据。在这个过程中,我使用了一些天气数据。我为本次会议制定的定义和情况评估数据是:当你准备旅行时,你必须打包好所有东西。问题是,我需要带雨伞吗?我需要一件外套吗?或者其他什么?要回答这个问题,你需要查看天气。
现在我们通常会在手机或电脑上安装一些应用程序,用来查看天气预报。这正是我要用 JMP 做的事情,我能在 JMP 中重现所有这些步骤吗?
之前,我首先需要定义我的设计空间。在日常工作中,我们通常需要定义你的设计空间,最好的方法是使用实验设计。无论实验设计是什么。在某些情况下,你可能有一些数据。也许你的历史数据可以给你一些关于设计空间的见解。如果你有一些数据,但这些数据不够好,你可以将历史数据和你的实验设计(DOE)结合起来。
最后,重要的是找到可以调整输入变量以达到产品质量的地方。我的情况略有不同。我是在夏天创建数据并进行这个过程的,所以没有冬天的数据。我无法创建关于天气数据的设计空间。这是不可能的。我需要探索不同的指标,所以我根据我的情况选择了温度和降水。
我所做的是,我创建了一个空间填充均匀设计,并用一些先验信息填充了数据。你可以看到,我记录了温度和降水量,并将我的感受值写在1到10之间。我们可以看到,我们有一些可接受区域,它们被我的两个正方形用绿色突出显示了。
第一个就是这个,也是我们今天要重点关注的,降水量不太高,气温在8到30度之间。显然,如果气温低于8度,我很快就会感到冷。如果气温超过30度,我可能还好,但也要视情况而定,并非总是可以接受的。
我们可以看到,当气温接近零度且降水量较大时,其他地区的降水量会更大。这是因为我喜欢滑雪和单板滑雪,所以在这种情况下我非常开心。但在曼彻斯特,情况并非如此。我们不在阿尔卑斯山,不会进行滑雪或单板滑雪活动。我专注于这个地区,所以降水量低于1.5,气温在8到30度之间。
之后,我需要一些数据。通常,当你需要定期更新的数据时,你会用到数据库,所以你的 UDBC 数据库,也就是月命令,但我们不仅可以拥有类似的数据。有些人使用 Excel 或 CSV 作为数据库。
就我的情况而言,我会使用一些更具体的东西。我会使用一个 API。这个 API 可以让我连接到 Visual Crossing 网站,然后我会通过 HTTP 请求从该网站提取一些数据。
看看这个网站,你就能知道里面有什么……应该打开我的网站。不知道今天为什么这么长。总结一下,这个网站在启动时非常棒,因为它有一些不同的参数设置,我可以在这个网站内部进行设置。
首先,您可以选择要查找的城市。本次会话中,我们查找的是曼彻斯特,但您也可以自行选择城市。您可以选择时间段。例如,15 天、日期范围、动态时间段、仅两天、过去七天?您可以选择过去七天或未来七天。您可以选择时间段,也可以选择度量单位。我是法国人,所以我用的是摄氏度,但您可以更改。
你也可以说说对你来说重要的内容。你想要的是每日还是每小时的信息?你想要什么指标?我选了一些,但没有全部选上,但你可以看到,你可以获取湿度、降水量、降水概率,有没有雪?你对温度有什么感觉吗?它和实际温度可能有所不同。你还有风、太阳辐射以及所有相关的描述。
这里有数据表。你也可以找到其他格式的数据表,我对此很感兴趣,因为我可以以 JSON 格式获取数据——我想我对此很感兴趣——我已经有一些图表了。但让我感兴趣的是,这个网站正在为我创建 API。它是一个 URL,与我之前进行的所有参数化操作相关。
这里有这个 URL,我可以使用它。如果我想使用它,你可以在 URL 中看到,你需要一个我们称之为 API 密钥的东西。你需要注册并创建一个 API 密钥。我这边就是这样做的。你可以看到我生成了一个 API 密钥,这就是我在这里输入的名称。我还指定了城市变量,因为我的脚本很容易更改。如果我想查看巴黎的情况,我可以很容易地进行更改。
这里您可以看到 URL,它比我们之前的 URL 稍微复杂一些。您可以看到,我想要的是未来七天的数据,所以我正在收集预测信息。您可以看到我具体想要哪些参数。我没有收集所有参数,只是收集了温度、降水、风力和太阳辐射等参数。
我说的是我想要当天的信息,但实际上也包含小时信息。这里你可以看到我的 API 密钥放在那里。最后,我希望输出一个 JSON 文件,因为 JMP 处理 JSON 文件的能力很强,所以这正是我所要求的。
现在我有一个 HTTP 请求,其中声明了我想从网站获取信息。之后,我只需要传递 JSON 文件。我们可以看到,这个 JSON 文件有两个级别,一个与日期相关。对于每一天,我都有小时信息。这就是为什么我为第三个元素设置了第二个级别。您可以看到,那里再次包含了小时信息。
最后,我有我的数据表。您可以看到这张截图是在12月截取的。您可以看到,我收集了他们七天的数据,以及实际日期。您可以看到,这是12月5日的数据。您可以看到,我收集了从5号到12号,也就是七天的数据。但我也收集了真实的信息,也就是昨天发生的事情。
这能让我最后做一些比较。我们可以看到降水量的变化,所以降水量和温度的变化有一些异常值。12月这周,预计温度在零下2度到12度之间。
对于分析部分,我创建了一些不同的工具。你可能已经了解其中一些。我刚刚创建了一个图表,其中显示了实际温度,黄色表示填充物。我们可以看到,与填充物相比,有时实际温度会有一些异常值。
这里我还有一张热力图,它能提供天气变化的信息。你可以看到,前三天比接下来几天更冷,而接下来几天气温更高。这张图是温度图。我在这个图上装了一个冒号转换器,所以如果我想检查其他数据,可以切换一下。我还有一个等效的控制图。
我们可以看到同样的情况。在接下来的七天以及接下来的几天里,气温会非常低。我们可以观察到的是,我设定了规格限值,并将其作为控制限值,这样当超出规格限值时,我就能快速检查,并设置了一些警报。一旦低于8度,我就会看到警报被激活;一旦高于8度,就会略低于30度,但在冬天的这个时候,这不是问题所在。但我们可以看到,在这方面,我的情况还不错。
我在进行统计过程控制 (SPC) 时非常喜欢的另一个报告是过程筛选报告,它能让我通过一份报告同时洞察所有参数。我们可以看到,对于我收集的不同元素,例如温度、风速、降水概率、风向、太阳辐射和每小时降水量,这份报告提供了稳定性、一些警报以及不同警报的发生率。就我的情况而言,对我来说,最重要的就是警报。
我们可以看到,我们得到了 Cpk 和 Ppk。显然,温度的 CPK 为负值。本周的风速情况很好,真棒。这里,我没有对曼彻斯特的风向做任何说明,因为我不知道曼彻斯特的天气和风向对人的感觉有何影响。但在这种情况下,它还是有用的。
我认为,例如在法国南部,受风力影响,未来几个小时或几天的天气情况会有所不同。这是我为数据分析和后续跟踪创建的另一个工具。
分析完成后,需要共享分析结果。通常,使用 JMP 有两种不同的方法。第一种方法更高级,就是使用数据表,这是第一步。我会将我的数据表和附加的脚本共享给其他人,这样他们就可以看到发生了什么。
或者您可以使用 JSL,这样可以帮助您实现更多自动化,从而运行您的 JSL。如果您对此 JSL 感到满意,可以将其添加到插件中。这非常简单,因为您可以使用自己的工具丰富您的 JMP 环境,并与其他人共享。
我想说,唯一的困难是在某些情况下维护起来比较困难。如果我更新了JSL或插件,就需要再次与其他人共享。你需要JMP来实现这一点。有时,控制图需要与不做分析的人员共享。他们只需要了解发生了什么,缺陷率是多少,以及考虑到这个缺陷率,我们应该做出什么决策。
在这种情况下,当您需要与非 JMP 用户共享时,可以做的是创建一些易于共享的静态报表,但 JMP 功能的使用会受到限制。当然,所有交互都会丢失。您有静态报表及其处理方式。您需要针对此问题进行一些处理。
我目前使用的情况是通过 JMP Live 生成网页版报告。这样做的一大优势是易于共享。我保留了 JMP 的灵活性和交互性。我可以与 JMP 用户共享报告,也可以与非 JMP 用户共享。我可以限制哪些人可以访问此报告。这其中的安全性非常重要。
关键在于所有工作流程都可以验证。在这种情况下,你的工作流程会像GSL那样进行验证,但对于制药公司来说,我正在考虑,但所有步骤的验证都很重要。在服务器上验证所有这些工作流程并共享所有内容非常好。
您可以看到,您拥有的报告与我之前创建的报告相同。让我们打开这份报告,看看里面的内容。我正在打开我的网页。我需要检查安全性。我有权查看这份报告吗?我的名字已经保存在那里了。我记得我自己。应该没问题。您可以看到,我叫 Florence。我是这份报告的所有者。我在那里有另一份报告。我们可以看到相同的内容。
我们可以看到这份报告的更新时间。今天是1月19日,但您可以看到我的报告更新于1月15日,我稍后会再讨论这一点。例如,您可以查看一下当前的情况。对于温度,我们可以看到曼彻斯特本周的预测数据。
本周预计会相当寒冷,直到本周末,所以本周末英国的气温将会发生转变。我们可以看看降水情况。我们可以看到气温有所好转,但21日可能会有一些雨天,甚至会下很多雨。太阳辐射则相反。如果下雨,就会有云,所以太阳辐射会减少,而且我们可以看到风速的变化,所以21日将会刮风下雨。
这是我能做的第一次咨询。当然,我们还有其他报告,比如“过程筛选”报告,可以突出这些不同的方面。您会看到,我在这份报告的末尾删除了风向,所以我们可以看到,风向控制得很好,但温度非常非常低。我们的Ppk和Cpk都是负值,所以这不是一个好情况。在实际生产过程中,情况会非常非常糟糕。
如果我看一下控制图,你会发现控制图比较具体。那里有一个红旗突出显示,你也可以在那里看到。它告诉我有一些活动警告。这是什么意思?这意味着我在 JMP 环境中激活的警告也出现在那里。是的,我可以看到那里有一些警告。对于整个星期的所有预测,我只有几个小时的温度会超过 8 度。
我有一些警告,但不仅仅是温度方面。我们可以看到,是的,我们需要带伞,因为周末预计会有降水。我们可以看到,这个周末没有太阳辐射,而且,是的,有风。
我想说的是热图的分析部分,也就是之前的热图,但这里有更多分析,以及我的控制图。我可以看到,那里再次出现了警告。如果我查看这个摘要,我可以看到每个控制图中警告的比例是多少。在这里,我可以看到警告数量非常多,94% 的点超出了我的控制限值,所以正如我所说,这是一个糟糕的情况。对于降水量,我看到只有 3 个点,总共 6 个。对于风速,我有 10%。
在这个例子中,我只激活了测试 1,因为它是唯一有意义的。但您可以使用另一个,比如,我需要增加或减少一些设置吗?在我的例子中,如果我使用增加和减少设置,我每天都会收到警告,但这没有意义。例如,由于我白天的温度有一些变化,所以我没有激活它们,但您可以选择激活任何您想要的警告。
这[听不清 00:20:45]是协作的。这意味着,如果你的控制图或其他报告中出现了一些特定的情况,你想提出一些意见,你可以听取并描述你的观察结果,还可以标记其他用户来采取行动。
所有注释都存储在这里。您可以在 JMP 中打开它。对于需要进行更高级工作(例如根本原因分析或其他)的 JMP 用户,他们可以在 JMP 中打开它。它会将数据集下载到 JMP 中,以便您进行数据探索。如果您对此报告感兴趣,可以将其添加到书签中。我这里有一组书签报告,我为一些同事或用户制作了一些非常棒的报告,我将它们添加到书签中。您可以分享它们。
我想向大家展示的是,关于控制图的具体操作,你可以进行订阅。稍后我会详细介绍这一点,但订阅控制图意味着,当你收到警告时,你会收到通知,也就是电子邮件。我们稍后再讨论。
这里有四份报告,可以分享给任何需要的人。回到我的幻灯片。您看到,这份报告的目的是为了在整个组织内共享和协作。不过,有一点非常好,那就是您可以自动发布报告。这意味着我刚才提到您可以订阅报告,但当您订阅后,让我向您展示发生了什么。
由于我是该报告的所有者,您可以看到,每次报告更新时,我都会收到此类电子邮件。这表示数据已成功刷新。只是因为我是该报告的所有者,所以并非每个人都会收到此类邮件。
关于控制图警告,订阅报告的用户都会收到。您会看到,周一数据刷新后,我收到了这份报告,上面说我有一些控制图警告。我收到的信息与报告中的信息完全相同。我看到我的警告率为94%,与我们之前看到的一样,而且我们可以看到警告何时到达。
我知道现在就会发生。我们现在非常寒冷,所以现在就下雨。比如说,如果我查看其他地区,我们可以看到降水情况,他们会给我发报告。15号那天,他们告诉我会有一些降水,但要过几天。
它能让你了解这是我已经涵盖过的危机,还是我的控制图中出现了新的问题?如果我点击那里的链接,我会直接进入网页。现在不是我要打开……我们要打开控制图,检查是否有问题发生。现在是控制图跑来告诉我:“哦,有事发生了。” 如果什么都没发生,我当然不需要花时间去做这件事。
它是如何工作的?事实上,如果我回到那里,它会直接在控制图上打开。如果我回到那里,你会看到我有不同的文件与我的……我有不同的报告,还有数据集。这个数据集,你可以看到我有历史记录。这个历史记录就在那里。你可以看到我的历史记录,以前,从12月初开始,我每天都在收集信息。你可以看到它每天都在那里更新。
目前,我决定改变一下,每周都安排一个计划。你可以看到,现在我每周都会提取一次数据。为什么?因为我意识到在网站上,我有权访问一定数量的数据。目前,我当时会去付款,所以我不想那样做。我决定每周更新数据,因为我知道我三月份才去曼彻斯特,所以不需要每天在邮件里收到相关信息。
我是怎么做到的?在这里,如果我进入设置,你可以看到,我输入了信息,我希望每周一晚上10点发送,也就是英国时区的晚上10点。而我的时区是11点。这就是为什么我11点会收到一封邮件。我可以看到我可以重复发送。如果我不想每天发送,而是希望频率更实时,我可以进行一些调整。我可以根据需要调整发送频率,甚至可以调整到每五分钟一次,或者每小时一次,或者每12小时一次。一切都随心所欲。我只需输入即可。
你可以指定每小时发送一次,但仅限于工作时间,这样例如晚上就不会有信息了,而且你可以设置一个截止日期。你可以有多个调度程序。我们可以设置一个每周发送一次的调度程序和一个每小时发送一次的调度程序。你还可以设置一些映射,根据周末、假期或日常工作进行调整。
在左侧,您可以找到一个脚本。这个脚本负责我所做的所有数据访问和数据准备工作。您可以看到,我拥有 API 密钥的访问权限、城镇信息、我设置的规格限制以及 URL。您可以看到与我之前幻灯片中展示的代码完全相同的代码,其中包含我设置的所有数据准备工作,包括我的属性中的规格限制等等。
我的所有数据集和数据表都已准备好。最后,我必须告诉 JMP 我将使用哪个数据表。因为我有一些不同的数据表,所以你需要通过实际数据表的提醒来最终确定。这是我的刷新剪辑,用于更新。你可以在这里放置源脚本,有时不同,有时相同。你可以在那里找到源脚本。当你连接到真实的数据库时,分配的凭据会更多,你需要将某些凭据分配给某些人。
这里您可以看到,您可以查看数据,当然,它会打开一个数据网格,但我想展示的是,您可以要求刷新数据。当我执行此操作时,您可以看到刷新脚本正在运行。如果我现在返回数据表,您可以看到不同的报告已重新生成。例如,我现在可以返回控制图生成器,我们可以看到我现在拥有从现在到第二天的信息。
我的邮箱里现在收到一封邮件,说我的数据集需要更新。另一封邮件说我收到了一些控制图警告,而且你可以看到警告率降低了。现在是19日11:38,警告减少了,而且温度似乎也稍微高了一点。通过JMP Live实现这种自动化非常方便,可以根据数据的变化快速做出接近实时的决策。
在总结改进之前,我想最后说一点。在流程监控中,即使你非常明确地定义了你的设计空间,你也可能会遇到一些危机,或者遇到一些不同的情况。如果你遇到了危机,你处于“消防员”模式,但你或许正朝着持续流程改进的方向前进。
也许你会遇到变化,比如设备或其他原材料可能会发生变化。你需要进行分析,设计实验来检查一切是否正常。你可能会遇到新的限制,例如,现在很多公司都受到生产过程中产生的氧气和碳等生态限制的影响。
在某些情况下,你可能需要定义哪些指标至关重要,因为收集数据是有成本的。有时,你的数据相关性很高,或者你收集的数据并不那么重要。也许你还需要定义哪些指标至关重要。我的情况略有不同,因为我有预测数据。我无法进行根本原因分析,但请记住,如果采集的数据过多,数据采集成本就会很高。
我开始思考,我真的需要每天收集数据吗?或者每周收集一次就足够了?事实上,预测的质量如何?我收集数据,然后检查发生了什么,看看真实数据、实际情况以及预测结果之间有什么区别。
这里,颜色越浅,预测的天数就越多。在这种情况下,我无法得出很多结论,所以我做的就是创建了按天预测的距离变化,这样我们就可以看到,这是我的目标,我们可以看到,如果我关注第一天,那么今天的预测是什么,我在这里用的是这种深红色。我们可以看到,随着预测天数的增加,颜色越来越浅,距离也越来越远。看起来,是的,我们可以在白天做出一些努力,但不要太多,因为否则,正如我所说,温差会很大。
我在这里收集了所有一个月的数据。我观察到,当我获得当天温度的信息时,我会关注温度。我发现中位数小于1,直到今天也是如此。之后,我发现平均值越来越大,直到六天都达到2。
但对我来说,重要的是我的感觉。平均值是一回事,但我想关注差异的最大值。如果我观察差异的最大值,我们可以看到,前一天或前两天的数据大致相同,之后我们又有了一步。你看,这里是最大值。它显然是相同的,但之后,我们确实有了一步。似乎前三天,我可以每三天收集一次测量数据。
仔细观察,我们会发现这三个首日的数据存在一些异常值。如果我观察这三个首日的数据,我们会发现其中有一天的数据与前两天的数据存在差异,也就是异常值。每次都是11月25日。我收集了所有11月份的数据,所以是11月30日。之后我们可以看到,11月21日也出现了差异。
如果我查看11月25日的数据,我们会清楚地发现实际情况与预期相差甚远,非常寒冷。如果我查看所有月份的数据,我们可以看到——这只是实际测量数据——是的,25日的气温变化非常大。甚至新闻里也报道过这种情况。我们可以看到,第一个系统袭击了英国大部分地区,气温降到了零度以下。如果你查看一下,是11月25日。似乎有一个非常大的变化,而且是计划之外的。
最后,为了确保万无一失,我决定删除这个异常值。删除后,我发现今天和明天的预测结果略有不同,而且非常接近,但再过一天,就开始出现一些差异了。
我决定坚持每隔一天收集一次数据,也就是每两天收集一次。我们可以看到,如果我进行2K测试,每天收集和每两天收集的数据平均值似乎并没有什么不同。最后,我们可以调整一下。我之前展示的网页上,我可以设置“好的,我想每两天收集一次数据,而不是每天收集”。目前,我们设定的是每周收集一次,但您可以轻松更改。
总结一下这个关于天气的例子,我能够重现所有流程监控步骤。从设计空间的定义到更新,所有这些步骤都已更新。定义完成后,我会对数据收集、数据分析和共享进行更新,这些操作每天都会自动化进行。
从改进的角度来说,通常当我们进行改进时,我们会致力于设计空间的定义。就我的情况而言,我会使用改进方法来探索数据,并检查与数据库最合适的连接方式。
希望您能从中看出这与您在生产现场的日常工作以及所有流程控制之间存在某种关联。如果您有任何疑问,我很乐意为您解答。祝您拥有美好的一天。