JSL 脚本 - 抓取预测公式结果你好,
我试图在预测公式中设置 X 后获取预测值。
例如,如果 Y = X1 + X2,我想创建一个新行,设置 X1 = 2 和 X2 = 4 并获取 Y = 6 的预测值。
我认为最简单的方法是将预测公式保存到一组新的列中。
然后我会添加一个新行并设置所有 X。
然后,只需访问预测公式的行值即可。
然而,这是行不通的。 日志显示该值返回“.”。 如果我运行脚本两次,从而创建多行,则该值会正确返回。 如果我添加两行并仅运行脚本一次,我仍然会得到“null”或“.”在日志文件中。 JMP 似乎需要运行脚本两次才能获取具有设置的 X 值的新添加行的预测公式结果。
有没有更好的方法使用脚本从预测公式中获取预测值?
谢谢你,
内特
回复:JSL 脚本 - 抓取预测公式结果伟大的。 它现在运行并按预期运行。 非常感谢。回复:JSL 脚本 - 抓取预测公式结果我忘记了 JMP Pro 中还有普通版本中没有的附加 PLS 功能。 对于 JMP,它会类似,但更简单一些:
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Do a PLS fit in JMP (also works in JMP Pro)
pls = dt << Partial Least Squares(
Y( :ls, :ha, :dt ),
X(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
Validation Method( Name( "Leave-One-Out" ), Initial Number of Factors( 15 ) ),
Fit(
Method( NIPALS ),
Number of Factors( 7 ),
Show Confidence Band( 1 ),
Distance Plots( 1 ),
Scatter Scores Plots( 1 ),
Diagnostics Plots( 1 ),
Overlay Loadings Plots( 1 ),
T Square Plot( 1 ),
Overlay Coefficients Plots( 1 )
)
);
// See what messages the PLS platform understands (look in the Log Window)
ClearLog();
ShowProperties(pls);
// Save some results from the (7 factor) fit
pls << (Fit[1] << savePredictionFormula);
pls << (Fit[1] << saveYresiduals);
为了理解代码的工作原理,我将从“帮助 > 书籍 > 脚本指南”开始学习 JSL 的基础知识。
回复:JSL 脚本 - 抓取预测公式结果谢谢伊恩
抱歉,我的脚本知识太有限,您的帮助并没有加速我的速度,您能给我更多的支持吗?
首先,我使用 JMP,而不是 PRO。 我认为这就是我的 JMP 自动 PLS 脚本看起来与您的不同的原因。 我附上了我的脚本。
阅读您的脚本时会出现很多问题。
为什么要区分 PLSLAUNCH 和 PLSFITS。 这是必要的还是只是为了您阅读/记录时的舒适?
如果我只有一个“适合”,例如,是否有必要分配 PLSFITS 适合。只需 7 个因素(请适合<< (合身[ 1 ] <<保存预测公式);
请适合<< (合身[ 1 ] <<保存残差);我假设这意味着:将Fit[1]的残差保存到对象PLSFITS(这个名称可以由我选择,只是为了更好地识别PLSFITS)
如果我运行您的脚本,我会在日志窗口中收到此错误: plsFits << (Fit[/*###*/1] << savePredictionFormula);这是因为 PRO 术语吗?
非常感谢
彼得
回复:JSL 脚本 - 抓取预测公式结果嗨,彼得,这应该有助于您入门。 “Wait()”命令用于装饰效果,可以删除。
NamesDefaultToHere(1);
// Get some data
dt = Open( "$SAMPLE_DATA/Baltic.jmp" );
// Launch the PLS platform
plsLaunch = dt << Fit Model(
Y( :ls, :ha, :dt ),
Effects(
:v1,
:v2,
:v3,
:v4,
:v5,
:v6,
:v7,
:v8,
:v9,
:v10,
:v11,
:v12,
:v13,
:v14,
:v15,
:v16,
:v17,
:v18,
:v19,
:v20,
:v21,
:v22,
:v23,
:v24,
:v25,
:v26,
:v27
),
No Intercept( 1 ),
Center Polynomials( 0 ),
Personality( "Partial Least Squares" )
);
// Do a couple of fits
Wait(2);
plsFits = plsLaunch << Run(
Fit( Method( NIPALS ), Number of Factors( 7 ) ),
Fit( Method( NIPALS ), Number of Factors( 6 ) )
);
// Save the prediction formula for the first fit (7 factors)
Wait(2);
plsFits << (Fit[1] << savePredictionFormula);
// Save the prediction formula for the second fit (6 factors)
Wait(2);
plsFits << (Fit[2] << savePredictionFormula);
// Now save the Y residuals
Wait(2);
plsFits << (Fit[1] << saveYresiduals);
plsFits << (Fit[2] << saveYresiduals);
回复:JSL 脚本 - 抓取预测公式结果你好伊恩,
我正在社区中搜索如何将 PLS 中的“保存 Y 预测值”保存在 JSL 中。 是否有可用的文档说明我在哪个工具中处理哪个列保存(例如预测公式、置信区间、预测值)。
谢谢彼得
回复:JSL 脚本 - 抓取预测公式结果抱歉,不 - 我可能混淆了这个问题。 “Wait()”只是为了装饰效果。 一般来说,您在 JSL 中永远不需要这个(但有一些非常罕见的情况下您可能需要)。 可能最好向数据表发送“运行公式”消息。
回复:JSL 脚本 - 抓取预测公式结果啊完美! 我只需要放入 Wait() 即可。 谢谢你!
回复:JSL 脚本 - 抓取预测公式结果详细信息取决于您使用的平台,但这显示了基本思想:
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate(X(:height), Y(:weight));
// Do a regression
biv << fitLine;
/// Save the prediction formula column
biv << (curve[1] << savePredicteds);
// Add a new observation (row) that we want to predict for
Wait(2);
dt << addRows(1);
// Give predictor values and get the prediction back
Column(dt, "weight")[NRow(dt)] = 160;
Column(dt, "height")[NRow(dt)] = 65;