大家好,
当我尝试向报告发送命令<<保存模拟公式时,我无法正确引用报告。
我有一个自动脚本来执行某些分析,在这个脚本中,我获得了打开的报告列表以获取感兴趣的报告,请参阅下面的 JSL:
report_windows = Get Window List( "Report" );
report_of_interest = Empty();
For Each( {report_windows}, report_windows,
outline_title = Try( report_windows[Outline Box( 1 )] << Get Title, "" );
If( Starts With( outline_title, "Generalized " ),
report_of_interest = report_windows;
Break();
);
);report_of_interest 是对报告的 DisplayBox[HeadBox] 的引用。 使用此参考,我可以执行诸如发送命令以对报告中感兴趣的列(例如参数估计列)执行模拟之类的操作。
report_of_interest[Number Col Box( 8 )] << Simulate(
2500,
Random Seed(.),
Out( :ColOut ),
In( :ColIn )
);
但是,当我尝试将命令 <<将模拟公式保存到report_of_interest(遵循脚本索引帮助中的示例)时:
report_of_interest << (Fit[1] << Save Simulation Formula)
我在日志窗口中收到以下错误:
对象“HeadBox”无法识别消息“发送”;也许您的意思是其中之一: <<<<<<<<<<<< <设置窗口ID <<窗口大小<<移动窗口<<显示窗口<<关闭窗口<<设置窗口标题<<设置窗口图标<<设置主窗口<<设置打印标题<<鼠标拖动<<设置最小尺寸< <设置宽度<<启用。
如果我尝试使用大纲的标题,即上面的变量outline_title,我会在日志中收到以下错误:
发送在访问或评估“发送”时需要可编写脚本的对象,outline_title << /*###*/(Fit[1] << 保存模拟公式) /*###*/
我不明白的是脚本索引帮助中的示例参考与我的 JSL 代码之间的差异。 脚本索引帮助中的第一个示例如下:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Diabetes.jmp" );
fm = dt << Fit Model(
Y( :Y ),
Effects( :Age, :Gender, :BMI, :BP, :Total Cholesterol, :LDL, :HDL, :TCH, :LTG, :Glucose ),
Personality( "Generalized Regression" ),
Generalized Distribution( "Normal" ),
Run( Fit( Estimation Method( Lasso( Adaptive ) ), Validation Method( KFold, 5 ) ) )
);
fm << (fit[1] << Save Simulation Formula);
fm 是一个引用以下内容的变量:Fit Generalized[]。 在脚本索引示例中,它们都能够使用此引用将模拟列保存到数据表中。
我可以看到的一个很大的区别是在示例中,它们都能够使用子命令 Run(Fit()) 将 Fit Model () 命令发送到数据表。 我无法在 JSL 代码中执行此操作,因为它更加通用,并且我并不总是在 Y、响应和 X、因子的同一列上运行它。
我的代码中的类似 JSL 如下:
avdt << Fit Model(
Y( Eval( YCols ) ),
Validation( :Validation ),
Personality( "Generalized Regression" )
);
请注意,我没有列出任何效果,因为这些效果可能会根据我正在使用的数据表而变化。 我之前确实有一段代码要求指示哪一列是响应列,因此,我可以在 Fit Model() 中包含 Y(Eval(ycols)),因为 JSCL 代码引用了该列。
不幸的是,我无法执行 fm = avdt << Fit Model() 之类的操作,并以这种方式引用它,因为一旦我输入所有效果并单击 GenReg 平台窗口上的“运行”,fm 就会返回错误,表明它是已删除的对象参考[]。 事实上,如果您在脚本索引帮助的示例中注释掉 Run() 行,然后运行它,在“拟合模型”对话框中单击“运行”,示例代码将不会将模拟列保存到数据表中。
很抱歉这篇文章很长,但我觉得我需要在我遇到的问题背后提供一些背景信息。 任何有关纠正report_of_interest的正确引用的帮助,以便我可以发送<<保存预测公式,将不胜感激。
谢谢!,
DS
一个区别是您使用不同的引用,脚本索引示例使用“Fit Generalized[]”,而您使用“DisplayBox[HeadBox]”。 您很可能可以通过使用类似的东西来参考 Fit Generalized
report_of_interest[OutlineBox(1)] << get scriptable object;
你好@jthi ,
一如既往,感谢您快速而有用的回复! 是的,那确实有效。 我还意识到我可以通过更改代码的早期部分来解决这个问题,其中它要求对响应列进行建模,以便它同时要求模型效果。 这样,我可以包含 fm = dt<
我不必经常使用 << Get Scriptable Object,因此它并不是真正想到的命令。 我很感激你的帮助。
谢谢!,
DS