Wie kann ich mit JSL den X-Variablenbereich finden, um durch Fixieren anderer Variablen im Prediction Profiler die Spezifikationsgrenze einzuhalten?Hallo JSL-Experten,
Ich habe ein DoE OLS- oder REML-Modell mit einem Vorhersageprofiler wie unten. Wie kann ich alle X-Variablenbereiche finden, um LSL und USL automatisch mit JSL zu erfüllen, indem ich andere Variablen korrigiere? Beispielsweise muss X1 unter 34,6 liegen, um die Spezifikation zu erfüllen. Vielen Dank für Ihre Hilfe.

Datenexploration und -visualisierungBetreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?JMP 17 führte die Design-Space-Profiler zur Ermittlung der Reichweiten in solchen Situationen. Ein guter Grund, auf 17 zu aktualisieren, falls Sie es noch nicht getan haben.
Wenn Sie wirklich die von Ihnen beschriebene spezielle JSL-Lösung benötigen, kann sich hoffentlich jemand mit besseren JSL-Kenntnissen als ich melden.
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?Danke @Ross_Metusalem verwenden wir derzeit JMP 16. Hoffentlich können wir bald auf 17 upgraden.
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?In der Zwischenzeit können Sie die verwenden Simulationsfunktion im Prediction Profiler für diesen Zweck.
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?@Mark_Bailey Können Sie mir einige Hinweise geben, wie ich die Reichweite mithilfe der Simulation im Prediction Profiler ermitteln kann? Vielen Dank.
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?Haben Sie den von mir zitierten Hilfeabschnitt studiert?
Sie müssen zuerst die Antwortgrenzen angeben, um die Erwünschtheitsfunktion zu bestimmen und die Eignung des Faktorbereichs zu beurteilen.
Öffnen Sie den Simulator im Prediction Profiler. Alle Faktorstufen sind zu Beginn festgelegt. Ändern Sie X1 so, dass es zufällig variiert, wie Sie es unter Prozesssteuerung erwarten. Geben Sie auch die zufällige Variation der Antwort an. Die Simulation zeigt ein Histogramm an, um Ihnen eine Vorstellung von der Eignung der Fehlerübertragung von X1 zur Antwort zu geben. Detaillierte Informationen liefert die Simulationstabelle.
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?Hallo @Mark_Bailey , ich bin dem von Ihnen geteilten Link gefolgt, ich kann die Fehlerrate unter 5 % für jede X-Variable manuell finden. Da ich so viele Modelle und Variablen habe, möchte ich einen Weg finden, diesen Prozess zu automatisieren, anstatt ihn einzeln auszuführen. Es wird so viel Zeit in Anspruch nehmen. Ist es möglich, es in JSL zu tun?
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?Ja, Sie können den Profiler und den von ihm bereitgestellten Simulator skripten. Siehe Hilfe > Skripting-Index > Objekte > Profiler und Simulator.

Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?@Mark_Bailey Ich habe die Simulation für Parameter beendet und alle Simulationsergebnisse bereits gesammelt. Super cool!!!Vielen Dank für deine Hilfe.
Die einzige Herausforderung für mich besteht darin, den Begriffswert aus dem Modellskript zu erhalten. Was ich verwendet habe, ist, „{Profiler(“ und dann „Term Value“ zu suchen, um alle Begriffe in eine Liste zu bekommen, und dann zu simulieren. Der Begriff Wert hat Zahlen und Zeichen, einige mit "xxxx"n, andere nicht, es ist ziemlich schwierig, Code für alle unterschiedlichen Fälle zu erstellen. Haben Sie eine einfache Möglichkeit, den Laufzeitwert aus dem DoE-Modell abzurufen?
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?Von " Holen Sie sich den Termwert aus dem Modellskript", meinen Sie die Parameterschätzung im Modelltabellenskript? Haben Sie ein Tabellenskript für das Modell gespeichert?
Zeichenketten können für Namen verwendet werden. Einige Zeichen sind in Namen nicht zulässig. Die Verwendung unzulässiger Namen erfordert eine Problemumgehung.
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?@Mark_Bailey Unten ist eines meiner Beispiele. Ich benötige einen generischen Code, der die Skripte aus dem Fit-Gruppenmodell lesen und dann den Begriffswert in eine Faktorenliste einfügen muss. Sobald ich die Liste habe, vergleiche ich mit dem Spaltennamen in der Datentabelle, um festzustellen, ob es sich um eine Zahl oder ein Zeichen handelt, damit ich meinen Simulationscode erstellen kann.Der letzte Teil ist mein Code, aber er ist zu kompliziert und funktioniert nicht, wenn der Profiler mehrere Term Value enthält. Es ist also besser, nur den Profiler eingeschaltet zu lassen.Ich frage mich, ob Sie dieselbe Aufgabe einfacher erledigen können? Vielen Dank für deine Hilfe.
factors = {"ELONG", "HARDNESS(+/-0.2)", "ABRASION For example (%)", "MODULUS"}Dies ist das Skript eines Beispielmodells:
Fit Group(
Fit Model(
Y( :"SILICA (%)"n ),
Effects( :ELONG, :"HARDNESS(+/-0.2)"n ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
ELONG( 417.5, Lock( 0 ), Show( 1 ) ),
"HARDNESS(+/-0.2)"n( 69.775, Lock( 0 ), Show( 1 ) )
)
),
:"SILICA (%)"n << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Effect Tests( 0 ), Effect Details( 0 ),
Lack of Fit( 0 ), Scaled Estimates( 0 ), Plot Actual by Predicted( 1 ),
Plot Regression( 0 ), Plot Residual by Predicted( 0 ),
Plot Studentized Residuals( 1 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 1 ), Box Cox Y Transformation( 0 ),
Press( 1 )}
)
),
Fit Model(
Y( :SILANE Value ),
Effects(
:"ABRASION For example (%)"n, :MODULUS, :ELONG, :"HARDNESS(+/-0.2)"n,
:MODULUS * :ELONG
),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
"ABRASION For example (%)"n( 133.1, Lock( 0 ), Show( 1 ) ),
MODULUS( 1255, Lock( 0 ), Show( 1 ) ),
ELONG( 417.5, Lock( 0 ), Show( 1 ) ),
"HARDNESS(+/-0.2)"n( 69.775, Lock( 0 ), Show( 1 ) )
)
),
:SILANE Value << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Effect Tests( 0 ), Effect Details( 0 ),
Lack of Fit( 0 ), Scaled Estimates( 0 ), Plot Actual by Predicted( 1 ),
Plot Regression( 0 ), Plot Residual by Predicted( 0 ),
Plot Studentized Residuals( 1 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 1 ), Box Cox Y Transformation( 0 ),
Press( 1 )}
)
),
Fit Model(
Y( :SULFUR ),
Effects( :ELONG ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value( ELONG( 417.5, Lock( 0 ), Show( 1 ) ) )
),
:SULFUR << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Effect Tests( 0 ), Effect Details( 0 ),
Lack of Fit( 0 ), Scaled Estimates( 0 ), Plot Actual by Predicted( 1 ),
Plot Regression( 0 ), Plot Residual by Predicted( 0 ),
Plot Studentized Residuals( 1 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 1 ), Box Cox Y Transformation( 0 ),
Press( 1 )}
)
),
<<{Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
<FONT color="#0000FF"> ELONG( 417.5, Lock( 0 ), Show( 1 ) ),
"HARDNESS(+/-0.2)"n( 69.775, Lock( 0 ), Show( 1 ) ),
"ABRASION For example (%)"n( 133.1, Lock( 0 ), Show( 1 ) ),
MODULUS( 1255, Lock( 0 ), Show( 1 ) )</FONT>
)
)}
);Dies ist mein Code, um eine Faktorenliste zu erstellen:
Names Default To Here( 1 );
dt = Current Data Table();
curep = Current Report();
dtname = dt << Get Name;
//Check how many prediction profiles, if >1 it's fit group, =1 it's fit model
pred_objs = curep << XPath( "//OutlineBox[ contains( text(), 'Prediction Profile' ) ]" );
num_objs = N Items( pred_objs );
If( num_objs < 1,
Throw( "No prediction profile is found!" )
);
If( num_objs == 1,
textind = "Profiler(",
textind = "{Profiler("
);
//Read the Model Term list
modelobj = curep[Outline Box( 1 )] << get scriptable object;
modeltext = Char( modelobj << get script );
//Show( modeltext );
posA = Contains( modeltext, textind );
termstext = Right( modeltext, Length( modeltext ) - posA + 1 );
/*Show( termstext );*/
posB = Contains( termstext, "Term Value" );
posC = Contains( termstext, "Show(1))", -1 );
termvalue = Left( termstext, posC + 7 ) || ","; //Make sure all terms end with )),
termvalue = Right( termvalue, Length( termvalue ) - posB - 10 );
/*Show( termvalue );
Show( posB );
Show( posC );
Show( posD );*/
//Check how many factors or main effects in the final model
words = Words( termvalue, "," );
termnum = 0;
For( i = 1, i <= N Items( words ), i++,
If( Contains( words[i], "Show" ),
termnum = termnum + 1
)
);
//Get the term with default value
term list = {};
For( k = 1, k <= termnum, k++,
//show(firstpos);
pos1 = Contains( termvalue, "))," ) + 3;
term1 = Left( termvalue, pos1 );
//show(term1);
termvalue = Right( termvalue, Length( termvalue ) - pos1 );
//show(termvalue);
Insert Into( term list, term1 );
);
Show( term list );
//get term name without default value
factors = {};
For( k = 1, k <= N Items( term list ), k++,
termK = term list[k];
firstchar = Left( termK, 1 );
If( firstchar == "\!"",
pos2 = Contains( termK, "\!"", -1 );
term2 = Left( termK, pos2 + 1 );
,
pos2 = Contains( termK, "(" ); //Categorical terms cannot have "()" in the column name
term2 = Left( termK, pos2 - 1 );
);
Insert Into( factors, char(parse(term2)) );
);
Show( factors );
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?Ich denke, dass es einen eleganteren und robusteren Ansatz gibt. Siehe das Ende dieses Beispiels für den Ansatz, an den ich denke.
Names Default to Here( 1 );
// JMP Pro 16.2
// start with example of a model script
model = Expr(
Fit Group(
Fit Model(
Y( :"SILICA (%)"n ),
Effects( :ELONG, :"HARDNESS(+/-0.2)"n ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
ELONG( 417.5, Lock( 0 ), Show( 1 ) ),
"HARDNESS(+/-0.2)"n( 69.775, Lock( 0 ), Show( 1 ) )
)
),
:"SILICA (%)"n << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Effect Tests( 0 ), Effect Details( 0 ),
Lack of Fit( 0 ), Scaled Estimates( 0 ), Plot Actual by Predicted( 1 ),
Plot Regression( 0 ), Plot Residual by Predicted( 0 ),
Plot Studentized Residuals( 1 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 1 ), Box Cox Y Transformation( 0 ),
Press( 1 )}
)
),
Fit Model(
Y( :SILANE Value ),
Effects(
:"ABRASION For example (%)"n, :MODULUS, :ELONG, :"HARDNESS(+/-0.2)"n,
:MODULUS * :ELONG
),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
"ABRASION For example (%)"n( 133.1, Lock( 0 ), Show( 1 ) ),
MODULUS( 1255, Lock( 0 ), Show( 1 ) ),
ELONG( 417.5, Lock( 0 ), Show( 1 ) ),
"HARDNESS(+/-0.2)"n( 69.775, Lock( 0 ), Show( 1 ) )
)
),
:SILANE Value << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Effect Tests( 0 ), Effect Details( 0 ),
Lack of Fit( 0 ), Scaled Estimates( 0 ), Plot Actual by Predicted( 1 ),
Plot Regression( 0 ), Plot Residual by Predicted( 0 ),
Plot Studentized Residuals( 1 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 1 ), Box Cox Y Transformation( 0 ),
Press( 1 )}
)
),
Fit Model(
Y( :SULFUR ),
Effects( :ELONG ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
Run(
Profiler(
1,
Confidence Intervals( 1 ),
Term Value( ELONG( 417.5, Lock( 0 ), Show( 1 ) ) )
),
:SULFUR << {Summary of Fit( 1 ), Analysis of Variance( 1 ),
Parameter Estimates( 1 ), Effect Tests( 0 ), Effect Details( 0 ),
Lack of Fit( 0 ), Scaled Estimates( 0 ), Plot Actual by Predicted( 1 ),
Plot Regression( 0 ), Plot Residual by Predicted( 0 ),
Plot Studentized Residuals( 1 ), Plot Effect Leverage( 0 ),
Plot Residual by Normal Quantiles( 1 ), Box Cox Y Transformation( 0 ),
Press( 1 )}
)
),
<<{Profiler(
1,
Confidence Intervals( 1 ),
Term Value(
ELONG( 417.5, Lock( 0 ), Show( 1 ) ),
"HARDNESS(+/-0.2)"n( 69.775, Lock( 0 ), Show( 1 ) ),
"ABRASION For example (%)"n( 133.1, Lock( 0 ), Show( 1 ) ),
MODULUS( 1255, Lock( 0 ), Show( 1 ) )
)
)}
);
);
// last argument is in-line message send for Profiler
last = N Arg( model );
profilerExpr = Arg( model, last );
// unwrap Send() and its list argument
profilerExpr = Arg( profilerExpr, 1 )[1];
// find term values
termVals = Associative Array();
termExpr = Arg( profilerExpr, 3 );
nArgs = N Arg( termExpr );
For( i = 1, i <= nArgs, i++,
Insert Into( termVals,
Char( Head( Arg( termExpr, i ) ) ),
Arg( Arg( termExpr, i ), 1 )
)
);
// use resulting dictionary for term values
Show( termVals );Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?Was Sie am Ende als Ihren gewünschten Wert der Variablen anzeigen Str Ist nicht ein Faden.
Wie werden Sie verwenden Str in deinem Skript? Wird es ein Argument für eine Funktion sein?
Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?@Mark_Bailey str ist nur ein Variablenname, während meines Codes unten habe ich tatsächlich random_sim und responses_sim verwendet, indem ich diese beiden Variablen in meiner for-Schleife ändere, kann ich alle Faktoren einmal simulieren. Der Code, den ich zuvor zum Extrahieren von Y und Term Value verwendet habe, enthält "\! in der Zeichenfolge, aber Ihre Methode zum Extrahieren von Argumenten enthält kein "\!", was der einzige Unterschied ist.
simu model script = Parse(
Eval Insert(
"\[
simobj << Simulator(
1,
Factors( ^random_sim^),
Responses( ^responses_sim^ ),
Resimulate
);
]\"
)
);
Show( simu model script );
Eval( simu model script );Betreff: Wie verwendet man JSL, um den X-Variablenbereich zu finden, um die Spezifikationsgrenze einzuhalten, indem andere Variablen im Prediction Profiler korrigiert werden?@Mark_Bailey Ihre Lösung ist großartig und viel einfacher als meine. Vielen Dank für deine Hilfe.
Aber ich habe ein anderes Problem mit dieser Methode. Kannst du mir helfen?
factors = {"Kilometer (kg)"n, "Temperature (ºC)"n};
responses_sim = "";
values = {1.23,2.34};
for (i=1, i<=N Items(factors), i++,
responses_sim = responses_sim || factors[i] || "<< Add Random Noise(" || char(values[i]) || "),"
);
show(responses_sim);
responses_sim = "Kilometer (kg)<< Add Random Noise(1.23),Temperature (ºC)<< Add Random Noise(2.34),";
<BR /><FONT face="arial black,avant garde" size="5"><STRONG>I want to get this result below, how to do it?</STRONG></FONT>
responses_sim = "Kilometer (kg)"n << Add Random Noise(1.23), "Temperature (ºC)"n << Add Random Noise(2.34),"