如何创建正交数组?

How to create Orthogonal array?

假设我们有以下三个因素:

因素 A:5 个可能值
因素 B:4 个可能的值
因素 C:2 个可能的值

如何为这些构造一个 Orthogonal array

我不明白的主要是组合。我记得我们过去常常遵循'11112222','11221122','12121212'这种组合,但似乎每个人都有不同的方法来填充数组中的值。 有什么标准方法吗?

没有一种简洁的算法可以生成要排序的正交数组。相反,在许多不同的数学领域中发现了多种结构,以及一些修改正交数组以某种方式改变其参数的技术。例如参见 [​​=10=]。许多统计数据包都有正交数组设计实用程序,它使用这些规则和已知正交数组的列表来尝试找到满足给定要求的正交数组。

就您的情况而言,目前我找不到比在 http://www.york.ac.uk/depts/maths/tables/l25.htm 使用 25 次运行的六个五水平因子设计更接近的东西。您当然可以丢弃三列。你在哪里设计中的五个级别和实验中只有 4 个(或 2 个)级别我倾向于始终如一地重新标记,例如{1,2,3,4,5} -> {1,2,3,4,4} 和 {1,2,3,4,5} => {1,2,1,2,1} 但我不清楚这对实验性质有何影响。

正交数组的计算在计算上可能很昂贵,因此设计通常以库的形式提供。

R 包 DOE.base 有一个 oa.design() 函数,可以检索具有给定数量的因子和因子水平的设计。例如,要检索具有 3 个因子和水平 3、4 和 5 的设计,请使用这些命令。

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

在这种情况下,返回的设计是具有 60 次游程的全因子。这仍然是一个正交数组,但比具有相同因子水平的替代方案要昂贵得多。

要获得一个正交数组 3 个因子,每个因子有 5 个水平,请使用:

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

输入 3 个因子,每个因子有 4 个水平 returns 一个 16 次游程的正交数组,并输入 3 个 3 个水平的因子 returns 一个 9 个游程的正交数组。

或者,Python 包 OApackage 在 PyPi (https://pypi.org/project/OApackage/) 中可用。

有关详细信息,请参阅: