I wanted to learn how to do an optimal experimental design with nested factors.
First, do a simple example with two machines (one with one switch) to compare speed (Response), described in the following research article.
Goos, P., & Jones, B. (2019). Optimal experimental design in the presence of nested factors. Technometrics., https://repository.uantwerpen.be/docman/irua/056e33/160394_2019_10_25.pdf
Example 1: Two machines, one with switch
Consider an experiment comparing the performance of two machines where one machine has a switch that is missing in the other machine.
Branching Factor X1: Machine, Levels: {A, B}
Nested factor X2: Switch {On, Off}. This factor appears only when Machine A is selected.
Question
- Is there a script to do it automatically?
- How can you do it in JMP?
Next level
My ultimate goal is do an experimental design on two softwares that have some shared parameters and other nested multiple parameters levels depending on the software selected.
Example 2: Compare runtime (s) for software A_CBC and B_SCIP
Both have shared factors SA and SB with 3 categorical levels each.
A_CBC has two nested factors: Nested A1_CBC with 3 categorical levels and Nested A2_CBC with 3 categorical levels
B_SCIP has two nested factors: Nested B1_SCIP with 2 categorical levels and Nested B2_SCIP with 4 categorical levels.
Any help is more than welcome! Thank you in advance!
rbosu
My attempts
I tried with Disallowed Combination Script to forbid cross nested factors combinations, but failed.
Error: Invalid disallowed combinations script. See Log for details.
I tried to remove in the Model, the interactions terms between nested factors, main effect terms of the nested factors.
Error: The selected terms in the Model outline are linearly dependent on the previous terms. Please press the Remove Term button and try again.
Disallowing combinations script
// No run with A_CBC solver and Nested B_SCIP hyper-parameters
// No A_CBC AND B1 SCIP hyperparameters levels L1 and L2
X1: Solver == "A_CBC" & Nested B1_SCIP == "L1"
X1: Solver == "A_CBC" & Nested B1_SCIP == "L2"
// No A_CBC AND B2 SCIP hyperparameters levels L1, L2, L3 and L4
X1: Solver == "A_CBC" & Nested B2_SCIP == "L1"
X1: Solver == "A_CBC" & Nested B2_SCIP == "L2"
X1: Solver == "A_CBC" & Nested B2_SCIP == "L3"
X1: Solver == "A_CBC" & Nested B2_SCIP == "L4"
// No run with B_SCIP solver and Nested A_CBC hyper-parameters (the other solver)
// No B_SCIP AND A1 CBC hyperparameters levels L1, L2 and L3
X1: Solver == "B_SCIP" & Nested A1_CBC == "L1"
X1: Solver == "B_SCIP" & Nested A1_CBC == "L2"
X1: Solver == "B_SCIP" & Nested A1_CBC == "L3"
// No B_SCIP AND A2 CBC hyperparameters levels L1, L2 and L3
X1: Solver == "B_SCIP" & Nested A2_CBC == "L1"
X1: Solver == "B_SCIP" & Nested A2_CBC == "L2"
X1: Solver == "B_SCIP" & Nested A2_CBC == "L3"
// No run with Nested_A1_CBC and SCIP hyper-parameters
// No Nested A_1_CBC with Nested B1_SCIP
X4: Nested A1_CBC == "L1" & X6: Nested B1_SCIP == "L1" |
X4: Nested A1_CBC == "L1" & X6: Nested B1_SCIP == "L2" |
X4: Nested A1_CBC == "L2" & X6: Nested B1_SCIP == "L1" |
X4: Nested A1_CBC == "L2" & X6: Nested B1_SCIP == "L2" |
X4: Nested A1_CBC == "L3" & X6: Nested B1_SCIP == "L1" |
X4: Nested A1_CBC == "L3" & X6: Nested B1_SCIP == "L2" |
// No Nested A_2_CBC with Nested B1_SCIP
X4: Nested A2_CBC == "L1" & X6: Nested B1_SCIP == "L1" |
X4: Nested A2_CBC == "L1" & X6: Nested B1_SCIP == "L2" |
X4: Nested A2_CBC == "L2" & X6: Nested B1_SCIP == "L1" |
X4: Nested A2_CBC == "L2" & X6: Nested B1_SCIP == "L2" |
X4: Nested A2_CBC == "L3" & X6: Nested B1_SCIP == "L1" |
X4: Nested A2_CBC == "L3" & X6: Nested B1_SCIP == "L2" |
// No Nested A_1_CBC with Nested B2_SCIP
// Nested A1_CBC level 1
X4: Nested A1_CBC == "L1" & X6: Nested B2_SCIP == "L1" |
X4: Nested A1_CBC == "L1" & X6: Nested B2_SCIP == "L2" |
X4: Nested A1_CBC == "L1" & X6: Nested B2_SCIP == "L3" |
X4: Nested A1_CBC == "L1" & X6: Nested B2_SCIP == "L4" |
// Nested A1_CBC level 2
X4: Nested A1_CBC == "L2" & X6: Nested B2_SCIP == "L1" |
X4: Nested A1_CBC == "L2" & X6: Nested B2_SCIP == "L2" |
X4: Nested A1_CBC == "L2" & X6: Nested B2_SCIP == "L3" |
X4: Nested A1_CBC == "L2" & X6: Nested B2_SCIP == "L4" |
// Nested A1_CBC level 3
X4: Nested A1_CBC == "L3" & X6: Nested B2_SCIP == "L1" |
X4: Nested A1_CBC == "L3" & X6: Nested B2_SCIP == "L2" |
X4: Nested A1_CBC == "L3" & X6: Nested B2_SCIP == "L3" |
X4: Nested A1_CBC == "L3" & X6: Nested B2_SCIP == "L4" |