Graph Builder agrega valores p dinámicamente: flujo de trabajo recomendadoHola comunidad JMP,
A menudo necesito anotar los gráficos de Graph Builder (~200) con los resultados de un análisis (por ejemplo, valores de p. Estimaciones). Hasta ahora, he dependido principalmente de anotaciones manuales, pero estoy empezando a cansarme de este enfoque. Sé cómo agregar texto dinámicamente mediante secuencias de comandos, pero no he descubierto una buena manera de resolver mi problema específico (ver más abajo).
¿Cuál sería su flujo de trabajo recomendado en el siguiente caso?
Datos gráficos : ~200 columnas que contienen los valores Y (~1000 filas); X datos definidos en 1 columna, datos superpuestos en 1 columna, lo que produce 200 gráficos
Resultados del análisis : 1 fila por valor de Y, columnas que contienen el valor p, estimaciones y otros posibles resultados del análisis.
Nota : La automatización ha sido un desafío porque los datos iniciales siempre son ligeramente diferentes de un lote a otro.
Mi principal problema es que los datos del gráfico y las tablas de resultados del análisis están organizados ortogonalmente (Y en columnas versus Y en filas), lo que requeriría transponer la tabla de resultados, dividir la tabla resultante por resultados de análisis (valores p, estimaciones,...) y conecte la tabla resultante a la tabla gráfica. Esto no parece muy eficaz por lo que cualquier sugerencia será bienvenida.
Gracias.
TS
Ingeniería de Calidad y ProcesosCompartir y comunicar resultadosRe: Generador de gráficos Agregar valores p dinámicamente: flujo de trabajo recomendadoEn general, JMP facilita la reorganización de datos, y "ineficiente" es un término relativo. Si entiendo correctamente, desea agregar algunos resultados de una plataforma (análisis) a los de otra plataforma (gráfica). El mejor flujo de trabajo dependerá de los detalles.
El siguiente script hace algunos datos aleatorios en línea con lo que dices arriba. Si puede ejecutarlo, luego publique el script que reproducirá los resultados de sus dos plataformas elegidas, la gente estará en mejores condiciones para dar recomendaciones más específicas.
NamesDefaultToHere(1);
// Make a data table
nr = 1000;
y = J(nr, 200, RandomNormal());
x = J(nr, 1, RandomUniform(1, 10));
o = J(nr, 1, RandomInteger(1, 6));
dt = AsTable(x||o||y);
dt << setName("Test");
Column(dt, 1) << setName("X");
Column(dt, 2) << setName("Overlay");Re: Generador de gráficos Agregar valores p dinámicamente: flujo de trabajo recomendadoEncuentra 3 archivos adjuntos:
- Tabla de datos de entrada generada con su script (modificación menor)
- Un ejemplo de tabla OUTPUT
- Un ejemplo de revista PLOTS
Gracias por examinar esto.
Atentamente,
TS
Re: Generador de gráficos Agregar valores p dinámicamente: flujo de trabajo recomendadoEstoy seguro de que todos abordarían esto de manera ligeramente diferente. Pero si las dos tablas anteriores son su punto de partida, entonces haría algo como esto:
NamesDefaultToHere(1);
// Data tables
data = DataTable("Test WORKFLOW.jmp");
stats = DataTable("Test WORKFLOW RESULT TABLE.jmp");
// Template expression for Graph Builder with text annotation
gbExpr =
Expr(
data << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :X ), Y( yTBD ), Overlay( :Overlay ) ),
Elements(Line(X, Y, Legend( 12 ), Error Interval( "None" ))),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script( 2, Description( "Annotation" ), Text( {8, 0}, "interaction P Val: "||Char(Round(pValTBD, 3))))}
)
)
)
);
// Loop over 'Y' variables
lub = LineUpBox(NCol(1));
for(c=3, c<=NCol(data), c++,
yCol = Column(data, c);
pVal = Column(stats, 2)[c-2];
lub << append(Eval(Substitute(NameExpr(gbExpr), Expr(yTBD), yCol, Expr(pValTBD), pVal)));
);
// Reports in a Journal
nw = NewWindow("Report", <<JOURNAL></JOURNAL>
Debería poder desarrollar este esquema para adaptarse a su caso. También podría intentar incluir algo de lógica para colocar la anotación en un lugar 'mejor'. Si no está seguro de cómo funciona, consulte 'Ayuda> Guía de secuencias de comandos' y el libro JSL.