Simulación Monte Carlo para una plataforma de análisis (regresión por pasos)Tengo un análisis que utiliza varias columnas que tienen elementos aleatorios.Sé cómo actualizar manualmente los números aleatorios que están en las columnas y entiendo cómo realizar una simulación para el resultado de un análisis.Pero en este caso, quiero ejecutar una regresión paso a paso cada vez que se actualizan los números aleatorios en las columnas.Quiero hacer esto al menos 1000 veces.No sé cómo automatizar este proceso: generar nuevos números aleatorios en las columnas de fórmula, volver a ejecutar la plataforma de regresión por pasos, ejecutar el modelo elegido y recopilar los resultados.
Modelado estadístico avanzadoRe: Simulación Monte Carlo para una plataforma de análisis (regresión por pasos)(Parece que hay otro, hilo relacionado que no vi hasta publicar esto).
De todos modos, busque un enfoque alternativo (utilizando la tabla de datos anterior) que puede (o no...) ser más rápido:
NamesDefaultToHere(1);
dt = DataTable("Test Data.jmp");
n = 100; // Number of simulations
resMat = []; // Results matrix
for(i=1, i<=n, i++,
fm = 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,
Invisible
);
fmRep = Report(fm);
fmRep[ButtonBox(7)] << click; // Press the 'Go' button
Wait(0); // Needed to let Stepwise do it's thing before proceeding
selectedItems = fmRep[CheckBoxBox(2)] << Get Selected Indices As Matrix; // Retrive which parameters were selected this time
fmRep << closeWindow;
resmat = VConcat(resmat, Transpose(selectedItems)); // Append current results row-wise to those we have already
dt << reRunFormulas; // Get a new random sample
);
dt2 = AsTable(resmat); // Make a results table
dt2 << setName("Parameters selected by 'Stepwise'");
Re: Simulación Monte Carlo para una plataforma de análisis (regresión por pasos)Encontré la instrucción que falta, pero no puedo hacer que funcione.dt << Volver a ejecutar fórmulas;
generará un nuevo conjunto de números aleatorios en mis fórmulas.Sin embargo, cuando lo inserto en el script, dentro del bucle For pero antes de Ajustar modelo, no parece estar cambiando los números aleatorios.Mi script modificado es:
Borrar globales();
Borrar registro();
Nombres predeterminados aquí (1);
//Definir ruta de entrada y salida
Path_in = Seleccionar archivo ("Seleccionar archivo");
Si (el directorio existe ("$Desktop\Fit_Stepwise"),
,
Crear directorio( "$Desktop\Fit_Stepwise" )
);
Path_out = "$Escritorio\Fit_Stepwise\";
//Ejecutar el modelo Fit y paso a paso después de abrir la tabla de datos
dt = Abrir (Ruta_en);
Para (i = 1, i <= 1000, i++,
dt << Volver a ejecutar fórmulas;
ow = dt << Ajustar modelo(
Y( :Y ),
Efectos(
:Columna 2 001,
:Columna 2 002,
:Columna 2 003,
:Columna 2 004,
:Columna 2 005,
:Columna 2 006,
:Columna 2 007,
:Columna 2 008,
:Columna 2 009,
:Columna 2 010
),
Personalidad ("paso a paso"),
Correr,
SendToReport( Envío( {}, "Historial de pasos", OutlineBox, {Cerrar( 1 )} ) )
);
dt_result = Informe( ow )[Cuadro de esquema( "Ajuste paso a paso para Y")][Cuadro de esquema( "Estimaciones actuales")][Cuadro de tabla( 1 )] << Convertir en tabla de datos;
dt_result << guardar( Path_out || Char( i ) || ".csv", "csv" );
¡ay << cerrar ventana;
dt_result << Cerrar ventana;
);
dt << Cerrar ventana;
dt_result = Importación de múltiples archivos(
< < < < < < < < < < < < < < < < < < < < < < < < < < < < ) << Importar datos;
dt_result << Selección de fila( Seleccione dónde( :Nombre( "\!"Prob>F\!"" ) > 0.05 ) ) << Eliminar filas;
dt_result << Distribución( Pila( 1 ), Distribución nominal( Columna( :Parámetro ), Diseño horizontal( 1 ), Vertical( 0 ) ) );
¿Alguien puede ayudarme con la ubicación del comando Volver a ejecutar fórmulas o decirme por qué no funciona?
Re: Simulación Monte Carlo para una plataforma de análisis (regresión por pasos)franco
Gracias, esto es casi perfecto.Sin embargo, tengo funciones aleatorias en mis columnas y quiero que se actualicen (elija nuevos sorteos aleatorios) cada vez que se ejecuta el ciclo.El script que escribiste parece usar los mismos números aleatorios para cada ejecución.¿Hay alguna manera de actualizar las fórmulas cada vez?
Re: Simulación Monte Carlo para una plataforma de análisis (regresión por pasos)Hola dale_lehman
Mi idea es obtener y guardar el resultado desde la plataforma 'paso a paso' en una carpeta. Entonces ' Importación de múltiples archivos 'resultado completo como un archivo.
Por fin, rema limpia por ' Valor p' y distribuir como quieras.Detalle JSL como se muestra a continuación:
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++,
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>
Re: Simulación Monte Carlo para una plataforma de análisis (regresión por pasos)Lo que has expuesto en el post anterior es un buen plan. Yo también haría eso. Intentaré dar algunas recomendaciones.
- Si es nuevo en las secuencias de comandos en JMP, un punto de partida es Guía de secuencias de comandos . Algunas piezas importantes, en esta tarea específica, podrían ser:
- Además de eso, debe estar familiarizado con Scripting Index en el menú Ayuda. Hay tres grupos de objetos de secuencias de comandos: funciones, objetos y cuadros de visualización. Hay un cuadro combinado en la parte superior izquierda y puede limitarlo a un grupo específico.
- Para esta tarea específica, es posible que necesites consultar el grupo Objetos. Todas las plataformas, incluida la tabla de datos, se enumeran aquí. Es posible que desee consultar el elemento "Ajustar paso a paso" debajo del objeto "Ajustar modelo". Haga clic en "Ajustar paso a paso" y busque a la derecha el mensaje "Finalizar" entre "Mensajes de elementos". Esa podría ser la pieza clave que le falta ahora.
- Para esta tarea específica, también necesitas aprender a manipular tablas de datos. La concatenación, en particular, tal vez. Vaya a la lista de Objetos, haga clic en "Tabla de datos" y busque "Concatenar" a la derecha entre los Mensajes de elementos.
Además de lo anterior, aquí hay otros consejos útiles que aprendí de mis colegas.
- Publique preguntas más pequeñas y específicas en el foro de discusión, siempre que sea posible. Será más probable que genere ayuda.
- Prefiere capturas de pantalla a archivos adjuntos. Para los códigos JSL, puede insertarlos directamente en la publicación para que los lectores puedan verlos. Busque el botón en la barra de herramientas cuando edite una publicación. También será más probable que genere ayuda. Por ejemplo, es poco probable que un lector en un dispositivo móvil abra un archivo adjunto.

Re: Simulación Monte Carlo para una plataforma de análisis (regresión por pasos)Casi he resuelto mi problema, pero todavía tengo una pregunta.Se adjunta un pequeño script que ejecuta la regresión paso a paso como quiero.Pero para generar 1000 muestras, necesitaba crear una columna de "muestra" y usarla como variable "Por" en el análisis.Esto funciona, pero es una forma engorrosa de realizar la simulación, ya que necesito que el archivo sea muy largo; por ejemplo, para 1.000 muestras de 1.000 observaciones cada una, necesito 1.000.000 de filas.¿Alguien conoce una forma más eficiente de realizar una simulación?Hasta donde puedo decir, la opción "simular" que acompaña a muchas plataformas JMP sólo puede simular ciertos resultados de análisis, pero no el análisis en sí.
Re: Simulación Monte Carlo para una plataforma de análisis (regresión por pasos)Permítanme ser más específico en caso de que alguno de los generosos guionistas que existen pueda ayudar.Adjunto una versión más pequeña de lo que estoy intentando hacer.Tengo 10 columnas (todas comenzando con la Columna 2) en el archivo adjunto que involucran una distribución normal aleatoria y la primera columna Y, que usa 5 columnas etiquetadas como parámetros del 1 al 5, y una distribución normal aleatoria en la fórmula.Deseo realizar los siguientes pasos:
1. Ejecute la regresión paso a paso almacenada en el archivo.No necesito crear ni ejecutar el modelo, solo necesito ejecutar el botón Ir que ejecuta el procedimiento paso a paso después de Ejecutar desde la plataforma Ajustar modelo.
2. Registre la frecuencia con la que se selecciona cada una de las 10 columnas que comienzan con la Columna 2 mediante el procedimiento paso a paso. (No sé cómo crear un guión para recopilar esa información en particular)
3. Vuelva a ejecutar la fórmula para las 5 columnas de parámetros para que contengan un nuevo conjunto de valores simulados.Sé que esto se puede hacer con el comando Volver a ejecutar la fórmula que se encuentra en la flecha roja en la parte superior izquierda de la tabla (pero no sé cómo programarlo).
4. Repita los pasos 1 y 2. (Creo que esto se puede hacer mediante un bucle simple)
5. Haga esto 1000 veces y muestre las distribuciones del número de veces que se seleccionó cada una de las 10 columnas de la Columna 2 en el procedimiento paso a paso.
Creo que todo esto se puede programar, pero está mucho más allá de lo que yo pueda hacer.Si alguien puede ser de ayuda, se lo agradecería.Estoy dispuesto a ser coautor de un artículo con alguien ya que tengo una salida en mente para esto.