<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy escribiendo un script que agregará información adicional a una plataforma existente (por ejemplo, agregar RSquare Predicted to Fit model). Puedo agregar el pred.R2 a una plataforma que se crea como parte de mi script. Pero, ¿cómo obtendría una referencia a un modelo que fue ajustado por el usuario? Me gustaría crear un diálogo de usuario, que le permita seleccionar la ventana de la plataforma a la que se debe agregar pred.R2.
Por supuesto, preferiría aún más simplemente agregar mi propia entrada de menú al punto de acceso principal de Fit-Model-plaftorm, pero no tengo idea si eso es posible.
Gracias por cualquier consejo,
Sebastian
Sebastian
Solo para aprovechar la excelente respuesta de MS ... Hemos escrito una secuencia de comandos muy similar para agregar el valor predicho de R2 a la salida del modelo de ajuste. En lugar de mostrar un cuadro de diálogo para seleccionar el informe apropiado, puede ejecutar el script desde el menú o desde una barra de herramientas de la ventana del informe actual (el script debe agregarse al menú o una barra de herramientas). Luego, el comando Ventana actual () proporciona una referencia a la ventana del informe, y puede buscar en los cuadros de esquema dentro de la ventana del informe. Aquí hay una parte de nuestro guión.
curwin = Current Window();For( i = 1, i < 10000, i++, Try( outlinebox = curwin[Outline Box( i )]; Try( outlineboxobj = outlinebox << Get Scriptable Object; // DETAILS NOT SHOWN: // Check that the outline box is the top of a Fit Model analysis, with Standard Least Squares personality. // Pull the PRESS statistic and SS(treatment) to calculate R2-Predicted and append it to the Summary of Fit. ); , Break(); // If no more outline boxes are found, the first "Try()" goes here and forces an escape from the For() loop. ););
Nuestra secuencia de comandos en realidad inserta el valor de Predicción de R2 en cada análisis de Modelo de Ajuste en esa ventana (funciona para múltiples Y y por variables). Lo hace mirando cada cuadro de esquema en la ventana de informe.
Comentarios:
1. La documentación de JSL no hace justicia al mensaje "<< Obtener objeto con secuencias de comandos". Busqué durante mucho tiempo un método para acceder a las ventanas de informes existentes (análisis estándar que ya habían sido creados por un usuario, no por un script). Esta capacidad abre muchas oportunidades de scripting.
2. Para evitar que todos volvamos a inventar la rueda, sería bueno que JMP incluyera el valor de Predicción de R2 en la salida estándar Ajustar los mínimos cuadrados.
Howard
Generalmente, << Obtener objeto de secuencias de comandos Puede dar acceso a la plataforma. sin embargo, el Modelo de ajuste la salida es un poco peculiar y requiere un poco de investigación en el informe para encontrar la caja de salida superior de la plataforma.
Si no hay un rol asignado asignado, lo siguiente debería funcionar (asumiendo funciones y definiciones como anteriormente).
// diálogo
Nueva ventana ( "Seleccionar informe de regresión" ,
<< Modal ,
Caja de panel ( "Seleccione el Informe de Regresión para agregar Predicted R2 a" ,
rb = Caja de radio ( ventanas ) ,
Caja de botones ( "DE ACUERDO" ,
Ventana ( rb << ser seleccionado ) << Traer la ventana al frente ;
insertToReport (
Informe actual () [ 1 , 1 , 1 ] << obtener objeto de secuencias de comandos ()
) ;
)
)
) ;
Muchas gracias, Sebastian. Casi lo tengo (creo), así que déjame recapitular. . .
Su usuario tendría su sesión JMP en un estado que su código no conoce. En otras palabras, podrían tener varias tablas abiertas, cada una con varias ventanas. Algunas de estas ventanas pueden contener un 'Ajustar mínimos cuadrados'; informe. Su código debe escanear todas las ventanas abiertas, identificar la última y, si hay más de una, dejar que el usuario elija cuál agregar el contenido del informe adicional (si solo hay una, no es necesario preguntar). El punto clave es que su código no generó ninguno de los informes.
¿Es correcto, por favor?
Hola, Ian,
gracias por la respuesta. Me gustaría seguir este flujo de trabajo:
1. Los usuarios comienzan su análisis utilizando "Ajustar modelo (mínimos cuadrados estándar)".
2. Luego el usuario ejecuta mi script para agregar el Predicted R2 a su informe.
3. El R2 predicho se adjunta al informe "Ajustar modelo".
El problema es cómo accedo al informe que fue creado por el usuario en mi script.
Actualmente mi código se ve así. Básicamente, quiero reemplazar la última sección "Probar" con un cuadro de diálogo de usuario donde el usuario elige el informe donde se encuentra Pred. Se debe agregar R2 (especialmente en caso de que haya varios informes). Solo me falta la parte de cómo podría hacer referencia a un informe existente.
// Extrae la estadística PRESS de un "Fit Model" -plattform
GetPRESS = Función ({ plataforma } ,
plataforma << prensa ( espectáculo = 1 ) ;
informe = plataforma << Informe ;
prensa = ( informe El OutlineBox ( "Prensa" )] [ 1 ] [ 1 ] << Obtener como matriz ) [ 1 ] ;
prensa ;
) ;
// Extrae la suma total de cuadrados de una plataforma tipo "Fit Model"
getTSS = Función ({ plataforma } ,
informe = plataforma << Informe ;
ss = ( informe El OutlineBox ( "Análisis de variación" )] [ 1 ] [ 3 ] << Obtener como matriz ) ;
tss = ss El Nrow ( ss )] ;
tss ;
) ;
// Calcula el R2 predicho para un modelo lineal calculado utilizando Fit-Model-plattform
predR2 = Función ({ plataforma } ,
prensa = GetPRESS ( plataforma ) ;
tss = getTSS ( plataforma ) ;
pr2 = 1 - prensa / tss ;
pr2 ;
) ;
// Insertar el pred R2 en el informe.
insertToReport = Función ({ plataforma } ,
lm.rep = plataforma << Informe ;
nombres = lm.rep El OutlineBox ( "Resumen de ajuste" )] [ StringColBox ( 1 )] << Obtener ;
valores = lm.rep El OutlineBox ( "Resumen de ajuste" )] [ Numero Col Box ( 1 )] << Obtener ;
Insertar en ( nombres , "RSquare pronosticó" , 3 ) ;
Insertar en ( valores , predR2 ( plataforma ) , 3 ) ;
lm.rep El OutlineBox ( "Resumen de ajuste" )] [ StringColBox ( 1 )] << Establecer valores ( nombres ) ;
lm.rep El OutlineBox ( "Resumen de ajuste" )] [ NumberColBox ( 1 )] << Establecer valores ( Matriz ( valores )) ;
) ;
// Pruébalo
dt = Abierto ( "$ sample_data / Design Experiment / Coffee Data.jmp" ) ;
análisis = Modelo de ajuste (
Y ( : Fuerza ) ,
Efectos ( : Moler , : Temperatura , : Hora , : Cargar , : Estación ) ,
Personalidad ( "Mínimos cuadrados estándar" ) ,
Énfasis ( "Informe mínimo" ) ,
correr (
: Fuerza << { Falta de ajuste ( 0 ) , Parcela Actual por Predicción ( 0 ) ,
Regresión de la trama ( 0 ) , Parcela residual por predicción ( 0 ) ,
Apalancamiento Efecto Parcela ( 0 )}
)
) ;
InsertarReporte ( análisis ) ;
Adición: Esto es lo que intenté pero no pude hacer funcionar:
// ----------------------- +
// diálogo de usuario |
// ----------------------- +
// Obtener todas las ventanas abiertas
windows = {};
ref_windows = Ventana ();
Para (i = 1, i <= Longitud (ref_windows), i ++,
Insertar en (windows, ref_windows << Obtener el título de la ventana);
);
// diálogo
Nueva ventana ("Seleccionar informe de regresión", << Modal,
Cuadro de panel ("Seleccione Informe de regresión para agregar Predicted R2 a", pf = Cuadro de radio (ventanas));
);
lm_plattform = Plattform (pf << Get);
lm_plattform << Traer al frente;
insertToReport (lm_plattform);