SAS provides a catalog of over 117,000 orthogonal arrays.
Orthogonal arrays are frequently used as plans for conducting
experiments. This site provides:
• a library of
strength-two (main-effects only) orthogonal arrays,
• lists and other
information about orthogonal arrays,
•
a library of difference schemes,
• tools for orthogonal
array and efficient factorial design generation.
Every orthogonal array listed in
Orthogonal Arrays (Hedayat, Sloane, and Stufken, 1999)
(
http://www.research.att.com/~njas/doc/OA.html) can be found
here
along with many arrays that were not known in 1999 and many other larger
arrays as well.
Thanks to Don Anderson, Warwick DeLauney,
Nam-Ky Nguyen, Shanqi Pang, Neil Sloane,
Chung-yi Suen, Randy Tobias, J.C. Wang, and
Yingshan Zhang who have all kindly helped with some of the
arrays and difference schemes in this catalog. Please direct all
questions about this site to
Warren F. Kuhfeld.
Orthogonal array research is an active area today, and new arrays are
being discovered all of the time. Also, there are some larger arrays
that are known to exist, but are not included here. Most of the larger
arrays are based on difference schemes, and there
are a few that are currently not in the software.
The orthogonal array construction
code,
with hundreds of methods implemented, is freely available on the web.
Please contact me if you can help fill in any arrays that are not on
this site or provide more elegant construction methods. This resource
cannot continue to grow without your help.
Click here to send me an email.
Click here to see a library of orthogonal arrays. This flat file
contains virtually all known strength-two orthogonal array parents
(except full-factorial designs) up to 143 runs and a few of the known
parents in 144 runs. These arrays can be used to construct a wide
variety of other arrays using the methods described with the orthogonal array
lists.
Note however that the SAS
MktEx macro can automatically
create these and many more orthogonal arrays.
Click here to see lists of orthogonal arrays. This PDF file has a
list of virtually all known strength-two orthogonal arrays up through
143 runs, a list of parent orthogonal arrays (including virtually all
known parent orthogonal arrays up through 143 runs and a reasonably
comprehensive set of parent orthogonal arrays for 144 through 513 runs),
and a reference list.
Neil Sloane's orthogonal array site (
http://www.research.att.com/~njas/oadir/) provides many strength-two
orthogonal arrays including some arrays that are alternatives to the
ones shown here. This site also contains arrays of strength greater
than two, assorted Hadamard constructions, many other useful designs not
covered here, and information about the 1999 book Orthogonal
Arrays by Hedayat, Sloane, and Stufken.
Nam-Ky Nguyen's site
(http://designcomputing.net/gendex/noa/)
provides many near-orthogonal arrays made with his NOA tool.
SAS provides a set of free macros for making orthogonal arrays and
D-efficient nonorthogonal designs. They are documented in the free book
Marketing Research Methods in SAS. While the book
features marketing research examples, these macros have been widely
used to make factorial designs for many other application areas.
• Click
here for the general book and macro site.
• Click here for
a direct link to the macro documentation.
• Click here for
a direct link to the macros.
• Click here for
a direct link to the full 1309-page book.
The MktEx macro (pronounced "Mark Tex") generates factorial experimental
designs. The "Mkt" or "market" part of the name comes from the fact
that it was originally designed with marketing researchers in mind.
MktEx is just one in a series of Mkt macros. Some would only be used by
marketing researchers and others doing choice modeling. Others, like
MktEx, MktBIBD (balanced incomplete block design), MktBSize (balanced
incomplete block design sizes), MktBal (balanced designs), MktOrth
(orthogonal array catalog), and MktRuns (suggest number of runs),
MktBlock (block a design), MktEval (evaluate a design), MktDups (check
for duplicate runs), and MktLab (reassign levels and names), are of
interest to a much larger audience. Marketing researchers have
extremely interesting design requirements. They often need designs that
are larger and more complicated than is typically required in other
sciences. However, researchers in many other areas use MktEx every day
to make designs for a variety of purposes. MktEx was developed for
everyone who wants to make efficient designs, not just marketing
researchers. This full-featured macro can easily handle simple problems
like main-effects designs and more complicated problems including
designs with interactions and designs with restrictions on which levels
can appear together. Over 117,000 orthogonal arrays are available in
its catalog. Efficient nonorthogonal designs are quickly and easily
found. Here are some of the MktEx and other design macro capabilities:
| • easy to use |
• Hadamard matrices |
• balanced designs |
| • efficient designs |
• Taguchi designs |
• any number of factors |
| • orthogonal arrays |
• main effects |
• up to 144-level factors |
| • nonorthogonal designs |
• interactions |
• any mix of levels |
| • nearly orthogonal designs |
• blocking factors |
• level restrictions |
| • full-factorial designs |
• design diagnostics |
• general restrictions |
| • fractional-factorial designs |
• design evaluations |
• ensure no duplicate profiles |
| • tabled designs |
• automatic randomization |
• partial profiles |
MktEx and the other macros are documented
here,
they are free from
here, and the entire book is available from
here.
The MktEx macro is free, however it requires the following SAS products
in order to run: BASE, SAS/STAT, SAS/QC, and SAS/IML.
In this example, MktEx produces an orthogonal array with 1 two-level
factor and 6 three-level factors in 18 runs:
%mktex( 2 3 ** 6, n=18 )
This next example requests a nearly orthogonal design with 15
three-level factors in 36 runs. MktEx uses a combination of an
orthogonal array and a computerized search algorithm to find an
efficient design.
%mktex( 3 ** 15, n=36, seed=17 )
This next example illustrates finding a design with restrictions and
interactions. You can write a SAS macro that prevents certain level
combinations from occuring together or defines any type of restriction
that you want. MktEx can find designs with very complicated sets of
restrictions. Here is an example with a simple set of restrictions.
%macro resmac;
avail = (x1 < 4) + (x2 < 4) + (x5 < 3) + (x6 < 3) + (x8 < 3);
if (avail < 2) | (avail > 4) then bad = abs(avail - 3);
else bad = 0;
%mend;
%mktex( 4 4 2 2 3 3 2 3, n=36, interact=x2*x3 x2*x4 x3*x4 x6*x7,
restrictions=resmac, seed=104)
The user defines a badness function for MktEx to minimize. More details
on this example are available starting on page 431 of
Marketing Research Methods in SAS.
Hadamard matrices are binary matrices, usually consisting of (1, -1) or
(0, 1). Hadamard matrices are useful for making orthogonal arrays with
two-level factors. MktEx can make Hadamard
matrices for all of the following sizes up to 1000:
2  4  8  12 
16  20  24  28  32 
36  40  44  48  52 
56  60  64  68  72 
76  80  84  88  92 
96  100  104  108  112  116  120 
124  128  132  136  140  144  148  152 
156  160  164  168  172  176  180  184 
188  192  196  200  204  208  212  216 
220  224  228  232  236  240  244  248 
252  256  260  264  268  272  276  280 
284  288  292  296  300  304  308  312 
316  320  324  328  332  336  340  344 
348  352  356  360  364  368  372  376 
380  384  388  392  396  400  404  408 
412  416  420  424  428  432  436  440 
444  448  456  460  464 
468  472  480  484  488 
492  496  500  504  512 
516  520  524  528  536 
540  544  548  552  556  560  564  568 
572  576  580  584  588  592  596  600 
604  608  612  616  620  624  628  632 
636  640  644  648  656 
660  664  ---  672  676  680  684  688 
692  696  700  704  708  712  ---  720 
724  728  732  736  740  744  748  752 
756  760  ---  768  776 
780  784  788  792  796  800  804  808 
812  816  820  824  828  832 
840  844  848 
856  860  864  868  872 
880  884  888  ---  896 
900  908  912  916  920 
924  928    936 
944  948 
---  960  968  972  976 
984  992 
1000
It
can make a number of larger Hadamard matrices as well. Every size up
to 448 is in the list, with good but not complete coverage beyond that.
The MktEx macro can construct these matrices when
n is a multiple
of 4 and one or more of the following hold:
n ≤ 448 or n =
580, 596, 604, 612, 724, 732, 756, or 1060,
n - 1 is prime,
n / 2 - 1 is prime power and mod(n
/ 2, 4) = 2,
n is a power of 2 (2, 4,
8, 16, ...) times the size of a smaller Hadamard matrix that is
available.
Entries of "---" indicate sizes where there is currently no known
construction method. Help in making the remaining Hadamard matrices
would be welcome. The seed vectors for Williamson and other
constructions can be found in MktEx.
Other sources of Hadamard matrices on the web include Man Nguyen's site
(
http://www.mathdox.com/nguyen/hadamard.html)
and the extensive site maintained by V.K. Gupta, A. Dhandapani, and
Rajender Parsad
(
http://www.iasri.res.in/webhadamard/webhadamard.htm).
Click here to see a library of difference schemes and generalized Hadamard
matrices. Difference schemes provide the building blocks from which
many orthogonal arrays are constructed. Let
D(λs, c, s) denote a difference
scheme with λs rows and c columns with entries 0, 1,
..., s - 1. When c = λs, the difference
scheme is square, and D(λs, λs, s) is
called a generalized Hadamard matrix. MktEx can make the following
difference schemes and generalized Hadamard matrices:
D(3,3,3)
D(6,6,3)
D(9,9,3)
D(12,12,3)
D(15,9,3)
D(18,18,3)
D(21,12,3)
D(24,24,3)
D(27,27,3)
D(30,30,3)
D(33,13,3)
D(36,36,3)
D(39,13,3)
D(42,21,3)
D(45,27,3)
D(48,48,3)
D(51,24,3)
D(54,54,3)
D(57,27,3)
D(60,30,3)
D(63,36,3)
D(66,30,3)
D(69,24,3)
D(72,72,3)
D(75,27,3)
D(78,30,3)
D(81,81,3)
D(84,42,3)
D(87,27,3)
D(90,90,3)
D(93,30,3)
D(96,96,3)
D(99,39,3)
D(102,48,3)
D(105,29,3)
D(108,108,3)
D(111,36,3)
D(114,30,3)
D(117,39,3)
D(120,48,3)
D(123,30,3)
D(126,72,3)
D(129,48,3)
D(132,132,3)
D(135,81,3)
D(138,48,3)
D(141,30,3)
D(144,144,3)
D(147,42,3)
D(150,150,3)
D(153,72,3)
D(156,48,3)
D(159,36,3)
D(162,162,3)
D(165,42,3)
D(168,84,3)
D(171,81,3)
D(4,4,4)
D(8,8,4)
D(12,12,4)
D(16,16,4)
D(20,10,4)
D(24,20,4)
D(28,12,4)
D(32,32,4)
D(36,36,4)
D(40,16,4)
D(44,12,4)
D(48,48,4)
D(52,16,4)
D(56,56,4)
D(60,20,4)
D(64,64,4)
D(68,32,4)
D(72,36,4)
D(76,16,4)
D(80,40,4)
D(84,36,4)
D(88,32,4)
D(92,36,4)
D(96,96,4)
D(100,36,4)
D(104,48,4)
D(108,108,4)
D(112,56,4)
D(116,36,4)
D(120,56,4)
D(124,20,4)
D(128,128,4)
D(5,5,5)
D(10,10,5)
D(15,8,5)
D(20,20,5)
D(25,25,5)
D(30,11,5)
D(35,10,5)
D(40,20,5)
D(45,20,5)
D(50,50,5)
D(55,11,5)
D(60,20,5)
D(65,20,5)
D(70,20,5)
D(75,40,5)
D(80,80,5)
D(85,20,5)
D(90,90,5)
D(95,20,5)
D(100,100,5)
D(6,2,6)
D(12,6,6)
D(18,2,6)
D(24,6,6)
D(30,2,6)
D(36,7,6)
D(42,2,6)
D(48,10,6)
D(54,2,6)
D(60,8,6)
D(66,2,6)
D(72,12,6)
D(78,2,6)
D(84,8,6)
D(7,7,7)
D(14,14,7)
D(21,9,7)
D(28,28,7)
D(35,9,7)
D(42,18,7)
D(49,49,7)
D(56,28,7)
D(63,14,7)
D(70,18,7)
D(8,8,8)
D(16,16,8)
D(24,8,8)
D(32,32,8)
D(40,10,8)
D(48,16,8)
D(56,56,8)
D(64,64,8)
D(9,9,9)
D(18,18,9)
D(27,27,9)
D(36,36,9)
D(45,18,9)
D(54,54,9)
D(10,2,10)
D(20,5,10)
D(30,2,10)
D(40,6,10)
D(50,2,10)
D(11,11,11)
D(22,22,11)
D(33,11,11)
D(44,44,11)
D(12,6,12)
D(24,6,12)
D(36,6,12)
D(13,13,13)
D(26,26,13)
D(14,2,14)
D(28,5,14)
D(15,5,15)
D(30,5,15)
D(16,16,16)
D(32,32,16)
D(17,17,17)
D(18,2,18)
D(19,19,19)
D(20,4,20)
D(21,6,21)
D(22,2,22)
There are a few larger arrays that should be included in
MktEx for completeness, but they rely on obscure difference schemes.
MktEx still needs the following difference schemes:
D(60,36,3)
D(102,51,3)
D(60,21,4)
D(112,64,4)
D(30,15,5)
D(35,17,5)
D(40,25,5)
D(55,17,5)
D(60,25,5)
D(65,25,5)
D(85,35,5)
D(60,11,6)
D(84,16,6)
D(35,11,7)
D(63,28,7)
D(40,8,10)
D(30,7,15)
If you can help with any of these or any other difference scheme that
is not in the list above, please contact me.
Click here to send me an email.
Your contribution will be acknowledged on this site and in the next
edition of the Marketing Research book. All orthogonal arrays and
difference schemes contributed to this site may be freely used.
Before contributing, please ensure that your contribution has no
restrictions on such use.