私は前回の投稿で解決策を考え出しましたが、問題は私が考えていたよりも複雑であることがわかりました。列の1つに含まれている値に基づいて、文字列の配列を作成しました。 次に、Bivariate()関数をループして、配列値をWhere句に渡しながら繰り返します。 スクリプトを実行すると、スプラインは正しく生成されますが、{save predicts}コマンドは正しく機能しません。 保存される唯一の予測は、配列の最後の要素に属し、他の要素には属しません。 forループ/ ProcessArrayのすべての要素を繰り返すたびに実行するのではなく、{save predicts}が私のforループの最後に/ ProcessArrayの最後の要素に対してのみ1回だけ実行されるようです。
l = 0;
Proc = "new";
ProcessArray = {};
DataCV=open("C:\Desktop\JMP\sample_data.csv")<BR />
For (l = 1, l < 32521, l++, // Create array of strings
if (proc == (Row()=l; :process),
print("same process"),
Insert Into(processArray, (Row()=l; :process)); proc = (Row()=l; :process); Show(proc)
);
);
for (n = 1, n <= length(processArray), n++, // Create and save multiple splines, for all values of ProcessArray[]
Bivariate(
Y( :c_mm_deembed_pf ),
X( :v_dut_volt ),
Where( :c_type == "Cdg" & :process == ProcessArray[n] ),
Fit Spline( 0.1, standardized, {save predicteds})
);
);

@ adjo9835 、
Where()句を使用してSave Predictedを指定すると、結果の予測式は次のようになります。

これは、Where()句のハードコードされたwhere値を使用して作成されました。各2変量ウィンドウのタイトルを見ると、次のようになっています。
Where( :c_type == "Cdg" & :process == ProcessArray[n] )
JMPはスプラインを正しく計算しますが、ProcessArray [n]の値を代用するものではありません。
二変量ループをこれに変更することをお勧めします。
for (n = 1, n <= length(ProcessArray), n++, // Create and save multiple splines, for all values of ProcessArray[]
Eval( EvalExpr( Bivariate(
Y( :c_mm_deembed_pf ),
X( :v_dut_volt ),
Where( :c_type == "Cdg" & :process == Expr(ProcessArray[n] ) ),
Fit Spline( 0.1, standardized, {save predicteds})
) ) );
); //end for
また、column:processで一意の値の一覧を取得したい場合は、Summarize()またはAssociative Array()を使用して簡単に実行できます。 以下のJMPサンプルデータテーブルを使用したスクリプトを参照してください。
Names Default to Here(1);
dt = Open("$Sample_Data/SATByYear.jmp");
r_aa = (Associative Array(:Region)) << get keys;
show(r_aa);
summarize( rarray = By(:Region));
show(rarray);
for(n=1, n <= nitems(rarray), n++,
Eval (EvalExpr(
Bivariate(
Y( :SAT Math),
X( :Year),
Where( :Region == Expr( rarray[n] ) ),
Fit Spline( 0.1, standardized, {save predicteds})
)
))
);