脚本编写 - 如何选择最佳拟合分布并收集能力参数?我想创建一个执行以下操作的脚本:
1)获取一个数据集(一次1列)
2)对所有分布进行连续拟合
3) 找到最合适的方案,应用规格限制并分析能力参数(特别是 CpK)
4) 将 CpK(可能还有其他内容)输出到表中
我知道如何手动执行此操作,但即使在执行此操作并保存脚本后,该脚本也不会重新生成我最初所做的相同分析。 如果我在给定的分布内设置规格限制(Normal 3 旁边的红色三角形而不是顶层三角形),那么它会在脚本中完全丢失。 如果我从顶层设置它们,则会存储信息,但我有 50-100 个数据集来运行此分析,并且它们是一系列分布。 我需要脚本来找到最合适的,然后进行分析。
下面的示例 1 是我已经开始工作的代码片段(尚未输出到表格,但至少获得了正确的分布和分析),但它要求我知道数据将是正态 3 混合。 如果我使用示例 2,它默认为正态分布,这是错误的。 如果我能弄清楚如何评估最适合的参数,我可以在 switch 函数中使用它,或者与设置每个分布所需的语法相当。
// Example 1 that gives meaningful results, but requires me to know the distribution
Distribution(
Column("Test Data"),
Fit Distribution (Normal Mixtures( Spec Limits( LSL( -1 ), USL( 1 ) ), Clusters( 3 ) )
)
);
// Example 2 gives garbage because it assumes the distribution is normal, and it's never normal
Distribution(
Column("Test Data"),
Fit Distribution ("All"), Capability Analysis ( LSL( -1 ), USL( 1 ) )
);输出到表格的其他帮助也很棒。 这是我的第一个 JMP 脚本,我正在努力在脚本指南中找到清晰的示例。
回复:脚本 - 如何选择最佳拟合分布并收集能力参数?我同意斯蒂芬的谨慎态度。
我理解减少使用脚本手动执行此类分析的乏味的愿望。 脚本是自动化 JMP 活动的完美方式。
但同时拟合和排序所有分布模型的能力是为了探索性的分析。 当对流程行为知之甚少时,您可能会在流程开发的早期进行此类探索。 另一方面,进行能力研究是确认性的分析是在流程开发后期进行的,当时已知很多并且流程没有任何变化。 例如,适当的能力分析要求至少通过第一阶段证明过程控制。
你无法真正实现自动化主观决定关于使用时的分发模型客观方法。 或者也许我应该这样说:“仅仅因为你可以,并不意味着你应该。”
回复:脚本 - 如何选择最佳拟合分布并收集能力参数?我会谨慎使用最佳拟合,因为数字上的最佳拟合并不总是逻辑上的最佳拟合。 根据我的经验,我发现分布平台过度拟合 - 例如,建议正态 3 混合是最合适的,但根据数据生成方式的理论,对数正态拟合是最合适的。
它需要一定程度的主观评估,在上面的示例中,更奇特/复杂的拟合的 AICc 分数仅略低。 如果许多列共享相同的数据生成机制,则通过组合所有不同列的排名来选择所有这些列中最适合的排名可能是明智的做法。
这将需要更多的 JSL,因为您需要保存每列的最佳拟合表,对它们进行排名,比较它们,然后提取跨列的最佳拟合。回复:脚本 - 如何选择最佳拟合分布并收集能力参数?感谢您的帮助,但能力分析仍然默认为正态分布。 不过,您确实给了我一些关于如何改进我的脚本的其他编码想法! “轮廓框”命令非常有用。
我能够使用“大纲框”从比较分布表中解析出顶部拟合,并关闭该名称(Normal 3 Mixture)以创建该分布所需的能力分析调用所需的字符串。 这并不优雅,但到目前为止还有效。
谢谢。
回复:脚本 - 如何选择最佳拟合分布并收集能力参数?这是一个应该可以为您提供良好开端的脚本。 它为单列执行您想要的任务
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
// Set the limits for the target column
dt:height << set property("spec limits",{LSL(57),USL(68),show limits(1)});
// Run the Distribution Platform
dis=Distribution(
Continuous Distribution( Column( :height ), Fit Distribution( "All" ) ),
capability analysis(1)
);
// Point to the first capability analysis and create a data table from it
dtCpk = report(dis)[outline box(9)][1][3][1]<<MAKE data="https://community.jmp.com/" table=""></MAKE>