JSLを介して特定の名前で予測式列を保存するにはどうすればよいですか?親愛なるみんな、
JSLスクリプトを介して一般化された線形モデルを実行しています。
予測式を特定の名前の列に保存するにはどうすればよいですか?
私がなんとか見つけたすべて( JMPスクリプトを使って予測式の保存を自動化? )は次のようなものでした:
GLM = モデルの適合 (......);
GLM << 予測式;
しかし:
1) 予測式を格納する列の名前を選択できますか? JMP は自動的に「Pred Formula 'Target Variable'」に保存します。
2) この機能はどこかに文書化されていますか? 上記のフォーラムで見つけましたが、JMP のドキュメントにはありませんでした
3) 同じ構文は他のプラットフォーム (パーティションなど) でも機能しますか?
ありがとう。
Re: JSL スクリプト: 予測式を保存するには?Ian の回答は #1 と #3 に関するもので、ユーザー ms は JMP Scripting Language (JSL) に関するドキュメントに関する質問 #2 に回答しています。
@ian_jmp :
通常、「Save Prediction Formula」はプラットフォーム間で一貫しています。 保存された列の名前は確かに固定されていますが、次のようなものを使用して名前を変更できます。
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>
まれに、列を作成する前後に「列名の取得」を使用して、2 つのリストを比較して新しい列の名前を推測すると役立つ場合があります。
@MS :
JSLのドキュメントに関しては、スクリプト インデックス(ヘルプ メニュー) は、すぐに使用できる例が満載の優れたリソースです。 はい、 << 予測式ある。
Re:JSL経由で特定の名前を付けて予測式列を保存するにはどうすればよいですか?あなたの例を続ける:
GLM = Fit Model (......);
pf = GLM << prediction formula;
pf << Set Name( "my name" );
はい、このアプローチはどのモデリング プラットフォームでも機能するはずです。
Re: JSL スクリプト: 予測式を保存するには?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />:My Saved 予測から二重引用符を削除したところ、すべて正常に動作するようになりました。
Scripting Index を参照していただきありがとうございます。非常に便利です。
Re: JSL スクリプト: 予測式を保存するには?空のボックスは、列 :My saved Prediction (二重引用符で囲まないでください) が現在のデータ テーブルに存在しないことを示している可能性があります。 スペルチェックする。
JSLのドキュメントに関しては、スクリプト インデックス(ヘルプ メニュー) は、すぐに使用できる例が満載の優れたリソースです。 はい、 << 予測式ある。
Re: 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 のバグですか? 式を別の方法で指定する必要がありましたか?
ありがとう。
Re: JSL スクリプト: 予測式を保存するには?通常、「Save Prediction Formula」はプラットフォーム間で一貫しています。 保存された列の名前は確かに固定されていますが、次のようなものを使用して名前を変更できます。
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]);
);
まれに、列を作成する前後に「列名の取得」を使用して、2 つのリストを比較して新しい列の名前を推測すると役立つ場合があります。