Is there a way to give (in R or Minitab or Statgraphics) a fractional factorial design like that and inspect the generators and the complete defining relation ($2^4 - 1$ relations)?
A B C D E F G H
-1 1 1 1 -1 -1 1 -1
-1 -1 -1 1 1 1 1 -1
-1 1 1 -1 1 1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1
-1 1 -1 -1 1 -1 1 1
-1 -1 1 -1 -1 1 1 1
-1 1 -1 1 -1 1 -1 1
-1 -1 1 1 1 -1 -1 1
1 1 -1 -1 -1 1 1 -1
1 -1 1 -1 1 -1 1 -1
1 1 -1 1 1 -1 -1 -1
1 -1 1 1 -1 1 -1 -1
1 1 1 1 1 1 1 1
1 -1 -1 1 -1 -1 1 1
1 1 1 -1 -1 -1 -1 1
1 -1 -1 -1 1 1 -1 1
EDIT
(This is not an answer. It's just a workaround)
df<- read.table(textConnection("
A B C D E F G H
-1 1 1 1 -1 -1 1 -1
-1 -1 -1 1 1 1 1 -1
-1 1 1 -1 1 1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1
-1 1 -1 -1 1 -1 1 1
-1 -1 1 -1 -1 1 1 1
-1 1 -1 1 -1 1 -1 1
-1 -1 1 1 1 -1 -1 1
1 1 -1 -1 -1 1 1 -1
1 -1 1 -1 1 -1 1 -1
1 1 -1 1 1 -1 -1 -1
1 -1 1 1 -1 1 -1 -1
1 1 1 1 1 1 1 1
1 -1 -1 1 -1 -1 1 1
1 1 1 -1 -1 -1 -1 1
1 -1 -1 -1 1 1 -1 1
")->con,header=T)
close(con)
ABCDEFGH gives a column of ones, so I=ABCDEFGH. We need the 14 remaining defining relations.
# start with four way interactions
four.way <- combn(c("A","B","C","D","E","F","G","H"),4)
res <- apply(four.way,2,function(x) {
apply(df[,x],1,prod)})
colnames(res) <- apply(four.way,2,paste,collapse="")
The res matrix has 70 columns of the products of the 4-combinations. Get the column names with a colSum of either 16 or -16 (they are defining relations)
def <- colnames(res[,colSums(res) == 16 | colSums(res) == -16])
[1] "ABCH" "ABDE" "ABFG" "ACDF" "ACEG" "ADGH" "AEFH" "BCDG" "BCEF" "BDFH" "BEGH" "CDEH" "CFGH" "DEFG"
So I got another 14 defining relations (including the generalized interactions). No need to look for other "words" since I already got 15.
The resolution is IV (min word length). It's easy to observe that the BGHA columns form the typical $2^4$ design (with opposite signs for B and G). Using the above defining relations you can get the generators: C=ABH, D=AGH, E=BGH and F=ABG.
To get the alias structure I did the following (I applied it only for the main effects and 2-way interactions, but you can get whatever you ask for)
# two way interactions
two.way <- apply(combn(c("A","B","C","D","E","F","G","H"),2),2,paste,collapse="")
test <- c("A","B","C","D","E","F","G","H",two.way)
gen <- c(def,"ABCDEFGH")
mat <- character(length(test)*(length(gen)+1))
dim(mat) <- c(length(test),length(gen)+1)
colnames(mat) <- c("Effect",paste("I=",gen,sep=""))
for (j in 1:length(test)){
mat[j,1] <- test[j]
for (i in 1:length(gen)) {
res <- paste(sort(c(unlist(strsplit(gen[i],"")),unlist(strsplit(test[j],"")))),collapse="")
le <- rle(unlist(strsplit(res,"")))$lengths
va <- rle(unlist(strsplit(res,"")))$values
mat[j,i+1] <- paste(sort(va[le %% 2 == 1]),collapse="")
}}
noquote(mat)
And here is the result
Effect I=ABCH I=ABDE I=ABFG I=ACDF I=ACEG I=ADGH I=AEFH I=BCDG I=BCEF I=BDFH I=BEGH I=CDEH I=CFGH I=DEFG I=ABCDEFGH
[1,] A BCH BDE BFG CDF CEG DGH EFH ABCDG ABCEF ABDFH ABEGH ACDEH ACFGH ADEFG BCDEFGH
[2,] B ACH ADE AFG ABCDF ABCEG ABDGH ABEFH CDG CEF DFH EGH BCDEH BCFGH BDEFG ACDEFGH
[3,] C ABH ABCDE ABCFG ADF AEG ACDGH ACEFH BDG BEF BCDFH BCEGH DEH FGH CDEFG ABDEFGH
[4,] D ABCDH ABE ABDFG ACF ACDEG AGH ADEFH BCG BCDEF BFH BDEGH CEH CDFGH EFG ABCEFGH
[5,] E ABCEH ABD ABEFG ACDEF ACG ADEGH AFH BCDEG BCF BDEFH BGH CDH CEFGH DFG ABCDFGH
[6,] F ABCFH ABDEF ABG ACD ACEFG ADFGH AEH BCDFG BCE BDH BEFGH CDEFH CGH DEG ABCDEGH
[7,] G ABCGH ABDEG ABF ACDFG ACE ADH AEFGH BCD BCEFG BDFGH BEH CDEGH CFH DEF ABCDEFH
[8,] H ABC ABDEH ABFGH ACDFH ACEGH ADG AEF BCDGH BCEFH BDF BEG CDE CFG DEFGH ABCDEFG
[9,] AB CH DE FG BCDF BCEG BDGH BEFH ACDG ACEF ADFH AEGH ABCDEH ABCFGH ABDEFG CDEFGH
[10,] AC BH BCDE BCFG DF EG CDGH CEFH ABDG ABEF ABCDFH ABCEGH ADEH AFGH ACDEFG BDEFGH
[11,] AD BCDH BE BDFG CF CDEG GH DEFH ABCG ABCDEF ABFH ABDEGH ACEH ACDFGH AEFG BCEFGH
[12,] AE BCEH BD BEFG CDEF CG DEGH FH ABCDEG ABCF ABDEFH ABGH ACDH ACEFGH ADFG BCDFGH
[13,] AF BCFH BDEF BG CD CEFG DFGH EH ABCDFG ABCE ABDH ABEFGH ACDEFH ACGH ADEG BCDEGH
[14,] AG BCGH BDEG BF CDFG CE DH EFGH ABCD ABCEFG ABDFGH ABEH ACDEGH ACFH ADEF BCDEFH
[15,] AH BC BDEH BFGH CDFH CEGH DG EF ABCDGH ABCEFH ABDF ABEG ACDE ACFG ADEFGH BCDEFG
[16,] BC AH ACDE ACFG ABDF ABEG ABCDGH ABCEFH DG EF CDFH CEGH BDEH BFGH BCDEFG ADEFGH
[17,] BD ACDH AE ADFG ABCF ABCDEG ABGH ABDEFH CG CDEF FH DEGH BCEH BCDFGH BEFG ACEFGH
[18,] BE ACEH AD AEFG ABCDEF ABCG ABDEGH ABFH CDEG CF DEFH GH BCDH BCEFGH BDFG ACDFGH
[19,] BF ACFH ADEF AG ABCD ABCEFG ABDFGH ABEH CDFG CE DH EFGH BCDEFH BCGH BDEG ACDEGH
[20,] BG ACGH ADEG AF ABCDFG ABCE ABDH ABEFGH CD CEFG DFGH EH BCDEGH BCFH BDEF ACDEFH
[21,] BH AC ADEH AFGH ABCDFH ABCEGH ABDG ABEF CDGH CEFH DF EG BCDE BCFG BDEFGH ACDEFG
[22,] CD ABDH ABCE ABCDFG AF ADEG ACGH ACDEFH BG BDEF BCFH BCDEGH EH DFGH CEFG ABEFGH
[23,] CE ABEH ABCD ABCEFG ADEF AG ACDEGH ACFH BDEG BF BCDEFH BCGH DH EFGH CDFG ABDFGH
[24,] CF ABFH ABCDEF ABCG AD AEFG ACDFGH ACEH BDFG BE BCDH BCEFGH DEFH GH CDEG ABDEGH
[25,] CG ABGH ABCDEG ABCF ADFG AE ACDH ACEFGH BD BEFG BCDFGH BCEH DEGH FH CDEF ABDEFH
[26,] CH AB ABCDEH ABCFGH ADFH AEGH ACDG ACEF BDGH BEFH BCDF BCEG DE FG CDEFGH ABDEFG
[27,] DE ABCDEH AB ABDEFG ACEF ACDG AEGH ADFH BCEG BCDF BEFH BDGH CH CDEFGH FG ABCFGH
[28,] DF ABCDFH ABEF ABDG AC ACDEFG AFGH ADEH BCFG BCDE BH BDEFGH CEFH CDGH EG ABCEGH
[29,] DG ABCDGH ABEG ABDF ACFG ACDE AH ADEFGH BC BCDEFG BFGH BDEH CEGH CDFH EF ABCEFH
[30,] DH ABCD ABEH ABDFGH ACFH ACDEGH AG ADEF BCGH BCDEFH BF BDEG CE CDFG EFGH ABCEFG
[31,] EF ABCEFH ABDF ABEG ACDE ACFG ADEFGH AH BCDEFG BC BDEH BFGH CDFH CEGH DG ABCDGH
[32,] EG ABCEGH ABDG ABEF ACDEFG AC ADEH AFGH BCDE BCFG BDEFGH BH CDGH CEFH DF ABCDFH
[33,] EH ABCE ABDH ABEFGH ACDEFH ACGH ADEG AF BCDEGH BCFH BDEF BG CD CEFG DFGH ABCDFG
[34,] FG ABCFGH ABDEFG AB ACDG ACEF ADFH AEGH BCDF BCEG BDGH BEFH CDEFGH CH DE ABCDEH
[35,] FH ABCF ABDEFH ABGH ACDH ACEFGH ADFG AE BCDFGH BCEH BD BEFG CDEF CG DEGH ABCDEG
[36,] GH ABCG ABDEGH ABFH ACDFGH ACEH AD AEFG BCDH BCEFGH BDFG BE CDEG CF DEFH ABCDEF
desnum
,design.info
, etc.). Rcmdr is becoming very nice, I should try it at some point. $\endgroup$