スクリプトによる簡易予測式の取得こんにちは、私は 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) の関数を使用して始めるとよいでしょう。 その他の関数は、スクリプト インデックスから見つけることができます。

値のリストを取得したら、「値の設定」を使用して値をデータテーブルに追加できます。
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 関数を使用する場合、「非単純化」係数からの係数を含むテーブルが作成されます。
simplified_formula は保存されましたが、それをテーブル (予測値ではなく、係数と変数だけ) に変換する方法はありますか?
それを解析したり、行列やテーブルに変更したりしようとしましたが、今のところどれも機能しません。
(数式オブジェクトのタイプがわかりません...テキスト?)
Re: スクリプトによる簡易予測式の取得次のような単純化された式を取得できます。
col_formula = Expr(Column(dt, "Pred Formula ABRASION") << Get Formula);<BR />simplified_formula = Expr(Simplify Expr(col_formula));
また、Fit モデルから Make Into datatable をスクリプト化することもできます。
dt_new = ((obj << report)["Parameter Estimates"])[TableBox(1)]<< Make Into Data Table;
JSL スクリプトの優れたソースについては、Scripting Index を確認してください。