<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我尝试使用 JMP 脚本执行以下操作:
- 通过同一表中两个分类列(STNFAM 和 VIEW_STATE_ID)的所有不同组合,将威布尔分布拟合到表 (dt1) 中的两个不同连续数据列(TBI 和 TTR)
- 提取所有结果分布的 Alpha 和 Beta 参数并将其写入表中。 甚至以可解析的格式将它们打印到日志中也可以
以下是脚本的当前原型,旨在提取报告中生成的第一个节点的分布参数:
********************************************** 脚本开始
DT1 = 当前数据表();
距离 = DT1 <<
分配(
通过(:STNFAM,:VIEW_STATE_ID),
连续分布(
列(:TBI_HRS),
拟合分布(带有阈值的威布尔)
),
连续分布(
列(:TTR_HRS),
拟合分布(带有阈值的威布尔)
)
);
//测试dist是否是一个合法的平台,可以稍后在脚本中进行操作
显示属性(距离);
报告距离=距离<<报告;
//测试reportDist是否是一个合法的报告,可以稍后在脚本中进行操作
显示属性(reportDist);
//测试是否可以从reportDist中的第一个节点提取Alpha和Beta参数
alphaParam = reportDist[大纲框(1)][表格框(3)][编号列框(1)] << Get(1);
betaParam = reportDist[大纲框(1)][表格框(3)][编号列框(1)] << Get(2);
//将提取的参数打印到日志中,看看它们是否与期望的值匹配
打印(alphaParam);
打印(betaParam);
****************************************************** **************************脚本结束
如果 dt1 仅包含 STNFAM 和 VIEW_STATE_ID 的 1 个组合,则此脚本将按预期工作。 “dist”和“reportDist”的属性都显示在日志中,并且 Weibull 参数也会根据需要打印到日志中。 但是,如果 dt1 中存在超过 1 个 STNFM 和 VIEW_STATE_ID 的组合,我会收到以下错误,并且日志中不会显示任何平台或报告属性:
****************************************************** **************************日志开始
/*:
//:*/
DT1 = 当前数据表();
距离 = DT1 <<
分配(
通过(:STNFAM,:VIEW_STATE_ID),
连续分布(
列(:TBI_HRS),
拟合分布(带有阈值的威布尔)
),
连续分布(
列(:TTR_HRS),
拟合分布(带有阈值的威布尔)
)
);
//测试dist是否是一个合法的平台,可以稍后在脚本中进行操作
显示属性(距离);
报告距离=距离<<报告;
//测试reportDist是否是一个合法的报告,可以稍后在脚本中进行操作
显示属性(reportDist);
//测试是否可以从reportDist中的第一个节点提取Alpha和Beta参数
alphaParam = reportDist[大纲框(1)][表格框(3)][编号列框(1)] << Get(1);
betaParam = reportDist[大纲框(1)][表格框(3)][编号列框(1)] << Get(2);
//将提取的参数打印到日志中,看看它们是否与期望的值匹配
打印(alphaParam);
打印(betaParam);
/*:
访问或评估 'Outline Box'、Outline Box( 1 ) 时出现预期字符 arg 1 访问或评估 'Subscript' 时出现下标问题,reportDist[Outline Box( 1 )]
在以下脚本中,错误标记为 /*###*/
DT1 = 当前数据表();
距离 = DT1 << 分布(
通过(:STNFAM,:VIEW_STATE_ID),
连续分布(
列(:TBI_HRS),
拟合分布(带有阈值的威布尔)
),
连续分布(
列(:TTR_HRS),
拟合分布(带有阈值的威布尔)
)
);
显示属性( dist );
reportDist = dist << 报告;
显示属性(reportDist);
alphaParam = reportDist[/*###*/大纲框/*###*/(1)][表格框( 3 )][
数字列框( 1 )] << Get( 1 );
betaParam = reportDist[大纲框( 1 )][表格框( 3 )][编号列框( 1 )] <<
获取(2);
打印( alphaParam );
打印( betaParam );
****************************************************** **********************************************日志结束
当代码第一部分中的 BY 参数生成多个组合时,JMP 似乎不会将“dist”和“reportDist”识别为合法平台和报告。 谁能指出我正确的方向以获得所需的结果?
附件:
- Subset_Weibull_Fit_Script.jsl(上面消息中显示的脚本)
- XSITE_Weibull_Fit_All_STNFAM_1-10-14.jmp 的 1_Combo_Subset(脚本按预期工作的测试表)
- XSITE_Weibull_Fit_All_STNFAM_1-10-14.jmp 的 2_Combo_Subset(脚本未按预期工作的测试表)
谢谢你,
当有多个组合时,dist 和 reportDist 为列表包含与组合一样多的项目。 您可以使用 Is List() 函数来确定是否属于这种情况。 如果您有列表,则可以使用 N Items() 函数获取项目数,以确定其中有多少项目。 您可以将进一步的处理放入循环中,或者使用“生成组合数据表”消息或“生成矩阵”消息来提取所有参数可能是合适的。