DOE, diseño personalizado equilibradohola comunidad,
Estoy tratando de hacer un diseño DOE equilibrado en 2 factores: A en 3 niveles y B en 31 niveles. Quiero que mi factor B se replique ~ 1,41 veces (los 31 niveles de mi factor B se prueban en cada nivel de factor A y 13 de ellos se prueban dos veces para cada nivel de factor A).
Quiero que la plataforma DOE me diseñe un experimento en el que tenga el mismo número de ejecuciones para cada nivel de mi factor A (y más o menos equilibrado también para mi factor
. Así que solicito un número personalizado de Ejecuciones de 132 (44 ejecuciones por nivel del factor A). Pero lamentablemente no puedo tener algo equilibrado: tengo 43/44/45 carreras para cada nivel del factor A. Puede que no esté claro, espero que el código ayude.
lstA = {"L1","L2" , "L3"};
lstB= {"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8", "V1_9",
"V1_10", "V1_11", "V1_12", "V1_13", "V1_14", "V1_15", "V1_16", "V1_17", "V1_18",
"V1_19", "V1_20", "V1_21", "V1_22", "V1_23", "V1_24", "V1_25", "V1_26", "V1_27",
"V1_28", "V1_29", "V1_30"};
eval(parse("DOE1 =
DOE(
Custom Design,
{ Add Factor( Categorical, "||char(lstA )||", \!"A\!", 0 ),
Add Factor( Categorical,"|| char(lstB)||", \!"B\!", 0 ),
//Set Random Seed( seed1 ),
Set Sample Size( "||char( 132)||" )}
);"));
DOE1<< Make Design;
DT_DOE= DOE1<< Make Table();
DOE1<<CLOSE window=""></CLOSE>Esto funciona perfectamente sin problemas cuando tengo más nivel para mi factor A.Supongo que 3 niveles es un poco bajo, pero aun así parece posible hacer algo. Posiblemente hay una opción que se me olvidó.
¡Cualquier ayuda es bienvenida!
Muchas gracias por adelantado
(trabajando en JMP 14.1.0 64bit)
GAMAsecuencias de comandosRe: DOE, diseño personalizado equilibradoHola @johanna_younous ,
a mí me parece que el diseño desequilibrado es causado por la optimización que hace JMP al crear el diseño de acuerdo con el criterio de optimización.
Si restringe el número de inicios a 1, obtiene exactamente 44 ejecuciones para cada nivel de A.
Ver: Número de inicios (jmp.com)
Puede comparar el diseño que obtuvo con la optimización con el que no tiene. En su caso, no parece haber una diferencia real a primera vista (análisis de potencia, etc.).
Tal vez también haya una mejor respuesta de otros miembros o del personal de JMP.
Names Default To Here( 1 );
doe_obj = DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor( Categorical, {"L1", "L2", "L3"}, "X1", 0 ), Add Factor(
Categorical,
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8", "V1_9", "V1_10", "V1_11", "V1_12", "V1_13", "V1_14", "V1_15",
"V1_16", "V1_17", "V1_18", "V1_19", "V1_20", "V1_21", "V1_22", "V1_23", "V1_24", "V1_25", "V1_26", "V1_27", "V1_28", "V1_29", "V1_30"},
"X2",
0
), Set Random Seed( 1348397327 )
, Number of Starts( 1 /* 1000 */ )
, Add Term( {1, 0} ), Add Term( {1, 1} ), Add Term( {2, 1} ), Add Alias Term( {1, 1}, {2, 1} ), Set Sample Size( 132 ), Simulate Responses( 0 ),
Save X Matrix( 0 ), Make Design}
);
doe_dt = doe_obj << make table();
doe_obj << close window();
doe_dt << Summary( Group( :X1 ), Freq( "None" ), Weight( "None" ) );Re: DOE, diseño personalizado equilibradoHola Jorge,
Muchas gracias por esta respuesta.
Desafortunadamente, acabo de probar esta solución, pero fijar el número de inicios en "1" no es suficiente para obtener siempre estos resultados de 44 para los niveles A. De hecho, puede cambiar mientras cambia el número de semillas.
Hasta ahora arreglé mi problema "manualmente" mediante un ciclo que intervierte los niveles A por uno de mis niveles B hasta que obtengo este equilibrio, pero esto se hace después y puede que no sea la mejor solución ni la más elegante ni la mejor estadísticamente.Ojalá pudiera hacerlo directamente en el módulo DOE.
Re: DOE, diseño personalizado equilibradoEl "equilibrio" es una característica de los diseños clásicos.Si bien podemos argumentar que el equilibrio nos brinda buenas propiedades estadísticas, la motivación principal probablemente fue la capacidad de realizar el análisis días antes del acceso a las computadoras (por ejemplo, el algoritmo de Yates).Los diseños personalizados no imponen el equilibrio y, de hecho, un ligero desequilibrio puede mejorar el rendimiento estadístico (creo que esto se analiza en 'Diseño óptimo de experimentos: un enfoque de estudio de caso' de Jones & Goos.Si está realmente interesado, probablemente pueda encontrar algunos ejemplos en los que he equilibrado manualmente el diseño y he demostrado que, como resultado, el rendimiento estadístico se degrada.
Re: DOE, diseño personalizado equilibradoHola @johanna_younous , "no siempre" significa que hay soluciones de JMP que cumplen con sus requisitos. Entonces, ¿por qué no dejar que JMP intente hasta que el diseño esté equilibrado?
Vea el bucle en el script a continuación. Es mejor que cambiar manualmente los factores. Al probar esto unos cientos de veces, descubrí que el diseño estaba equilibrado en más de la mitad de los intentos. Entonces, el ciclo a continuación siempre debería tener una solución para usted.
Names Default To Here( 1 );
dt_sum = New Table( "DOE designs",
New Column( "Balanced", "Character", formula( If( :L1 == L2 == L3, "y", "n" ) ) ),
New Column( "L1", "Continuous" ),
New Column( "L2", "Continuous" ),
New Column( "L3", "Continuous" )
);
done = 0;
For( i = 1, (i <= 100) & !done, i++,
doe_obj = DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ), Add Factor( Categorical, {"L1", "L2", "L3"}, "X1", 0 ), Add Factor(
Categorical,
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8", "V1_9", "V1_10", "V1_11", "V1_12", "V1_13", "V1_14", "V1_15",
"V1_16", "V1_17", "V1_18", "V1_19", "V1_20", "V1_21", "V1_22", "V1_23", "V1_24", "V1_25", "V1_26", "V1_27", "V1_28", "V1_29", "V1_30"},
"X2",
0
), Number of Starts( 1 ), Add Term( {1, 0} ), Add Term( {1, 1} ), Add Term( {2, 1} ), Add Alias Term( {1, 1}, {2, 1} ),
Set Sample Size( 132 ), Simulate Responses( 0 ), Save X Matrix( 0 ), Make Design}
);
doe_dt = doe_obj << make table();
doe_obj << close window();
Summarize( doe_dt, by_grp = by( :X1 ), by_cnt = Count() );
dt_sum << add row( 1 );
dt_sum:L1[N Rows( dt_sum )] = by_cnt[1];
dt_sum:L2[N Rows( dt_sum )] = by_cnt[2];
dt_sum:L3[N Rows( dt_sum )] = by_cnt[3];
// finish, when design is balanced, otherwise continue with new try
If( by_cnt[1] == by_cnt[2] == by_cnt[3],
done = 1,
Close( doe_dt, NoSave )
);
);
dt_sum << Distribution( Nominal Distribution( Column( :Balanced ) ) );Re: DOE, diseño personalizado equilibradoEse es un buen punto !
Puedo usar el bucle "while" en lugar del clásico "if", pero me gusta tu solución, ¡gracias!
Re: DOE, diseño personalizado equilibradoHe elegido el bucle for para no terminar en bucles infinitos, porque puede haber definiciones DOE en las que no encontremos la solución. Y luego tenemos un punto final.
Re: DOE, diseño personalizado equilibradoLlego un poco tarde a este hilo, y hay algunas soluciones interesantes. Sin embargo, me pregunto si simplemente cambia el Criterio de Optimalidad para que sea Alias Óptimo. Ese criterio de optimización típicamente equilibrará las cosas tanto como sea posible. Aquí hay un guión cuando tomé ese enfoque y pareció funcionar.
DOE(
Custom Design,
{Add Response( Maximize, "Y", ., ., . ),
Add Factor( Categorical, {"L1", "L2", "L3"}, "A", 0 ),
Add Factor(
Categorical,
{"V1_0", "V1_1", "V1_2", "V1_3", "V1_4", "V1_5", "V1_6", "V1_7", "V1_8",
"V1_9", "V1_10", "V1_11", "V1_12", "V1_13", "V1_14", "V1_15", "V1_16",
"V1_17", "V1_18", "V1_19", "V1_20", "V1_21", "V1_22", "V1_23", "V1_24",
"V1_25", "V1_26", "V1_27", "V1_28", "V1_29", "V1_30"},
"B",
0
), Set Random Seed( 1127601240 ), Number of Starts( 3796 ), Add Term( {1, 0} ),
Add Term( {1, 1} ), Add Term( {2, 1} ), Add Term( {1, 1}, {2, 1} ),
Set Sample Size( 132 ), Optimality Criterion( Make Alias Optimal Design ),
Simulate Responses( 0 ), Save X Matrix( 0 ), Make Design}
)Re: DOE, diseño personalizado equilibradoHola David
Entiendo que mi solicitud de saldo puede no ser la mejor estadísticamente, pero es una restricción técnica de la que no puedo escapar
Además, verifiqué las actuaciones (optimidad/potencia...)y parece estar muy cerca. Gracias también por tu recomendación de lectura, le echaré un vistazo.