Automated calculation of a fractional factorial design with 9 factors In my research I want to employ a choice experiment using factorial design.   However, I struggle to derive a fractional design from the full factorial design.
There are 9 factors on 2 levels, which would yield 132 runs - way too much!  I am looking at no more than 16 choice sets.  How to get a Fractional Factorial design of desired size?
 A: With your restrictions, denote the factors by $a,b,c,d,e,f,g,h,i$ that is 9 two-level factors.  A full factorial will have $2^9=512$ runs.  To get down to $16=2^4$ runs we need a fractional factorial $2^{9-5}$-design. For that we have to introduce 5 restrictions, halving the design 5 times. There are many ways to do this, one is by introducing the words (aliases)
$$
ab=c \\
cd=e \\
ef=g \\
gh=i \\
ag=e
$$
Is this a good design?  You can try to evaluate that by calculating the aliases  of all two-letter words, and check that no one-letter words are aliased (with another one-letter word).  You cannot really ask for much more. 
Another approach is to get some computer help for making the fractional factorial design.  In R there are several packages which can be used, you can look at https://cran.r-project.org/web/views/ExperimentalDesign.html  for an overview.  Below I will illustrate the use of the package FrF2:
library(FrF2)  ### on CRAN
 FrF2(nfactors=9, resolution=3)
    A  B  C  D  E  F  G  H  J
1   1  1  1  1  1  1  1  1  1
2  -1 -1 -1 -1  1  1  1 -1  1
3  -1  1 -1  1 -1  1 -1 -1  1
4   1  1 -1  1  1 -1  1 -1 -1
5   1  1 -1 -1  1 -1 -1  1  1
6  -1 -1  1  1  1 -1 -1 -1  1
7  -1  1  1 -1 -1 -1  1 -1  1
8  -1  1  1  1 -1 -1 -1  1 -1
9  -1  1 -1 -1 -1  1  1  1 -1
10  1  1  1 -1  1  1 -1 -1 -1
11  1 -1 -1  1 -1 -1  1  1  1
12  1 -1  1  1 -1  1  1 -1 -1
13  1 -1 -1 -1 -1 -1 -1 -1 -1
14  1 -1  1 -1 -1  1 -1  1  1
15 -1 -1 -1  1  1  1 -1  1 -1
16 -1 -1  1 -1  1 -1  1  1 -1
class=design, type= FrF2 

This gives a resolution III design with 16 runs.  Resolution III means that main effects are confounded with twofactor interactions, so are mostly useful only for estimating main effects.  There is a lot of other options to this function, read its help page!
