1

Suppose we have following three factors:

Factor A: 5 possible values
Factor B: 4 possible values
Factor C: 2 possible values

How can I construct an Orthogonal array for these?

Main thing which I don't understand is making the combinations. I remember we used to follow '11112222', '11221122', '12121212' this kinda combinations, but it seems everyone has different approach for filling the values in array. Is there any standard approach?

user3170565
  • 59
  • 1
  • 10

2 Answers2

4

There isn't a single neat algorithm that generates orthogonal arrays to order. Instead there are a variety of constructions that have been discovered in a host of different areas of mathematics, and some techniques for modifying orthogonal arrays to change their parameters in some way or another. For instance see http://www.itl.nist.gov/div898/handbook/pri/section3/pri33a.htm and http://www.win.tue.nl/~aeb/preprints/oa3.pdf. Many statistics packages have an orthogonal array design utility which uses these rules and a list of known orthogonal arrays to try and find an orthogonal array that will satisfy the requirements it has been given.

In your case I can find nothing closer at the moment than the six five-level factors design at http://www.york.ac.uk/depts/maths/tables/l25.htm using 25 runs. You can certainly discard three columns. Where you have e.g. five levels in the design and only 4 (or 2) levels in the experiment I would be inclined to consistently relabel e.g. {1,2,3,4,5} -> {1,2,3,4,4} and {1,2,3,4,5} => {1,2,1,2,1} but I have no clear idea of what this does to the experimental properties.

mcdowella
  • 19,301
  • 2
  • 19
  • 25
  • Thanks for your reply!! I already had the first 2 links you shared, but I was wondering if there is any standard algorithm to design Orthogonal array. I guess I have to figure out one for myself. – user3170565 Jun 23 '16 at 05:13
3

The computing of orthogonal arrays can be computationally expensive, so designs are generally made available in the form of a library.

The R package DOE.base has a oa.design() function that retrieves a design with a given number of factors and factor levels. For example, to retrieve a design with 3 factors and levels of 3, 4 and 5, use these commands.

library(DOE.base)
oa.design(nlevels=c(3,4,5))

In this case, the returned design is a full factorial with 60 runs. This still is an orthogonal array, but a much more expensive experiment than the alternatives with equal factor levels.

To obtain an orthogonal array 3 factors with 5 levels each, use:

oa.design(nlevels=c(5,5,5))

   A B C
1  1 5 4
2  2 1 5
3  3 4 5
4  3 5 2
5  5 2 4
6  3 3 3
7  5 5 5
8  5 4 3
9  2 5 3
10 5 1 2
11 4 1 3
12 5 3 1
13 4 4 4
14 1 1 1
15 1 2 3
16 3 2 1
17 2 3 4
18 4 3 2
19 4 5 1
20 3 1 4
21 1 3 5
22 1 4 2
23 4 2 5
24 2 2 2
25 2 4 1

The entering 3 factors with 4 levels each returns an orthogonal array of 16 runs and entering 3 factors of 3 levels returns an orthogonal array of 9 runs.

Alternatively, the Python package OApackage is available in PyPi (https://pypi.org/project/OApackage/).

For more information, see:

  • 1
    Please provide all relevant information in your answer (so that it is self contained). Links may change or be unreachable in the future and thus invalidating your answer. – Pinkie Swirl Aug 16 '18 at 00:51