我快速查看了一下,请注意我使用的是 JMP16 和 For Each() 而不是 For()。
问题一:
我认为您需要获得对大纲框的单独引用,一种选择是也使用 XPath,然后遍历列表列表。 还
//creates a report and maximizes desirability
//doesn't work if there is anything in the by() field
pf_obs = fit << XPath("//OutlineBox[text()='Prediction Profiler']"); // list of lists so easiest to loop over them
For Each({pf_ob}, pf_obs,
pf = pf_ob << Get Scriptable Object;
pf << Maximize and Remember;
);
//create a data table with the parameters from the prediction profile
//in my other version (with the for loop a Where( :x = y[i]) in the model, I than had some code to concatenate tables together and change some formatting
dtout[1] = Report(fit[1])["Prediction Profiler"]["Remembered Settings"][Table Box(1)] << Make Combined Data Table

问题2:
我会对这部分代码做更大的重构以使其更干净,但您也可以为此进行“快速修复”。 使用 Insert Into 将 Response Limits 添加到 Profiler 表达式
jslExprProfiler = expr(
Profiler( 1,
Confidence Intervals( 1 ),
Desirability Functions( 1 ),
//sets desirability target of the crit response
_Y2_ << Response Limits(
{Lower( ytarg-1, 0.0183 ), Middle( ytarg, 1 ), Upper( ytarg+1, 0.0183 ),
Goal( "Match Target" ), Importance( 1 )}
)
);
);
For Each({mod}, ModList,
Insert Into(
jslExprProfiler, EvalExpr(
Expr(mod) << Response Limits({Lower(1, 1), Middle(2, 1), Upper(3, 1), Goal("None"), Importance(1)})
)
)
);
jslExprProfiler = Substitute(
Expr(fit << _prof_),
Expr(_prof_), Name Expr(jslExprProfiler)
);
jslExprProfiler = Substitute(
Name Expr(jslExprProfiler),
expr(_Y2_), nameexpr(yList[1])
);
完整代码:
查看更多... 你好,
我正在编写一个脚本,允许用户
- 选择适合模型的列
- 确定主要变量并指定目标值
- 确定要按哪一列拆分模型
- 允许 JMP 创建模型,优化合意性以达到预期目标,然后输出模型结果
- 从方便的输出表中复制结果
我有一些功能性脚本,可以在不允许用户输入或选择的情况下执行我想要的操作,但是使脚本具有交互性一直是一项挑战。 我想我大部分时间都在那里,但我有一些我正在努力解决的具体问题
- 问题 1:在此脚本的先前版本中,我使用带有 While( x == "y[i]") 行的 for 循环为每个模型使用不同的窗口。 我宁愿使用 By( :x ),因为它更灵活并且提供一个输出窗口。 但是,使用 By( :x ) 会中断后面的脚本以从报告中获取可编写脚本的对象。 是否可以为模型窗口中的每个子框创建不同的报告? 或者更好的方法来编码第 173-181 行? 我根据另外两个线程构建这些行:线程 1 ,线程 2 .
- 问题 2:我需要能够在没有合意性函数的情况下建模的可变数量效果的选项(稍后完整脚本也将具有最小化的效果,但这个简化的演示脚本变得太复杂了。 在第 122-126 行,我能够在 ModExpr 中创建所需的表达式,但是因为它是一个列表,所以当我试图将它直接替换到配置文件中时它不起作用。 我的解决方法是让占位符的数量大于我期望建模的变量数量,如果我的建模效果少于 6 个,代码似乎只会忽略无意义的部分……但这看起来非常糟糕。 有没有办法修复第 130-134 行中的注释代码,以便将列表组合成一个可以工作的单个表达式? 我也无法让 Concatenation 发挥出色,但我敢打赌我错过了一些简单的东西。
这是使用示例数据的示例脚本。 该模型非常适合,但这对于演示来说并不重要。 运行时,如果清除“by”的选择,一切都会正常运行并输出结果。 如果“by”部分中还有任何内容,那么第 174 行将会中断。
感谢您的任何帮助!
Names Default To Here( 1 );
//sample data for demo
dt = Open( "$SAMPLE_DATA/Football.jmp" );
xvar = {};
yvar = {};
byvar = {};
ytarg = 60;
dtout = {};
//let users select the columns to model
win = New Window( "Model Variable Selection",
<<MODAL></MODAL>