Pregunta de guión para volver a ejecutar fórmulasHice esta pregunta en una publicación anterior, pero eso fue hace unas semanas, por lo que es posible que no se note.Sospecho que esta es una pregunta fácil de secuencias de comandos para este grupo.A continuación se muestra un script (donado por frank) que ejecuta con éxito una simulación de Monte Carlo para una regresión paso a paso.Lo único que no hizo fue volver a calcular una cantidad de columnas donde tengo números aleatorios en fórmulas antes de realizar la regresión por pasos.El comando <
Mi intento fallido es la línea 19 del guión.Gracias.
Clear Globals();
Clear Log();
Names Default To Here( 1 );
//Define path in and out
Path_in = Pick File( "Select file" );
If( Directory Exists( "$Desktop\Fit_Stepwise" ),
,
Create Directory( "$Desktop\Fit_Stepwise" )
);
Path_out = "$Desktop\Fit_Stepwise\";
//Run Fit model and stepwise after open datatable
dt = Open( Path_in );
For( i = 1, i <= 1000, i++,
dt << Rerun Formulas;
ow = dt << Fit Model(
Y( :Y ),
Effects(
:Column 2 001,
:Column 2 002,
:Column 2 003,
:Column 2 004,
:Column 2 005,
:Column 2 006,
:Column 2 007,
:Column 2 008,
:Column 2 009,
:Column 2 010
),
Personality( "Stepwise" ),
Run,
SendToReport( Dispatch( {}, "Step History", OutlineBox, {Close( 1 )} ) )
);
dt_result = Report( ow )[Outline Box( "Stepwise Fit for Y" )][Outline Box( "Current Estimates" )][Table Box( 1 )] << Make Into Data Table;
dt_result << save( Path_out || Char( i ) || ".csv", "csv" );
ow << close window;
dt_result << Close Window;
);
dt << Close Window;
dt_result = Multiple File Import(
<<SET folder="">F\!"" ) > 0.05 ) ) << Delete Rows;
dt_result << Distribution( Stack( 1 ), Nominal Distribution( Column( :Parameter ), Horizontal Layout( 1 ), Vertical( 0 ) ) );</SET>secuencias de comandosRe: Pregunta de script para volver a ejecutar fórmulasLas fórmulas de repetición deberían funcionar, ¿tal vez necesite agregar esperar (0) en alguna parte? Sin ver la tabla de datos, es un poco difícil probar dónde podría estar el problema (recuento de filas, recuento de columnas, fórmulas complicadas, semillas aleatorias que no cambian por algún motivo).
Con este simple ejemplo, los valores parecen actualizarse bien:
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(5),
New Column("Column1", Numeric, "Continuous", Format("Best", 12), Formula(Random Normal(1, 1))),
New Column("Column2", Numeric, "Continuous", Format("Best", 12), Formula(Random Normal(2, 1)))
);
For(i = 1, i <= 3, i++,
dt << Rerun Formulas;
Show(dt:Column1 << get as matrix);
Show(dt:Column2 << get as matrix);
fm = dt << Fit Model(
Y(:Column1),
Effects(:Column2),
Personality("Stepwise"),
Run,
SendToReport(Dispatch({}, "Step History", OutlineBox, {Close(1)}))
);
dt_result = Report(fm)[Outline Box("Stepwise Fit for Column1")][Outline Box("Current Estimates")][Table Box(1)] << Make Into Data Table;
fm << close window;
//dt_result << Close Window;
);Re: Pregunta de script para volver a ejecutar fórmulasHe adjuntado el archivo.Parece que inserté Rerun Formulas en el lugar correcto, pero no funciona.¿Cómo y adónde va Wait?
Re: Pregunta de script para volver a ejecutar fórmulasSolo para asegurarse de que la columna se evaluará, agregue esto antes del bucle For (si está utilizando una versión anterior a JMP16, cambie For Each a For):
For Each({col_name}, dt << get column names(String),
Column(dt, col_name) << suppress eval(False)
);
En la tabla que abrí, las columnas de fórmula tenían la evaluación suprimida, pero podría ser solo una función de seguridad con los archivos descargados.
Si tiene que agregar wait(0), puede ir un poco en exceso al principio y casi agregarlo después de cada fila dentro del ciclo for. Por lo general, no es necesario en JMP, pero hay algunos casos en los que es necesario.