スクリプトによる簡易予測式の取得こんにちは、私は JMP スクリプトを初めて使用しますが、適合モデルから予測式の係数を取得しようとしています。
スクリプトで予測式を取得する方法はすでに多くの投稿がありますが、私が欲しいのは JMP インターフェースで「Simplify」を適用した後の式です。
列を保存==>予測式==>データテーブルから式を開く==>式エディタの赤い三角形のポップアップメニューから、単純化を選択します

私の理想的なイメージは、「パラメータ推定値」==>「(結合された)データテーブルにする」で右クリックするのと同様に、新しいデータテーブルで簡略化された式係数を取得することです

適合モデルを構築するためのコードはありますが、単純化された関数を含めて新しいテーブルに保存する方法がわかりません。
dt = Open( "$SAMPLE_DATA/Tiretread.jmp" );
obj = dt << Fit Model(
Y( :ABRASION ),
Effects(
:SILICA & RS, :SILANE & RS, :SILICA * :SILICA, :SILICA * :SILANE,
:SILANE * :SILANE
),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Screening" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Desirability Functions( 1 ),
ABRASION << Response Limits(
{Lower( 100, 0.066 ), Middle( 150, 0.5 ),
Upper( 200, 0.9819 ), Goal( "Maximize" ), Importance( 0.25 )}
),
Term Value(
SILICA( 1.2, Lock( 0 ), Show( 1 ) ),
SILANE( 50, Lock( 0 ), Show( 1 ) )
)
),
:ABRASION << {Summary of Fit( 0 ), Analysis of Variance( 0 ),
Parameter Estimates( 1 ), Effect Details( 0 ), Sorted Estimates( 0 ),
Plot Actual by Predicted( 1 ), Plot Regression( 0 ),
Plot Residual by Predicted( 1 ), Plot Studentized Residuals( 1 ),
Plot Effect Leverage( 0 ), Plot Residual by Normal Quantiles( 0 ),
Box Cox Y Transformation( 1 )}
),
SendToReport(
Dispatch(
{"Response ABRASION"},
"Parameter Estimates",
OutlineBox,
{Close( 0 )}
)
)
);
経験者の方、参考になれば幸いです!
データ表スクリプティングRe: スクリプトによる簡易予測式の取得式を直接解析することもできます。 Head()、N Args()、および Arg() 関数については、JMP ヘルプまたはスクリプト インデックスを参照してください。 式をツリーまたはリンク リストとしてトラバースします。
Re: スクリプトによる簡易予測式の取得私が示した例では、それは Expression として残されています。 最初に次のように文字列に変換する必要があると思います:
simplified_formula_str = Char(simplified_formula);
そしてそこからリストへの解析を開始します。 Words()、Substitute() (および使用方法を知っている場合は Regex) の関数を解析することから始めることができます。 その他の関数は、Scripting Index から見つけることができます。

値のリストを取得したら、Set Values を使用してデータテーブルに値を追加できます。
Names Default To Here(1);
intercept_list = {"Intercept", "SILICA"};
estimate_list = [123, 1];
New Table("Untitled",
Add Rows(2),
Compress File When Saved(1),
New Column("Term", Character, "Nominal", Set Values(intercept_list)),
New Column("Estimate",
Numeric,
"Continuous",
Format("Best", 12),
Set Values(estimate_list)
)
);
Re: スクリプトによる簡易予測式の取得@jthi
ありがとう!
最初のものはまさに私が欲しいものです。
しかし、「Make Into Data Table」のような単純化された式からの係数と変数を示す新しいテーブルを作成したいと考えています。
元の Make Into Data Table 関数を使用すると、「単純化されていない」係数からの係数を含むテーブルが作成されます。
simple_formula が保存されたので、それをテーブルに変換する方法はありますか (予測値ではなく、係数と変数のみ)?
私はそれを解析しようとしていたか、マトリックスまたはテーブルに変更しようとしていましたが、今のところどれも機能していません。
(数式オブジェクトの型が何かわかりません...テキスト?)
Re: スクリプトによる簡易予測式の取得次のような単純化された式を取得できます。
col_formula = Expr(Column(dt, "Pred Formula ABRASION") << Get Formula);<BR />simplified_formula = Expr(Simplify Expr(col_formula));
また、Fit モデルから Make Into データテーブルをスクリプト化できます。
dt_new = ((obj << report)["Parameter Estimates"])[TableBox(1)]<< Make Into Data Table;
JSL スクリプトの優れたソースについては、Scripting Index を確認してください。