迭代报告的元素大家好,我是 JMP 的新手,但我发现它非常有用且实用,到目前为止我非常喜欢它。 我正在学习 JSL,因为我需要为我的队友自动执行一些分析并提高效率。 我从一些简单的事情开始,但我需要帮助才能继续前进。
我需要自定义分发平台的结果,以对表的多个列执行正态性测试,以便在我或我的同事需要时重复执行。 我设法编写了一个简单的脚本,以简单的方式实现了这一点。 但是,我在满足条件时如何编辑报告的特定元素时遇到问题。
以下是从 Shapiro-Wilk 测试返回值的脚本:
// Select variables to analyze
Names Default to Here( 1 );
dt = Current Data Table();
dialog = New Window( "Select Columns", << Modal,
Panel Box( "Column Selection",
Lineup Box( N Col( 1 ),
Text Box( "Select columns for distribution" ),
y col list = Col List Box( All )
)
),
H List Box(
Button Box( "OK",
y col = y col list << Get Selected;
),
Button Box( "Cancel" )
)
);
If( dialog["Button"] == -1,
Throw( "User cancelled" )
);
// Create distribution
dist = dt << Distribution(Columns(evalList(y col)),Histograms Only);
// Add parameters
dist << Normal Quantile Plot( 1 );
dist << Fit Distribution(Normal(Goodness of Fit(1)));
当 P 值 (Prob
例如,当我尝试编辑报告上的某些内容时,删除参数估计值
distr["Parameter Estimates"] << Delete;
它仅对报告的第一个元素执行此操作。
对于如何操作报告元素的任何帮助,我将不胜感激,一般来说,例如删除所有参数估计值,特别是 P < 0.05。
谢谢!
大规模定制回复:迭代报告的元素谢谢!!!回复:迭代报告的元素H List Box() 只是报表窗口中的一个容器。JMP 报表窗口可以被视为嵌套显示容器和这些容器中的显示元素的集合。如果要查看带有显示容器的显示树结构,请右键单击大纲框旁边的灰色三角形,然后选择编辑 > 显示树结构。

在这种情况下,我认为您不能以相反的方式执行此操作,正如您所描述的那样,因为运行分析平台脚本命令的结果之一是它创建显示窗口,以及 <
如果你不放置距离正如我在脚本中所做的那样进入显示树,它只会创建一个新窗口,其中包含单个分布分析,并且每个分布分析都会有一个单独的窗口(对于所选的每个列)。
回复:迭代报告的元素非常感谢,它实现了它的功能,也教会了我很多东西。 这是一个很大的帮助。
我想问你一些问题来帮助我理解,我希望这对你来说不会有太大问题:我注意到你在 for 循环中采取的第一步是将分布附加到 hb 变量,然后你添加所有详细信息(qq-plot、SW 测试等)。 根据我的编程逻辑和经验,我通常会先添加详细信息,然后将所有内容附加到正确的位置(这正是我实际上遇到麻烦的地方)。 我的问题是,新窗口函数创建的 hb 是如何工作的? 它是某种白页,它将添加所有后续命令并相应地调整新窗口的大小吗? 它会附加与变量 dist 有关的所有内容吗? 使用 distr = Report( dist ) 创建的新变量如何影响附加内容?
关于您对拟合优度测试的评论,非常感谢,这实际上就是我创建脚本的原因。 我一个月前刚刚开始一份新工作,到目前为止,我的队友只使用 Shapiro-Wilk 检验中的 p 值来接受或拒绝正态分布。 我试图为他们提供更多工具来理解或评估数据是否遵循正态分布以及原因。
回复:迭代报告的元素当您将 Distribution() 与列列表一起使用时,报告窗口包含许多“独立”分布分析的输出。这些分析中的每一项都是一个单独的对象。与这些对象的交互可能不同于与报表窗口中的报表图层的交互
dist << Normal Quantile Plot(1);
该消息将广播到报告窗口中显示的所有分发对象。但当你这样做时
distr=Report(dist);
distr["Parameter Estimates"] << Delete;
JMP 的作用是转到可使用“参数估计”字符串引用的报表图层对象的第一个实例,在本例中为拟合法线结果下的轮廓框。要执行您想做的操作,您需要迭代报告的每个部分,从报告层获取 Shapiro-Wilk 测试的结果,然后决定删除输出报告的部分内容。
我认为在您的情况下,每次迭代每一列的分布分析,将结果附加到新的报告窗口会更容易。这是一些示例代码,展示了如何做到这一点
// Select variables to analyze
Names Default To Here( 1 );
dt = Current Data Table();
dialog = New Window( "Select Columns",
<<MODAL></MODAL>