组合帮助算法创建增强因子设计
Combination help on algorithm to create augmented factorial design
我正在尝试创建一种算法,该算法将创建在 2^k 析因设计中添加两次运行的所有可能组合。我见过许多组合示例,但其中 none 确实解决了这个特定问题。该算法的结果应该是一个由 k 列和 (2^k 选择 1) + (2^k 选择 2) + 1 行数组成的矩阵,以给出正确的 2 组合数。所以对于 2^2 设计,我们将有 2 列和 11 行 (4 + 6 + 1) 我在下面设计了这个矩阵只是为了展示它应该是什么样子。每对行 (1,2) (2,3) (3,4) 等应该是不同的(我知道现在不是)。这不需要非常高效或使用特定语言,但更喜欢 R,我只需要弄清楚可以使用哪种方法来做到这一点
Run A B
1 -1 -1
2 -1 -1
3 1 -1
4 1 -1
5 -1 1
6 -1 1
7 1 1
8 1 1
9 -1 -1
10 -1 1
11 1 1
因此,在尝试以最有效的方式执行此操作(仅比组合总数多一行)但失败后。我决定采用一种方法来生成所有组合,其中行 (1&2)、(3&4) 等是两种不同的组合。如果有人感兴趣,这里是 R 中的代码
numFactors <- 2
org <- gen.factorial(2,numFactors)
orgRow <- nrow(org)
x <- c(seq(1,orgRow))
z <- (x*2)
numARow <- sum(z) ##Double the total combinations
aug <- matrix(data = NA, nrow = numARow, ncol = numFactors)
j <- 1
k <- 1
output <- list()
for (i in 1:(numARow/2)) { ##This wil create all possible 2 combinations in the style of 1&2,3&4...
l <- (2*i) - 1 ## 1, 3, 5 ....
first <- org[j,]
if (k != j) {
second <- org[k,]
k <- k +1
}
if (k == j) {
second <- org[k,]
k <- k +1
}
output[[i]] <- rbind(first,second)
if (k == (orgRow+1)) {
j <- j + 1
k <- j
}
}
我正在尝试创建一种算法,该算法将创建在 2^k 析因设计中添加两次运行的所有可能组合。我见过许多组合示例,但其中 none 确实解决了这个特定问题。该算法的结果应该是一个由 k 列和 (2^k 选择 1) + (2^k 选择 2) + 1 行数组成的矩阵,以给出正确的 2 组合数。所以对于 2^2 设计,我们将有 2 列和 11 行 (4 + 6 + 1) 我在下面设计了这个矩阵只是为了展示它应该是什么样子。每对行 (1,2) (2,3) (3,4) 等应该是不同的(我知道现在不是)。这不需要非常高效或使用特定语言,但更喜欢 R,我只需要弄清楚可以使用哪种方法来做到这一点
Run A B
1 -1 -1
2 -1 -1
3 1 -1
4 1 -1
5 -1 1
6 -1 1
7 1 1
8 1 1
9 -1 -1
10 -1 1
11 1 1
因此,在尝试以最有效的方式执行此操作(仅比组合总数多一行)但失败后。我决定采用一种方法来生成所有组合,其中行 (1&2)、(3&4) 等是两种不同的组合。如果有人感兴趣,这里是 R 中的代码
numFactors <- 2
org <- gen.factorial(2,numFactors)
orgRow <- nrow(org)
x <- c(seq(1,orgRow))
z <- (x*2)
numARow <- sum(z) ##Double the total combinations
aug <- matrix(data = NA, nrow = numARow, ncol = numFactors)
j <- 1
k <- 1
output <- list()
for (i in 1:(numARow/2)) { ##This wil create all possible 2 combinations in the style of 1&2,3&4...
l <- (2*i) - 1 ## 1, 3, 5 ....
first <- org[j,]
if (k != j) {
second <- org[k,]
k <- k +1
}
if (k == j) {
second <- org[k,]
k <- k +1
}
output[[i]] <- rbind(first,second)
if (k == (orgRow+1)) {
j <- j + 1
k <- j
}
}