Al momento ho uno script che genera una colonna casuale di X, calcola una colonna di Y basata sulle X, crea una colonna Y prevista, una colonna residua (Predicted Y - Y) e una colonna Y prevista. Da lì, il mio codice seleziona le righe con residui inferiori a 3 e li elimina.
Voglio quindi aggiungere più file di punti dati aumentati e ripetere il ciclo con l'intento di ridurre i residui. Di seguito è riportato il mio codice:
// 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();
Ma l'ultimo pezzo di codice (dove si suppone che aggiunga righe) non fa nulla. Eventuali suggerimenti?
Grazie,
Kyle
Sì, doveva essere dt invece di dt2. Grazie per la correzione. Se aggiungi righe (); si aspetta un valore specificato, come andrei ad aggiungere più valori X da un disegno aumentato alla fine della tabella dati "Sample Run 3" come specificato nel mio codice? Scusa se questo è super facile, sono molto nuovo a JMP / JSL.
Grazie
Credo che questo sia il modo più semplice per fare ciò che vuoi:
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 ) );
Ricorda, JMP non è Excel o R. In JMP molte volte non devi scrivere codice complesso per fare le cose. Molte volte, è molto più semplice usare una delle piattaforme JMP, come "concatenare"