Ich dachte, ich hätte mit meinem letzten Beitrag eine Lösung gefunden, aber es stellte sich heraus, dass das Problem komplizierter ist, als ich dachte. Ich habe ein Array von Zeichenfolgen erstellt, basierend auf den Werten, die in einer meiner Spalten enthalten sind. Dann möchte ich die Bivariate () -Funktion durchlaufen und dabei die Array-Werte durchlaufen, während sie in die Where-Klausel übergeben werden. Wenn ich das Skript ausführe, werden die Splines korrekt generiert. Der Befehl {Vorhersagen speichern} funktioniert jedoch nicht ordnungsgemäß. Die einzigen Vorhersagen, die gespeichert werden, gehören zum letzten Element des Arrays und nicht zu den anderen Elementen. Es scheint, dass {save predicted} nur einmal ausgeführt wird, am Ende meiner for-Schleife / nur für das letzte Element von ProcessArray, anstatt für immer die for-Schleife / jedes Element von ProcessArray auszuführen.
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 ,
Wenn Sie Save Predicted angeben, während Sie eine Where () - Klausel verwenden, sieht die resultierende vorhergesagte Formel folgendermaßen aus

Dies wurde mit hartcodierten where-Werten für die Where () -Klausel erstellt. Wenn Sie sich die Titel in jedem Ihrer Bivariate-Fenster ansehen, heißt es:
Where( :c_type == "Cdg" & :process == ProcessArray[n] )
JMP berechnet die Splines korrekt, ersetzt jedoch nicht den Wert von ProcessArray [n].
Ich schlage vor, dass Sie die Bivariate-Schleife entsprechend anpassen
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
Wenn Sie eine Liste eindeutiger Werte in column: process erhalten möchten, können Sie dies ganz einfach mit Summarize () oder Associative Array () tun. Im folgenden Skript wird eine JMP-Beispieldatentabelle verwendet.
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})
)
))
);