Actualmente tengo una secuencia de comandos que genera una columna aleatoria de X, calcula una columna de Y basada en las X, crea una columna de Y predicha, una columna residual (Y - Y predicha) y una columna de Y predicha. A partir de ahí, mi código selecciona las filas con residuos inferiores a 3 y las elimina.
Luego quiero agregar más filas de puntos de datos aumentados y hacer el ciclo nuevamente con la intención de reducir los residuos. A continuación se muestra mi código:
// 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();
Pero la última parte del código (donde se supone que agrega filas) no hace nada. ¿Alguna sugerencia?
Gracias,
Kyle
Sí, se suponía que debía ser dt en lugar de dt2. Gracias por la corrección. Si agregar filas (); espera un valor específico, ¿cómo puedo agregar más valores de X de un diseño aumentado al final de la tabla de datos "Ejecución de muestra 3" como se especifica en mi código? Lo siento si esto es muy fácil, soy muy nuevo en JMP / JSL.
Gracias
Creo que esta es la forma más directa de hacer lo que quieres:
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 ) );
Recuerde, JMP no es Excel o R. En JMP muchas veces no tiene que escribir código complejo para hacer las cosas. Muchas veces, es mucho más fácil usar una de las plataformas JMP, como "concatenar"