2016-06-09 4 views
0

Ich versuche einen Algorithmus zu erstellen, der alle möglichen Kombinationen von zwei Läufen in einem 2^k-faktoriellen Design erstellt. Ich habe viele Beispiele für Kombinationen gesehen, aber keine von ihnen spricht dieses spezifische Problem an. Das Ergebnis dieses Algorithmus sollte eine Matrix aus k Spaltenanzahl sein und (2^k wähle 1) + (2^k wähle 2) + 1 Anzahl von Zeilen, um die korrekte Anzahl von 2 Kombinationen zu erhalten. Für ein 2^2 Design werden wir 2 Spalten und 11 Zeilen (4 + 6 + 1) haben. Ich habe diese Matrix entworfen, um zu zeigen, wie sie aussehen sollte. Wo jedes Paar von Zeilen (1,2) (2,3) (3,4) usw. unterschiedlich sein soll (ich weiß, dass es nicht gerade ist). Das muss nicht sehr effizient oder in einer bestimmten Sprache, sondern würde R vorziehen, muß ich nur noch herausfinden, welche Art von Ansatz verwendet werden kann, um dieseKombinationshilfe für Algorithmus zum Erstellen eines erweiterten faktoriellen Entwurfs

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 
+0

Warum sind Zeilen 1 und 2 getrennt? Wäre es nicht einfacher/klarer, wenn jede Reihe vier Spalten hätte? – David

+0

Danke für Ihren Vorschlag David. Wenn jede Reihe vier Spalten hätte, würde die Tabelle eine vierfaktorielle Fakultät (A, B, C, D) darstellen. Wenn es jedoch möglich ist, sicherzustellen, dass die Elemente in diesen vier Spalten in allen Zeilen unterschiedlich sind, könnte ich einfach einige Matrixoperationen durchführen, um sie in das richtige Format zu bringen. – JoseBatAbi

+0

In Ihrem Beispiel sind die Zeilen 6 und 7 identisch mit den Zeilen 10 und 11. –

Antwort

0

So zu tun, nach dem Versuch, dies in den meisten zu tun effektive Möglichkeiten (nur eine Zeile mehr als die Gesamtzahl der Kombinationen) und scheitern. Ich entschied mich, mit einem Ansatz zu gehen, der alle Kombinationen in dem Format erzeugt, in dem Zeilen (1 & 2), (3 & 4) usw. zwei verschiedene Kombinationen sind. Hier ist der Code in R wenn jemand interessiert ist

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 
     } 
}