脚本分析

在本演示中,我们将了解如何编写 JMP 中一些常用平台执行的分析脚本。在“日志”部分,我将点击“混凝土强度和湿度数据”,这是我将在本演示的所有示例中使用的数据集。因此,我们得到了混凝土混合料的类型、最终的混凝土强度以及混凝土干燥时的环境湿度。我将把它移到一边,因为在本演示过程中我们实际上不会查看表格。回到课程日志,我将点击“分布分析脚本”。因此,在这个预先编写的脚本中,我们将分布作为消息发送到数据表“混凝土”,并将该结果存储在变量 dist 中——存储该对象引用。再次强调,这将是分析层的对象引用。我把所有三列——混凝土类型、湿度和强度——都放在 Y 分析角色中,然后在启动时请求这三列的相同选项。但正如我们在打开报告窗口时所看到的,并非所有列都能响应所有这些选项。因此,我将运行几行代码,从启动平台时分布的参数中获取一些信息——“堆叠”是红色三角形菜单中的一个选项——在顶部,“分布”旁边——它只是将直方图更改为水平,更改我们通常在直方图下方看到的报告表的位置,以及它们是并排排列——直方图本身是并排排列还是垂直排列。“堆叠”是红色三角形菜单中的选项——您可以看到我们的脚本使用布尔值将其关闭。因此,您的脚本可能会选择这样做,因为这实际上是一个非常常见的选项,用户会在首选项中更改它,以便始终拥有堆叠分布。如果以默认方式组织这些内容对脚本结果很重要,您可能需要关闭堆栈。此外,我们指定直方图为垂直直方图。这可以在“直方图选项”下每个红色三角形的单独红色三角形菜单中找到。您可以看到这里已选中。再次强调,这是默认设置,因此脚本只是试图确保呈现效果与 JMP 中的默认设置一致,而不管用户偏好如何。现在,在脚本的下一行,我们关闭了分位数。分位数仅适用于连续变量。如果您在任何这些子菜单中查看“具体类型”旁边的红色三角形菜单,您将找不到“分位数”一词。但是,如果我查看“显示选项”下“湿度”或“强度”旁边的红色三角形,分位数通常默认启用,但您可以看到它在此菜单中未选中,因为我们使用了布尔值。同样,对于连续变量,“异常值箱线图”通常启用。我们用布尔值将其关闭,这样就不会出现异常值箱线图。最后,我们用括号中的布尔值请求了正态分位数图,这通常不会启用,但我们为这些变量请求了。再次强调,这是平台启动的一部分,因此能够响应这些命令的变量确实响应了这些命令。现在,一旦我们启动了平台并将对象引用存储在一个带有分布的变量中,我就可以一次与所有变量通信,或者我可以向各个列或变量发送消息。我使用下标来实现这一点。所以这条线只是显示我们向所有三列发送拟合分布(正态)——即拟合正态分布。当然,由于“混凝土类型”是名义型的——它无法响应,但“湿度”和“强度”会响应。所以我运行 line。你可以看到,我们将拟合的正态分布叠加在两个连续分布上,并且我们还得到了拟合的正态轮廓项。这又是红色三角形菜单中的命令。“拟合分布”是该命令的旧名称。在新版本的 JMP 中,它被称为“连续拟合”,但它们仍然有效。我想注意一点——让我回到日志。当我运行脚本启动分布时,显示的是平台的名称。这表明我有一个分析层对象引用。在脚本中,如果我将鼠标悬停在 dist 上,我就会看到它。而当我事后从红色三角形菜单发送命令时,我得到的只是“可脚本化”的结果。现在,lines 和 将对均值进行单样本检验。在红色三角形菜单中,命令只是“均值检验”。但对于湿度来说,我的样本均值为,样本均值的强度约为,因此对这两个变量测试相同的假设均值实际上没有意义。所以,让我以交互方式实际演示一下。如果我转到连续变量旁边的红色三角形并选择“测试均值”,我会输入一个假设均值。因此,我将取消该选项并返回到脚本编辑器窗口。因此,我正在测试均值是否等于,并将其发送到分布窗口的第三列。因此,我将使用数字为 dist 加下标。因此,我将运行行。如果我导航到“报告”窗口,就会看到对均值的单样本 t 检验。然后,我将对湿度执行相同的操作,并使用不同的假设均值,并且我的下标方式会略有不同。我将使用列的名称作为字符串(作为下标),而不是其在报告中的位置。我将运行一行,然后得到湿度的t检验结果。这只是分布平台的几个示例,以及使用红色三角形菜单中的命令编写分析层脚本。让我们继续使用单向平台。我将继续关闭分布脚本和分布报告,但我仍然将使用“混凝土”数据表。因此,在日志中,我将点击单向方差分析脚本。这开始有点宽泛。我们将整个启动过程放在一行中。因此,我们将消息发送到数据表“混凝土”。该消息是单向平台启动,Y角色为“强度”,X角色为“混凝土类型”,我们请求使用布尔参数启用这些均值菱形。我们将分析层对象引用存储在ow中。我将运行一行,这样我们就得到了输出窗口,当然还有平台的名称。如果您将鼠标悬停在ow上,这就是存储在ow中的内容。那些绿色的均值菱形——如果我点击“单因素分析”旁边的红色三角形,你可以在“显示选项”下的“均值菱形”下找到它。默认情况下,如果我没有进行方差分析,这些菱形是不会打开的。但我的脚本可以打开它们。现在,我不需要把这个脚本窗口弄得这么宽了。我们继续看另外几个例子。在这里的红色三角形菜单中,我们有一个设置alpha值的选项。有三个标准值。然后还有一个“其他”选项,你可以随意选择。在这个例子中,我发送了消息到ow,设置alpha值。我将把它设置为。请注意,这些绿色均值菱形的高度——也就是均值的置信区间,或者换句话说,就是均值的负alpha置信区间。默认的alpha值是。所以,如果我将alpha值设置为,这些将是置信区间。所以它们会变得更高。我会运行一行代码,这样我们就能看到这些菱形平均值的高度发生了变化。如果我转到红色三角形,我们可以为单向平台请求的另一个报告是分位数报告。所以我在一行代码中打开它。请注意,此菜单中没有子菜单的命令——它们可以接受括号中的布尔参数,或者,正如您在一行代码中看到的方差分析(ANOVA),它与均值同义,它们根本不需要接受任何参数,而带有子菜单的菜单项会将这些子菜单项作为其参数。稍后我会讨论为什么我们可能想要使用布尔参数,即使它不是必需的。但现在,我将运行一行代码,这样我就得到了分位数报告表,并在图上绘制了箱线图。现在,请记住,方差分析和均值是同义词。所以这只是红色三角形菜单中的另一个命令。但再次强调,我没有在布尔参数中添加括号。那么当我运行该行时会发生什么?我会运行它。然后我得到了方差分析。再次强调,我应该指出,在日志中,我们每次与平台交互时都会看到该平台名称。现在,如果我再次运行该行会发生什么?我会在日志中收到一条消息——一条带有空布尔参数的消息启用了一个已经启用的选项。该选项仍然保持启用状态。它只是提到,在早期版本的 JMP 中,您实际上需要通过反复运行该行来来回切换,而无需提供布尔参数。所以,如果您查看用旧版本编写的脚本,您可能会看到这种情况。不过,我们建议您作为最佳实践始终使用该布尔参数,以便在脚本中清楚地显示我启用了该选项而不是将其关闭。然后,当我想删除它时,如果我想删除它,我会运行一行包含布尔值的语句。实际上,我们这样做是为了关闭“分位数”报告。因此,在一行中,我将用一个替换,然后只运行这一行。现在,“分位数”选项已被删除。最后,我们在之前的演示中看到,您可以将消息级联到对象。但我们也可以向对象发送消息列表。因此,我将在脚本编辑器窗口中新建一行。存储分析层对象引用的变量 ow 将接收该消息。它将是一个列表,即“不等方差”。我将使用布尔参数来启用它。让我转到红色三角形菜单。这就是“不等方差”。这为我们提供了异方差检验。我将在“不等方差”的布尔参数后面加上一个逗号,并在其后加上括号。我要将 Alpha 级别恢复到默认值,所以我输入“set alpha level”,然后在括号中输入“set alpha level”。我需要关闭括号,因为我在输入完成之前将光标移出了这一行代码。然后,我将箭头指向列表——让我移动它以便可以看到整行——并输入一个分号。这样我就可以只运行这一行,再次使用数字键盘上的 Enter 键。现在窗口底部是方差不齐检验。在顶部,您可以看到我们已将 Alpha 级别恢复到默认值,所以这些是我们的置信区间。小蓝线来自方差不齐检验。以上只是使用单向平台中红色三角形命令编写脚本的几个示例——让我们关闭此报告窗口并关闭此脚本而不保存更改。在日志中,我将点击“双变量脚本”。再次,我们使用的是数据表“Concrete”。因此,存储此分析层对象引用的变量是 biv。我将“二元变量”发送到该数据表,Y 角色为“强度”,X 角色为“湿度”。然后,我请求“拟合线”,它来自平台启动时显示的红色三角形菜单。因此,我将运行拟合线。同样,我们会在日志中看到平台名称。如果我将鼠标悬停在 biv 上,我就会看到该名称。因此,我们绘制了“强度”与“湿度”的关系图,并拟合了回归线。然后是其他一些消息——如果我再次转到那个红色三角形,就会看到“拟合线”。我可以在事后发送任何其他命令。实际上,我可以在启动后发送“拟合线”。但我将使用“拟合多项式”。您会看到有那个子菜单。因此,我们必须使用这些参数。在行中,我将该消息发送到 biv,“拟合多项式”,即二次或二阶多项式。我将运行该线。这样我就进行了第二次拟合。当我向上滚动时,您会看到第二个拟合结果叠加在图表上。这里有两个红色三角形菜单,一个用于线性拟合,一个用于多项式拟合。它们各自拥有与窗口顶部二元拟合层级的命令不同的命令。例如,如果我想对线性拟合的置信带进行阴影拟合——命令是“置信阴影拟合”(Confid Shaded Fit)——我实际上需要做一些特殊的事情。我必须先与线性拟合进行通信。然后,线性拟合接收到该消息后,结果会作为消息发送给二元拟合。这里编写的方式——我们简称第一个为——它们都称为“曲线”(Curve)。我们使用下标“它接收置信阴影拟合”消息。该消息收集在括号中。这就是 biv 接收的消息。如果没有这些括号,biv 会尝试理解曲线,当然,你不会在任何子菜单或主菜单中找到曲线。你也不会在这里找到置信阴影拟合。它与此曲线相关,在报告中标记为线性拟合。因此,如果我运行所有线条,我会得到回归线上的阴影置信带。同样,在这些红色三角形菜单中,但我将单击多项式拟合旁边的菜单,我们可以更改线条颜色。默认第一个拟合为红色,第二个为绿色,依此类推。所以假设我想将其更改为蓝色。同样,我可以将其发送到第二条曲线,将其括在括号中,这就是传递给二元变量的信息。所以我将运行线条,你会看到线条颜色已经改变。现在,这也是一些东西。如果您想知道如何编写脚本,并且不需要在平台启动后将其作为消息发送到平台——您希望将其作为启动的一部分——您可以以交互方式执行此操作,然后让 JMP 将该脚本保存到脚本窗口并以此方式进行操作。如果您这样做,那么 Confid Shaded Fit 将成为 Fit Line 的一个参数。您还可以将多项式拟合作为启动的参数。线条颜色将是它的一个参数。我们最后要看的是“双变量”平台,但在“按角色”中有一个变量,这样我们就可以为每个“按角色”变量获得单独的双变量对象。因此,我将关闭脚本窗口。我将关闭“双变量”报告。在课程日志中,我将点击“分组双变量脚本”。与上一个脚本一样,我通过将消息发送到“混凝土”数据表来启动“双变量”平台,该数据表将结果存储在变量“biv”中,其中“强度”作为“Y”角色,“X”作为“湿度”角色。但现在,我另外将“混凝土类型”添加到“按分析”角色中。让我们看看当我运行这些线时会是什么样子。因此,我们实际上在这个报告窗口中有六个双变量对象。我在日志中看到的是一个包含六个元素的列表已被分配。那么,这个列表是什么样子的?我将返回脚本编辑器窗口,将鼠标悬停在“biv”上。它包含六个双变量对象。因此,我可以向“biv”发送一条消息。所有对象都会响应,就像我发送“拟合线”时一样。日志中显示的是所有响应对象的列表。如果我们查看窗口——我将通过按住 Ctrl 键并点击第一个线性拟合旁边的轮廓显示按钮来折叠所有这些线性拟合。因为我按住了 Ctrl 键,所以它会广播到窗口中的所有报告,这样我就可以更轻松地滚动。您可以看到,我们已经获得了 Consolidated Reinforced、Consolidated Standard、EZMix Reinforced、EZMix Standard 等的双变量拟合。现在,如果我只想定位部分对象,而不是所有双变量对象怎么办?我使用下标。我可以使用单独的下标来定位一个。但是,让我们看两个我们希望多个对象响应的示例。因此,在下标行中,我们提供了我们希望响应的对象的索引值列表。我希望第一个和第三个双变量对象拟合该二次模型,即次数为的多项式。因此,我运行行。再次,我将使用 Ctrl 键折叠多项式拟合轮廓项,以便于滚动。因此,第一个对象,第一个双变量对象,具有多项式拟合。第二个没有。第三个有。当然,第四个、第五个和第六个也没有。在最后一个例子中,我再次使用了 Index 函数,并使用了它的运算符,也就是两个双冒号的中缀运算符。所以,这将以……的增量从第一个数字计数到第二个数字。因此,这将转到“拟合样条曲线”选项,该选项位于“灵活”下的红色三角形菜单中。您可以看到可以为其提供的所有各种参数。因此,我们正在尝试一种相当灵活的样条曲线来实现双变量拟合。因此,我将运行一行。再次注意日志中——我忘了指出这一点。但是,当我只向其中两个对象发送消息时,我会得到一个包含两个对象的列表。而刚才,当我向其中三个对象发送消息时,我会得到一个包含三个对象的列表。如果我们看一下,就会发现,第一个和第二个双变量拟合没有得到样条曲线。第三个得到了。第四个得到了。第五个得到了。第六个没有。因此,我们可以使用“按角色”,并针对该“按变量”的每个级别进行单独的分析和单独的对象。然后,我们可以同时或单独与所有对象进行通信。以上只是一些在常用的 JMP 平台中启动分析层并与之交互的示例。