如何通过 JSL 保存具有特定名称的预测公式列?各位,
我正在通过 JSL 脚本运行一些广义线性模型。
如何将预测公式保存到具有特定名称的列?
我设法找到的所有内容(使用JMP脚本自动保存预测公式? )是这样的:
GLM = 拟合模型 (......);
GLM << 预测公式;
然而:
1)我可以选择存储预测公式的列的名称吗? JMP 会自动将其保存到:“Pred Formula 'Target Variable'”
2)此功能是否已在任何地方记录? 我在上面的论坛上找到了它,但在 JMP 的文档中没有找到
3)相同的语法是否适用于其他平台(例如分区)?
谢谢。
回复:JSL 脚本:如何保存预测公式?Ian 的回复涉及 #1 和 #3,而用户 ms 则回答有关 JMP 脚本语言 (JSL) 文档的问题 #2。
@ian_jmp :
一般来说,“保存预测公式”在各个平台上是一致的。 已保存列的名称确实是固定的,但您可以使用以下内容重命名它们:
dt <SPAN class="token operator">=</SPAN> <SPAN class="token function">Open</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token string">"$SAMPLE_DATA/Big Class.jmp"</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
cols <SPAN class="token operator">=</SPAN> dt <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> GetColumnNames<SPAN class="token punctuation">(</SPAN><SPAN class="token string">"String"</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token function">For</SPAN><SPAN class="token punctuation">(</SPAN>c<SPAN class="token operator">=</SPAN><SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> c<SPAN class="token operator"><=</SPAN><SPAN class="token function">NItems</SPAN><SPAN class="token punctuation">(</SPAN>cols<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> c<SPAN class="token operator">++</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token function">Column</SPAN><SPAN class="token punctuation">(</SPAN>dt<SPAN class="token punctuation">,</SPAN> cols<SPAN class="token punctuation">[</SPAN>c<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">)</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> SetName<SPAN class="token punctuation">(</SPAN><SPAN class="token string">"New "</SPAN><SPAN class="token operator">||</SPAN>cols<SPAN class="token punctuation">[</SPAN>c<SPAN class="token punctuation">]</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
在极少数情况下,在创建列之前和之后使用“获取列名称”会很有帮助,比较两个列表以推断新列的名称。
@多发性硬化症:
关于 JSL 的文档,我认为脚本索引(帮助菜单)是一个很棒的资源,包含随时可用的示例。 是的, << 预测公式有没有。
回复:如何通过 JSL 保存具有特定名称的预测公式列?继续你的例子:
GLM = Fit Model (......);
pf = GLM << prediction formula;
pf << Set Name( "my name" );
是的,这种方法应该适用于任何建模平台。
回复:JSL 脚本:如何保存预测公式?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我从 :My Saved Prediction 中删除了双引号,现在一切正常。
感谢您向我指出脚本索引 - 非常有用!
回复:JSL 脚本:如何保存预测公式?空框可能表示当前数据表中不存在列:我保存的预测(不应包含在双引号内)。 检查拼写。
关于 JSL 的文档,我认为脚本索引(帮助菜单)是一个很棒的资源,包含随时可用的示例。 是的, << 预测公式有没有。
回复:JSL 脚本:如何保存预测公式?嗯,听起来很复杂。 我发现,如果我的目标变量称为“My Target”,则该列将称为“Pred Formula My Target”,所以我使用:
GLM = Fit Model (......);
GLM << prediction formula;
Column("Pred Formula My Target") << Set Name("New Column Name");
文档怎么样? JSL 文档中是否正确记录了这一点? 我还没找到它。 我对 JMP 脚本很陌生,但第一印象是它是一种功能强大的语言,语法复杂且文档质量差,在某种程度上有点像 R - 但我希望商业软件能提供更好的文档!
最后,我创建另一列,将预测乘以其他值:
New Column("My new calculation", Numeric, Formula( :"My saved Prediction" * :another_field ));
其中“我保存的预测”名称中包含空格,而 another_field 则没有。 公式计算正确,但如果我右键单击标题并转到公式,我会看到一个空框乘以 another_field。 这是 JMP 中的错误吗? 我应该以不同的方式指定公式吗?
谢谢。
回复:JSL 脚本:如何保存预测公式?一般来说,“保存预测公式”在各个平台上是一致的。 已保存列的名称确实是固定的,但您可以使用以下内容重命名它们:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
cols = dt << GetColumnNames("String");
For(c=1, c<=NItems(cols), c++,
Column(dt, cols[c]) << SetName("New "||cols[c]);
);
在极少数情况下,在创建列之前和之后使用“获取列名称”会很有帮助,比较两个列表以推断新列的名称。