Ich habe derzeit ein Skript, das eine zufällige Spalte von X generiert, eine Spalte von Y basierend auf den X berechnet, eine vorhergesagte Y-Spalte, eine Restspalte (vorhergesagtes Y - Y) und eine vorhergesagte Y-Spalte erstellt. Von dort wählt mein Code die Zeilen mit Residuen unter 3 aus und löscht sie.
Ich möchte dann weitere Zeilen mit erweiterten Datenpunkten hinzufügen und den Zyklus mit der Absicht wiederholen, die Residuen zu verringern. Unten ist mein Code:
// 1. Creates X1 column, and corresponding Y1 and Ystat columns
Close All( Data Tables, NoSave );
dt = New Table( "SampleRun 3",
Add Rows( 100 ),
New Script(
"Ystat vs. X1",
Graph Builder(
Variables( X( :X1 ), Y( :Ystat ) ),
Elements( Points( X, Y, Legend( 5 ) ) )
)
),
New Column( "X1",
Formula( Random Integer( 50 ) )
),
New Column( "Y1",
Formula( If( :X1 < 25, 2 * :X1, 25 <= :X1 <= 30, 3 * :X1, 4 * :X1 ) )
),
New Column( "Ystat",
Formula( :Y1 )
)
);
// 2. Creates predicted Ystat column, saves formulas into same data table (first iteration)
PredictedYstat = dt << Neural(
Y( :Ystat ),
X( :X1 ),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Fit( NTanH( 3 ) )
);
PredictedYStat << Save Profile Formulas;
// 3. Adds residual column
dt << New Column( "Residual 1", Formula( Abs( :Predicted Ystat - :Ystat ) ) );
Column( dt, "X1" ) << Suppress Formula Eval();
Column( dt, "Y1" ) << Suppress Formula Eval();
Column( dt, "Ystat" ) << Suppress Formula Eval();
dt << Select where( :Residual 1 <= 3 );
dt << delete rows;
// 4. Creates and predicts residual column
PredictedResidual = dt2 << Neural(
Y( :Residual 1 ),
X( :X1 ),
Informative Missing( 0 ),
Validation Method( "Holdback", 0.3333 ),
Fit( NTanH( 3 ) )
);
PredictedResidual << Save Profile Formulas;
// 5. Adds new data points, cycle starts over from 2 (lets user choose how many)
// Iteration 2
DOE( Augment Design, X( :X1 ), Y( :Ystat ), {Make Design, Make Table} );
dt << add rows();
Aber der letzte Codeabschnitt (in dem Zeilen hinzugefügt werden sollen) führt zu nichts. Irgendwelche Vorschläge?
Vielen Dank,
Kyle
Ja, es sollte dt statt dt2 sein. Danke für die Verbesserung. Wenn Zeilen hinzufügen (); Wenn ich einen bestimmten Wert erwarte, wie gehe ich vor, um weitere X-Werte aus einem erweiterten Entwurf an das Ende der in meinem Code angegebenen Datentabelle "Probelauf 3" hinzuzufügen? Sorry, wenn das super einfach ist, ich bin sehr neu in JMP / JSL.
Vielen Dank
Ich glaube, dies ist der einfachste Weg, um das zu tun, was Sie wollen:
d = DOE( Augment Design, X( :X1 ), Y( :Ystat )/*, {Make Design, Make Table}*/ );
d << Make Design;
dt2 = d << Make Table;
dt << concatenate( dt2, Append to first table( 1 ) );
Denken Sie daran, dass JMP nicht Excel oder R ist. In JMP müssen Sie häufig keinen komplexen Code schreiben, um Aufgaben auszuführen. Oft ist es viel einfacher, eine der JMP-Plattformen wie "verketten" zu verwenden.