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$ Commented Nov 30, 2017 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
    Commented Dec 4, 2017 at 3:18

1 Answer 1


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.

  • $\begingroup$ how do you come up with nTrials = 3*2^5 ? $\endgroup$
    – Ben
    Commented Nov 18, 2022 at 14:47
  • 1
    $\begingroup$ @Ben: Look at the definition (in code) of Cand, it a full factorial $3\cdot 2^6$, which needs 192 observations (check NROW(Cand) ). nTrials = 3*2^5 then defines a half-fraction, as explained in the code $\endgroup$ Commented Nov 18, 2022 at 17:07
  • $\begingroup$ alright, thank you! $\endgroup$
    – Ben
    Commented Nov 21, 2022 at 7:23
  • $\begingroup$ When there was one factor with three levels and two with two levels, how would I calculate the trials then? $\endgroup$
    – Ben
    Commented Nov 21, 2022 at 7:28
  • 1
    $\begingroup$ @Ben: For a start, see my answer at stats.stackexchange.com/questions/596056/… $\endgroup$ Commented Nov 24, 2022 at 23:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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