实践中,对于多因素的试验设计,以往多是采用正交设计。最近,有人咨询我,两个因素4个水平的正交设计是怎样的?
我运行了DoE.base包里的oa.design(),结果令人诧异,结果如下:
// oa design
> oa.design(nfactors=2,nlevels=4)
creating full factorial with 16 runs ...
A B
1 1 4
2 3 3
3 4 4
4 2 4
5 1 3
6 4 1
7 3 2
8 4 3
9 3 1
10 2 1
11 1 1
12 3 4
13 4 2
14 2 3
15 2 2
16 1 2
class=design, type= full factorial
oa.design给出了全因子设计。而对于3因素3水平,oa.design可以给出正常的正交设计:
// An highlighted block
> oa.design(nfactors=3,nlevels=3)
A B C
1 1 1 1
2 3 2 1
3 1 3 2
4 2 1 3
5 3 3 3
6 2 2 2
7 1 2 3
8 2 3 1
9 3 1 2
class=design, type= oa
于是乎,oa.design无法用于双因素的正交设计。那么,只能往均匀设计试试。恰好,UniDOE包可以实现。示例如下:
// An highlighted block
n=8 #(must be multiples of q)
s=2
q=4
crit = "MD2"#(Mixture L2 criteria)
res = GenUD(n,s,q,crit=crit,maxiter=100)
> res$final_design
[,1] [,2]
[1,] 1 3
[2,] 3 2
[3,] 4 1
[4,] 1 2
[5,] 4 4
[6,] 3 3
[7,] 2 1
[8,] 2 4
其中,n是试验次数(必须是因子水平数的倍数);s是因子数;q是因子水平数;crit是生成设计的方法。
但该包的均匀设计,存在一个问题,所有因子的水平数需要一样。而oa.design并未有此限定。