<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在编写一个脚本,它将向现有平台添加一些额外信息(例如,添加RSquare Predicted to Fit模型)。我能够将pred.R2添加到作为我脚本的一部分创建的平台。但是,我如何获得用户适合的模型的引用?我想创建一个用户对话框,允许用户选择应该添加pred.R2的平台窗口。
当然我更愿意将自己的菜单条目添加到Fit-Model-plaftorm的主要热点,但我不知道这是否可能?
谢谢你的建议,
塞巴斯蒂安
塞巴斯蒂安
只是为了建立MS的优秀回复...... 我们编写了一个非常相似的脚本,将R2 Predicted值添加到Fit Model输出中。您可以从菜单或当前报告窗口的工具栏运行脚本(脚本必须添加到菜单或工具栏中),而不是显示用于选择相应报告的对话框。然后,Current Window()命令提供对报告窗口的引用,您可以在报告窗口中搜索大纲框。这是我们脚本的一部分。
curwin = Current Window();For( i = 1, i < 10000, i++, Try( outlinebox = curwin[Outline Box( i )]; Try( outlineboxobj = outlinebox << Get Scriptable Object; // DETAILS NOT SHOWN: // Check that the outline box is the top of a Fit Model analysis, with Standard Least Squares personality. // Pull the PRESS statistic and SS(treatment) to calculate R2-Predicted and append it to the Summary of Fit. ); , Break(); // If no more outline boxes are found, the first "Try()" goes here and forces an escape from the For() loop. ););
我们的脚本实际上将R2 Predicted值插入到该窗口中的每个Fit Model分析中(适用于多个Y和副变量)。它通过查看报告窗口中的每个大纲框来完成此操作。
评论:
1。JSL文档不符合“<< Get Scriptable Object”消息。我找了很长时间来访问现有报告窗口的方法(标准分析已经由用户创建,而不是由脚本创建)。这种能力开辟了许多脚本编写机会。
2。为了让我们所有人不再重新发明轮子,如果JMP在标准的最小二乘法输出中包含R2-Predicted值,那就太好了。
霍华德
非常感谢MS!这就是诀窍。我之前不知道<<获取脚本对象!
通常情况下, <<获取脚本对象可以访问该平台。然而适合模型输出有点奇怪,需要一些挖掘报告才能找到平台的顶部轮廓框。
如果没有分配按角色,则以下内容应该有效 (假设上述功能和定义)。
//对话框
新窗户 ( “选择回归报告” ,
<< 语气 ,
面板盒 ( “选择回归报告以将Predicted R2添加到” ,
RB = 收音机盒 ( 视窗 ) ,
按钮框 ( “好” ,
窗口 ( RB << 被选中 ) << 把窗户带到前面 ;
insertToReport (
当前报道 ()[ 1 , 1 , 1 ] << 获取脚本化对象 ()
) ;
)
)
) ;
非常感谢塞巴斯蒂安。我差不多了(我想),所以让我回顾一下。。。
您的用户将使JMP会话处于您的代码不知道的状态。换句话说,他们可以打开多个表,每个表都有多个窗口。其中一些窗户可能包含'Fit Least Squares';报告。您的代码应扫描所有打开的窗口,识别后者,如果有多个,请让用户选择将哪一个附加到其他报告内容(如果只有一个,则无需询问)。关键是你的代码实际上并没有生成任何报告。
这是对的吗?
嗨伊恩,
谢谢回复。我想按照这个工作流程:
1。用户使用“拟合模型(标准最小二乘法)”开始他的分析。
2。然后,用户运行我的脚本,将Predicted R2添加到他的报告中。
3。然后将预测的R2附加到“拟合模型”报告中。
问题是我如何访问用户在脚本中创建的报表。
目前我的代码看起来像这样。我基本上想用一个用户对话框替换最后一节“Test it”,用户选择Pred所在的报告。应添加R2(特别是在有多个报告的情况下)。我只是错过了如何引用现有报告的部分。
//从“拟合模型”-plattform中提取PRESS统计量
getPRESS = 功能 ({ plattform } ,
plattform << 按 ( 节目 = 1 ) ;
报告 = plattform << 报告 ;
按 = ( 报告 [ OutlineBox ( “按” )] [ 1 ] [ 1 ] << 得到矩阵 ) 1 ] ;
按 ;
) ;
//从“拟合模型”平台中提取平方和
getTSS = 功能 ({ plattform } ,
报告 = plattform << 报告 ;
SS = ( 报告 [ OutlineBox ( “方差分析” )] [ 1 ] [ 3 ] << 得到矩阵 ) ;
TSS = SS [ Nrow ( SS )] ;
TSS ;
) ;
//计算使用Fit-Model-plattform计算的线性模型的预测R2
predR2 = 功能 ({ plattform } ,
按 = getPRESS ( plattform ) ;
TSS = getTSS ( plattform ) ;
PR2 = 1 - 按 / TSS ;
PR2 ;
) ;
//将pred R2插入报告
insertToReport = 功能 ({ plattform } ,
lm.rep = plattform << 报告 ;
名 = lm.rep [ OutlineBox ( “适合总结” )] [ StringColBox ( 1 )] << 得到 ;
值 = lm.rep [ OutlineBox ( “适合总结” )] [ 数字Col Box ( 1 )] << 得到 ;
插入 ( 名 , “RSquare预测” , 3 ) ;
插入 ( 值 , predR2 ( plattform ) , 3 ) ;
lm.rep [ OutlineBox ( “适合总结” )] [ StringColBox ( 1 )] << 设定值 ( 名 ) ;
lm.rep [ OutlineBox ( “适合总结” )] [ NumberColBox ( 1 )] << 设定值 ( 矩阵 ( 值 )) ;
) ;
//测试一下
DT = 打开 ( “$ sample_data / Design Experiment / Coffee Data.jmp” ) ;
分析 = 适合模型 (
ÿ ( : 强度 ) ,
效果 ( : 研磨 , : 温度 , : 时间 , : 收费 , : 站 ) ,
个性 ( “标准最小二乘法” ) ,
重点 ( “最小报告” ) ,
跑 (
: 强度 << { 缺乏健康 ( 0 ) ,根据预测绘制实际情况 ( 0 ) ,
情节回归 ( 0 ) ,通过预测绘制残差 ( 0 ) ,
情节效果杠杆 ( 0 )}
)
) ;
InsertToReport ( 分析 ) ;
加成: 这是我尝试但无法工作:
// ----------------------- +
//用户对话框|
// ----------------------- +
//获取所有打开的窗口
windows = {};
ref_windows = Window();
对于(i = 1,i <= Length(ref_windows),i ++,
插入(窗口,ref_windows <<获取窗口标题);
);
//对话框
新窗口(“选择回归报告”,<<模态,
面板框(“选择回归报告将Predicted R2添加到”,pf = Radio Box(windows));
);
lm_plattform = Plattform(pf << Get);
lm_plattform <<带到前线;
insertToReport(lm_plattform);
我认为有关您设想的工作流程的更多细节,Sebastian。我是否认为您想要使用允许同一报告中的多个模型的建模平台(如Neural)?在哪种情况下,是否有一个特别感兴趣的平台?