DOE, design personalizzato equilibratociao comunità,
Sto cercando di creare un design DOE equilibrato su 2 fattori: A a 3 livelli e B a 31 livelli. Voglio che il mio fattore B venga replicato ~ 1,41 volte (i 31 livelli del mio fattore B vengono testati su ciascun livello di facot A e 13 di essi vengono testati due volte per ogni livello di fattore A).
Voglio che la piattaforma DOE mi progetti un esperimento in cui ho lo stesso numero di corse per ogni livello del mio fattore A (e più o meno bilanciato anche per il mio facor
. Quindi chiedo un numero personalizzato di corse di 132 (44 corse per livello di fattore A). Ma sfortunatamente non posso avere qualcosa di equilibrato: ho 43/44/45 corse per ogni livello di fattore A. Potrebbe non essere chiaro, spero che il codice possa aiutare.
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>Funziona perfettamente quando ho più livello per il mio fattore A.Sto dicendo che 3 livelli sono un po' bassi, ma sembra comunque possibile fare qualcosa. C'è forse un'opzione che ho dimenticato.
Qualsiasi aiuto è il benvenuto!
Grazie mille in anticipo
(lavorando su JMP 14.1.0 64 bit)
DOESceneggiaturaRe: DOE, design personalizzato equilibratoCiao @johanna_younous ,
a me sembra che il design sbilanciato sia causato dall'ottimizzazione, che JMP fa durante la creazione del design secondo il criterio di ottimalità.
Se riduci il numero di partenze a 1, ottieni esattamente 44 corse per ogni livello di A.
Vedere: Numero di avviamenti (jmp.com)
Puoi confrontare il design che hai ottenuto con l'ottimizzazione con quello senza. Nel tuo caso sembra non esserci una vera differenza a prima vista (analisi della potenza ecc.).
Forse c'è una risposta migliore anche da altri membri o dallo staff di 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, design personalizzato equilibratoCiao Giorgio,
Grazie mille per questa risposta.
Sfortunatamente, ho appena testato questa soluzione, ma fissare il numero di avviamenti su "1" non è sufficiente per ottenere sempre questo risultato di 44 per i livelli A. Infatti può cambiare mentre cambia il numero del seme.
Finora ho risolto il mio problema "manualmente" con un ciclo interponendo i livelli A per uno del mio livello B fino a quando non ottengo questo equilibrio, ma questo viene fatto in seguito e potrebbe non essere la soluzione migliore né la più elegante né la migliore statisticamente.Vorrei poterlo fare direttamente nel modulo DOE.
Re: DOE, design personalizzato equilibrato"Equilibrio" è una caratteristica dei design classici.Anche se possiamo sostenere che l'equilibrio ci dia buone proprietà statistiche, la motivazione principale era probabilmente la capacità di fare l'analisi pochi giorni prima dell'accesso ai computer (ad esempio l'algoritmo di Yates).I progetti personalizzati non impongono l'equilibrio e in effetti un leggero squilibrio può migliorare le prestazioni statistiche (penso che questo sia discusso in "Progettazione ottimale degli esperimenti: un approccio allo studio di casi" di Jones & Goos.Se sei veramente interessato, probabilmente posso estrarre alcuni esempi in cui ho bilanciato manualmente il design e mostrato che le prestazioni statistiche sono degradate di conseguenza.
Re: DOE, design personalizzato equilibratoÈ un buon punto !
Potrei usare il ciclo "while" piuttosto che il classico "if", ma mi piace la tua soluzione grazie!
Re: DOE, design personalizzato equilibratoCiao @johanna_younous , "non sempre" significa che esistono soluzioni di JMP che soddisfano le tue esigenze. Allora perché non lasciare che JMP provi fino a quando il design non è equilibrato.
Vedi loop nello script di seguito. È meglio che modificare manualmente i fattori. Provandolo alcune centinaia di volte, ho scoperto che il design era bilanciato in più della metà dei tentativi. Quindi il ciclo qui sotto dovrebbe avere sempre una soluzione per te.
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, design personalizzato equilibratoHo scelto il ciclo for per non finire in cicli infiniti, perché potrebbero esserci definizioni DOE in cui non troveremo la soluzione. E poi abbiamo un punto finale.
Re: DOE, design personalizzato equilibratoSono un po' in ritardo su questo thread e ci sono alcune soluzioni interessanti. Tuttavia, mi chiedo se modifichi il criterio di ottimizzazione in modo che sia alias ottimale. Quei criteri di ottimizzazione in genere bilanceranno le cose il più possibile. Ecco una sceneggiatura quando ho adottato quell'approccio e sembrava funzionare.
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, design personalizzato equilibratoCiao David
Capisco che la mia richiesta di equilibrio potrebbe non essere la migliore statisticamente ma è un vincolo tecnico a cui non posso sottrarmi
Inoltre ho controllato le prestazioni (ottimalità/potenza...)e sembra essere molto vicino. Grazie anche per la tua raccomandazione di lettura, darò un'occhiata.