I am new to designing experiments. I like the simplicity of 2-level, fractional factorial designs for screening what factors and interactions are important. However, I often conduct competitive analysis where there are three or more products to evaluate. All of the other factors can be made 2-level. What's the best way to structure an experiment in this case and why?

One thought is I could run 2-level fractional factorial experiments for each product, but this seems inefficient.

I also saw a reference on the nist site to running three-level designs from using two, two-level factors:


  • $\begingroup$ One idea is to use computer-generated optimal design. R has multiple packages helping with this, see CRAN.R-project.org/view=ExperimentalDesign $\endgroup$ – kjetil b halvorsen Nov 30 '17 at 12:20
  • 1
    $\begingroup$ Ok, I'll read through the packages and see if I can find one relevant to what I'm doing. Are there any you recommend? $\endgroup$ – mataleo99 Dec 4 '17 at 3:18

You can use the approach from the link you gave, or you can use some method for algorithmic design. One approach using the R package planor (on CRAN) is given in Fractional Factorial design for 3 factorial, here I will exemplify use of the R package AlgDesign (on CRAN). AlgDesign also have some functions for evaluating given designs, you can use them with a design made "by hand", to compare with the algorithmically generated designs. You say you have one product factor with three (or more) levels, the other variables are numerical variables with two levels each. I will ask for a half fraction:


Cand  <-  gen.factorial( levels=c(3, rep(2, 6)),

ex2Des  <-  optFederov( ~ (X1+X2+X3+X4+X5+X6+X7)^2,
                       nTrials = 3*2^5 ,  # A half fraction

eval.design(~ (X1+X2+X3+X4+X5+X6+X7)^2,
               [,1]    [,2]    [,3]    [,4]    [,5]    [,6]    [,7]    [,8]
(Intercept) -1.0000  0.4340  0.4359  0.0390  0.0225 -0.0898 -0.1459  0.0208
X12          0.9853 -1.0000 -0.4193 -0.0349 -0.0183  0.0886  0.1392 -0.0070
X6:X7        0.0367  0.0431 -0.0307 -1.0000

[1] 0.5076138

[1] 3.380504

[1] 0.821

[1] 2.534994

The above gives an unblocked design. With so many observations it could be an advantage to use a blocked design, code given below:

ex2BlockDes  <-  optBlock( ~ (X1+X2+X3+X4+X5+X6+X7)^2,
                          blocksizes=rep(12, 8),

eval.blockdesign(  ~ (X1+X2+X3+X4+X5+X6+X7)^2,
                 blocksizes=rep(12, 8),

(output not given here). AlgDesign is a very flexible package, and before using it you will want to read its vignette:


Note that you should try other criteria than "D", especially for the blocked design.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.