¿Cómo escribo un bucle for para ejecutar ANOVA unidireccional en todas las columnas Y en una tabla de datos?Tengo una tabla de datos grande con 10,000 nombres de columnas diferentes y una pequeña cantidad de filas que contienen réplicas de 5 grupos de muestras diferentes, incluido un grupo de control etiquetado como "HN30".Tengo un script que ejecutará un ANOVA unidireccional y una prueba de comparaciones de medias post-hoc de Dunnett (es decir, comparación de medias) con el grupo de control (HN30) si especifico cada variable Y de una en una. Sin embargo, no quiero escribir los 10,000 nombres de columna diferentes o que se me solicite ejecutar una prueba de Dunnett o ingresar el nombre de control para cada análisis de columna.¿Alguien puede ayudarme a escribir un bucle for que iterará los comandos a través de todas las columnas una a la vez? Una vez que obtengo la salida, sé cómo usar el comando Combinar tablas para fusionar todos los valores P de salida.A continuación se muestra lo que tengo que funciona para dos columnas especificadas llamadas "SPP1" y "ABCC2", donde las filas del grupo de control están etiquetadas como "HN30".Solo necesito iterar en todas las columnas. Muchas gracias !
Fit Group(
Oneway(
Y( :SPP1 ),
X( :Cell lline ),
With Control( 1, {"HN30"} ),
Comparison Circles( 1 ),
SendToReport(
Dispatch(
{"Means Comparisons",
"Comparisons with a control using Dunnett's Method",
"LSD Threshold Matrix"},
"p-Value",
NumberColBox,
{Set Format( "Fixed Dec", 15, 15 )}
)
)
),
Oneway(
Y( :ABCC2 ),
X( :Cell lline ),
With Control( 1, {"HN30"} ),
Comparison Circles( 1 ),
SendToReport(
Dispatch(
{"Means Comparisons",
"Comparisons with a control using Dunnett's Method",
"LSD Threshold Matrix"},
"p-Value",
NumberColBox,
{Set Format( "Fixed Dec", 15, 15 )}
)
)
),
<<{Arrange in Rows( 1 )}
);ScriptingRe: ¿Cómo escribo un bucle for para ejecutar ANOVA unidireccional en todas las columnas Y en una tabla de datos?Aquí hay un ejemplo de un bucle. Probablemente puedas adaptarte a tus necesidades.
Puede encontrar ejemplos de los comandos utilizados en el índice de secuencias de comandos o en la referencia de secuencias de comandos, si es necesario.
Names Default To Here( 1 );
cdt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
all_ys = cdt << get column names( Continuous, String );
For( i = 1, i <= n items(all_ys), i++,
Eval( Parse( Eval Insert( "oneway( X( :SITE ), Y( :^all_ys[i]^ ) )" ) ) )
);
Re: ¿Cómo escribo un bucle for para ejecutar ANOVA unidireccional en todas las columnas Y en una tabla de datos?Gracias Georg,
Adapté su ejemplo a mi tabla específica y ahora obtengo todos los ANOVA de una vía ejecutándose para cada columna, para que esa parte funcione.Sin embargo, todavía no puedo entender cómo trabajar en la prueba de Dunnett para seguir cada ANOVA.No estoy seguro de cómo estructurar ese subcomando con el bucle for.Esto es lo que tengo hasta ahora, pero no puedo ejecutar las pruebas específicas de Dunnett que muestro en la parte inferior en el ciclo for.¿Algunas ideas?Gracias de nuevo
Names Default To Here( 1 );
cdt = Open( "F:/Stats/DTest.jmp" );
all_ys = cdt << get column names( Continuous, String );
For( i = 1, i <= n items(all_ys), i++,
Eval( Parse( Eval Insert( "oneway( X( :Cell lLine ), Y( :^all_ys[i]^ ) )" ) ) )
);
Fit Group(
Oneway(
Y( :SPP1 ),
X( :Cell lline ),
With Control( 1, {"HN30"} ),
Comparison Circles( 1 ),
SendToReport(
Dispatch(
{"Means Comparisons",
"Comparisons with a control using Dunnett's Method",
"LSD Threshold Matrix"},
"p-Value",
NumberColBox,
{Set Format( "Fixed Dec", 15, 15 )}
)
)
),
Oneway(
Y( :ABCC2 ),
X( :Cell lline ),
With Control( 1, {"HN30"} ),
Comparison Circles( 1 ),
SendToReport(
Dispatch(
{"Means Comparisons",
"Comparisons with a control using Dunnett's Method",
"LSD Threshold Matrix"},
"p-Value",
NumberColBox,
{Set Format( "Fixed Dec", 15, 15 )}
)
)
),
<<{Arrange in Rows( 1 )}
);