Hola comunidad JMP,
Actualmente estoy intentando escribir un script que abre una tabla de datos existente que contiene una columna "X1" y una columna "Y1" con 10 filas. La secuencia de comandos predice Y1 en una nueva columna, crea una columna residual (Predicción Y1 - Y1) y luego crea una columna residual predicha. A partir de ahí, quiero que la secuencia de comandos agregue una cierta cantidad de valores X1 / Y1 "inventados" a la tabla de datos existente, con la esperanza de que el proceso se automatice. El siguiente código es lo que creo que es responsable de agregar los puntos de datos a la tabla de datos. El problema es que la siguiente secuencia de comandos no agrega una lista precisa de los valores de X1 (los valores de X1 son simplemente todos los números enteros entre 1 y 10, y cuando ejecuto el siguiente código, generalmente solo obtengo los números enteros 1 y 10).
d = DOE (Augment Design, X (: X1), Y (: Y1) / *, {Make Design, Make Table} * /);
d << Hacer diseño;
dt3 = d << Hacer tabla;
dt2 << concatenar (dt3, anexar a la primera tabla (1));
Aquí está mi guión completo si ayuda a:
// 1. Crea la columna X1, y la Y1 correspondiente.
Cerrar todo (tablas de datos, sin guardar);
sourceDT = Abrir ("SH2.jmp");
dt2 = sourceDT << Subconjunto (Columnas (), Filas (), Nombre de la tabla de salida ("Fixed.jmp"));
// 2. Crea la columna Ystat predicha, guarda las fórmulas en la misma tabla de datos (primera iteración)
PredictedY1 = dt2 << Neural (
Y (: Y1),
X (: X1),
Falta Informativa (0),
Método de validación ("Retención", 0.3333),
Ajuste (NTanH (3))
);
PredictedY1 << Guardar fórmulas de perfil;
// 3. Añade columna residual
dt2 << Nueva columna ("Residual 1", Fórmula (Abs (: PredictedY1 -: Y1)));
// 4. Crea y predice la columna residual.
PredictedResidual1 = dt2 << Neural (
Y (: Residual 1),
X (: X1),
Falta Informativa (0),
Método de validación ("Retención", 0.3333),
Ajuste (NTanH (3))
);
PredictedResidual1 << Guardar fórmulas de perfil;
// Iteración 2
d = DOE (Augment Design, X (: X1), Y (: Y1) / *, {Make Design, Make Table} * /);
d << Hacer diseño;
dt3 = d << Hacer tabla;
dt2 << concatenar (dt3, anexar a la primera tabla (1));
PredictedY2 = dt2 << Neural (
Y (: Y1),
X (: X1),
Falta Informativa (0),
Método de validación ("Retención", 0.3333),
Ajuste (NTanH (3))
);
PredictedY2 << Guardar fórmulas de perfil;
// 3. Añade columna residual
dt2 << Nueva columna ("Residual 2", Fórmula (Abs (: PredictedY1 2 -: Y1)));
// 4. Crea y predice la columna residual.
PredictedResidual2 = dt2 << Neural (
Y (: Residual 2),
X (: X1),
Falta Informativa (0),
Método de validación ("Retención", 0.3333),
Ajuste (NTanH (3))
);
PredictedResidual2 << Guardar fórmulas de perfil;
Columna (dt2, "X1") << Suprimir fórmula Eval ();
Columna (dt2, "Y1") << Suprimir fórmula Eval ();
dt2 << Seleccione dónde (: Residual 1 <= 3);
dt2 << eliminar filas;
Gracias,
Kyle
No estoy muy seguro de lo que quieres. Mi interpretación es que desea agregar nuevas filas a las filas anteriores. Augment Design crea nuevos tratamientos y el mensaje Crear tabla generará la nueva tabla combinada. Crea las nuevas filas que son óptimas para el modelo especificado y las filas dadas.
Creo que desea crear una segunda tabla de datos con los niveles que determine y concatenarlos a las filas existentes. Alternativamente, puede enviar iterativamente el mensaje << Agregar filas () a la primera tabla de datos para agregar los nuevos niveles.
Me disculpo por cualquier confusión. Tienes razon que quiero crear una segunda tabla de datos con los niveles que determine y concatenarlos a las filas existentes. El problema es que la segunda tabla de datos crea una tabla con valores explícitamente 1 o 10. Quiero que la segunda tabla de datos tenga valores distribuidos aleatoriamente entre 1 y 10 (que es el rango de valores que tiene la tabla de datos original). Augment Design puede no ser la mejor manera de hacer esto, pero soy muy nuevo en JSL, así que no estoy seguro de cómo proceder
Gracias
Aún puede usar cualquiera de los métodos que sugerí: cree una segunda tabla de datos y concatene o agregue directamente filas a la tabla de datos original.
Bosquejo de la idea:
dt2 = New Table( "Augmentation Runs",<BR />Add Rows( 10 ),<BR />New Column( "X1", Numeric, Continuous, Values( J( 10, 1, Random Uniform() ) )<BR />);<BR /><BR />dt << Concatenate( dt2 );
Alternativamente:
For( I = 1, I < 11, I++,
dt << Add Rows( { X1 = Random Uniform() } );
);