使用迭代 t 检验的 p 值生成汇总表我正在寻找一个脚本,它将自动生成与一个参考组相比的成对 t 检验的均值和 p 值的摘要/透视表。我正在使用 JMP 17。
在下面的数据表中,有SubjectId、测量的BMI、测量的VO2max、年份和参考列,以指示该行是否具有作为参考的SubjectID。

我一直在使用均值手动生成汇总表(如下所示),然后手动填充单边 t 检验的 p 值。

我特别感兴趣的是每个SubjectID与每年的参考之间的t检验的单边p值结果,以确定非参考SubjectID是否具有比参考SubjectID更高的BMI或VO2max。到目前为止,我一直在手动执行汇总 t 检验,并在我创建的汇总表中报告 p 值和平均值。有没有一种方法可以迭代唯一的SubjectID 列表并生成一个汇总表,其中这些统计信息以使用JSL 描述的方式执行?此外,添加汇总统计数据的通用方法(例如,每次分析的每个主题 ID 为 N)也会有所帮助。
自动化和脚本编写基础数据分析和建模回复:使用迭代 t 检验的 p 值生成汇总表我无法弄清楚您对主表中的值以及报告表中的新显示做了什么。请详细说明您转换数据所采取的步骤。
回复:使用迭代 t 检验的 p 值生成汇总表嗨@LinkageBee996 ,
我同意@txnelson ,很难理解如何从主数据表到手动生成的数据表。重新排列数据表并以不同的方式组织它可能会更适合您的目的。这可能需要拆分数据,或者以不同于当前结构的方式连接数据。
我提到这一点的原因是,有时可以使用BY组变量进行分析,然后通过右键单击报表并选择创建组合数据表,可以在更大的数据表中轻松获得分析结果。您可以通过使用 Big Class.jmp 示例数据并使用 :sex 作为 x 轴,:height 作为 Y 轴进行 ANOVA Fit Y by X 来查看这是否对您有用(以更好地了解如何制作组合数据表有效,使用 :age 作为 BY 变量)。执行 t 检验,然后右键单击感兴趣的统计表并选择创建组合数据表。
如果您对 t 检验以及单向方差分析均值执行此操作,则可以连接这些数据表,以便获得每组的平均值以及 t 检验的 p 值。它最终应该看起来像这样,这可能符合您所追求的。

当然,您始终可以将生成的脚本保存在数据表中,将其全部放入一个工作脚本中 - 或者使用 Workflow Builder 记录器,它可以为您编写脚本,请参见此处。
希望这可以帮助,
DS
回复:使用迭代 t 检验的 p 值生成汇总表@txnelson和@SDF1您好,我希望能够澄清该请求,并可能稍微关注一下范围。我和@LinkageBee996一起工作,所以他请我帮忙澄清。
目前的工作流程如下:
1)从@LinkageBee996分享的数据表开始。为了简化事情,我将忽略年份栏,只关注 BMI。
2) 执行简单的双样本 t 检验,将每个标记为“否”的受试者 ID 与标记为“是”的受试者 ID (A1454) 进行比较,总共进行 5 次比较(有我们这样做的原因与做诸如邓尼茨测试之类的事情的原因)。目前,我们通过使用单向平台中“Fit Y by X”下的本地数据过滤器来逐一执行此操作
3) 目前,t 检验的结果(p 值等)随后被手动转录到空白文件(CSV 或 JMP 表)。由于我们一次只进行一项测试,因此使用“生成数据表”并不实用,因为您最终会得到与比较一样多的数据表,然后需要合并为单个数据表。
我们希望自动化这部分分析,这对于我们可能正在测试的任何新主题 ID 来说都是未来的证明,因此脚本应该(以最有意义的顺序)执行以下操作。在我看来,通过在 python 和其他软件中进行类似的分析,这是有意义的:
1. 创建“非引用”ID 列表
2.对于每个非参考 ID,执行单向分析和双样本 t 检验,将其与标记为“是”的参考 ID 进行比较(并且让我们假设总是存在以下之一)这些)
3. 将 t 检验结果保存到数据表中。这里需要注意的是:“制作成数据表”和“制作组合数据表”的默认格式不会保存比较的一些元数据 - 例如,它会告诉您的列标题(X 是主题 ID,Y 是BMI),但它不会告诉您 X 的两个值是什么样的,如分析中 t 检验结果 UI 的顶部所示(“A1454-B8565”)。我们想要捕获这些信息 - 您正在比较两个事物,您正在比较的两个事物是什么?
4. 将数据集中每次比较的所有 t 检验结果合并到一个数据表中。从那里开始,这将只是一个数据操作问题,我们可能可以找出将其转换为最有用的格式
希望这能让我们更加清楚,如果仍然存在歧义,请告诉我们
回复:使用迭代 t 检验的 p 值生成汇总表嗨@Moser_stefan和@LinkageBee996 ,
我更明白你想做什么。以下是一些想法:
1.根据您的描述,我仍然认为重组您的数据表可能是有益的,以便您可以利用方差分析中的 BY 变量,然后创建组合数据表。可能需要考虑如何重新格式化数据表,但我认为这可能是值得的。即使最终有很多数据表,您也可以随时进行连接。最后将它们组合成一个数据表。
2. 我认为自动化这个过程是个好主意,特别是如果要对未来的数据集重复分析的话。在这方面,我强烈建议您花时间自己学习 JSL 编码。每个人在这种事情上都有自己的特定需求,如果您可以学习 JSL 来使您的组织受益,那么它将推动您前进的速度比您想象的要快得多。编写 JMP 问题的脚本解决方案使工作变得更加轻松,并且可以更快地获得结果。那里有大量的好信息,特别是在在线讨论论坛中,但也在这里。您可以在此处下载许多优秀的 JMP 文档,包括最新的脚本指南 PDF。另外,“帮助”>“脚本索引”下还有“脚本索引”。如前所述,如果您不熟悉编码和脚本编写,请考虑使用工作流生成器,它将为您生成所需的脚本。话虽这么说,我的建议是自己学习,以便在编码工作时拥有更多的控制力/灵活性。
3. 如果没有实际的数据表可供使用(即使它是匿名的以保护任何敏感信息),则很难为其他人生成通用的脚本 - 即在“所有”情况下(当然什么都没有)确实在所有可能的情况下都有效,但重点仍然是——使其具有普遍性)。为其他人编写代码在很大程度上取决于您正在使用的数据表以及表中数据的结构,因为它会改变您处理分析和分组结果等的方式。
我知道这并不是您真正想要的答案,但我认为,投入一些时间来重组数据和/或学习 JSL,您会发现回报远远超过投入的努力。
祝你好运!,
DS
回复:使用迭代 t 检验的 p 值生成汇总表感谢您的回复@SDF1 。 JSL 路径很有意义,我有一些经验,但肯定没有专家,所以这是在这里发展我们技能的好机会。无论如何,了解解决此问题的潜在路径有助于了解一些选项。
我正在努力了解是否可以使用“by”函数的一件事 - 主要是因为我们有一组数据(参考数据集),我们希望在每次比较中重复使用,还有一组数据(非参考数据集) )应该被“除以”。我认为这项工作有效的唯一方法是,我们为每次比较复制参考数据集,然后给它一些唯一的变量(例如,“比较”列)。也许这会起作用......我们只需要考虑复制原始数据表中的数据是否会产生任何其他问题或风险。
嗯,您确实给了我们一些思考的空间,我很感谢您花时间做出回应。我们一定会跟进我们提出的任何解决方案。
回复:使用迭代 t 检验的 p 值生成汇总表嗨@Moser_stefan和@LinkageBee996 ,
很乐意提供帮助。而且,我想我更好地理解了数据的结构,为什么 BY 变量会有点困难。可能需要对您的数据进行大量重组才能实现我的想法/意图。
相反,您可能最好做的是根据主题 ID 列获取数据子集,或许还可以使用参考列。然后,对子集数据表的每个参考 ID 和主题 ID 执行 t 检验分析。然后,使用“生成数据表”,然后根据列连接生成的数据表,例如“生成数据表”结果中的“列 1”。这可能是从当前数据格式转换为解决方案的最快方法,而无需花费太多时间重组数据。
在这方面,我制作了一个模拟数据表(附后),其中包含源列(如您的主题 ID)和几个脚本。您可以通过右键单击并选择编辑来检查脚本,但也可以运行它们 - 按源 A 或 B 分组运行它们,然后运行最后一个脚本,将两个数据表连接在一起形成最终数据表。从你的描述来看,你似乎想做这样的事情。至少,希望这些脚本能够帮助您并为您提供一个满足您的特定需求的起点。
希望这可以帮助!,
DS
回复:使用迭代 t 检验的 p 值生成汇总表嗨@Moser_stefan ,
很高兴听到您已经能够自动化数据收集和分析。完成此类任务总是有很大帮助,因为从长远来看它可以节省大量时间。
做得好!,
DS