1 Two blocks

a. Effect confounded with block

Confound the three-factor interaction ABC with blocks, assuming that this higher-order interaction is less important than the main effects and two-factor interactions.

b. Assignment of treatments

Assign treatments according to the sign of ABC.

dat <- expand.grid(
  A = c(-1, 1),
  B = c(-1, 1),
  C = c(-1, 1)
)

dat$treatment <- c("(1)", "a", "b", "ab",
                   "c", "ac", "bc", "abc")

dat$life <- c(22, 32, 35, 55, 44, 40, 60, 39)

knitr::kable(dat)
A B C treatment life
-1 -1 -1 (1) 22
1 -1 -1 a 32
-1 1 -1 b 35
1 1 -1 ab 55
-1 -1 1 c 44
1 -1 1 ac 40
-1 1 1 bc 60
1 1 1 abc 39
dat$ABC <- with(dat, A * B * C)

dat$block2 <- factor(
  ifelse(dat$ABC == -1, "Block 1", "Block 2")
)

knitr::kable(
  dat[order(dat$block2),
      c("block2", "treatment", "A", "B", "C", "ABC")]
)
block2 treatment A B C ABC
1 Block 1 (1) -1 -1 -1 -1
4 Block 1 ab 1 1 -1 -1
6 Block 1 ac 1 -1 1 -1
7 Block 1 bc -1 1 1 -1
2 Block 2 a 1 -1 -1 1
3 Block 2 b -1 1 -1 1
5 Block 2 c -1 -1 1 1
8 Block 2 abc 1 1 1 1

2 Four blocks

a. Effect confounded with block

Choose AB and AC as the independent block generators.

Their product is

\[ (AB)(AC)=BC. \]

Therefore, AB, AC, and BC are confounded with blocks. This preserves all three main effects.

b. Assignment of treatments

Assign treatments according to the sign of ABC.

dat$AB <- with(dat, A * B)
dat$AC <- with(dat, A * C)

dat$block4 <- factor(
  1 + 2 * (dat$AB == 1) + (dat$AC == 1),
  levels = 1:4,
  labels = paste("Block", 1:4)
)

knitr::kable(
  dat[order(dat$block4),
      c("block4", "treatment", "A", "B", "C", "AB", "AC")]
)
block4 treatment A B C AB AC
2 Block 1 a 1 -1 -1 -1 -1
7 Block 1 bc -1 1 1 -1 -1
3 Block 2 b -1 1 -1 -1 1
6 Block 2 ac 1 -1 1 -1 1
4 Block 3 ab 1 1 -1 1 -1
5 Block 3 c -1 -1 1 1 -1
1 Block 4 (1) -1 -1 -1 1 1
8 Block 4 abc 1 1 1 1 1

3 Half normal plot

The data were collected using the two-block design in Question 1.

ABC is completely confounded with blocks. Therefore, its contrast represents the combined block and ABC interaction contribution; these two contributions cannot be separated.

# Contrast columns for the estimable treatment effects
X <- with(dat, cbind(
  A = A,
  B = B,
  C = C,
  AB = A * B,
  AC = A * C,
  BC = B * C
))

# Factorial effects: contrast divided by 4
effects <- drop(crossprod(X, dat$life)) / 4

# Block contrast, aliased with ABC
block_effect <- sum(dat$ABC * dat$life) / 4

all_effects <- c(
  effects,
  "Block / ABC" = block_effect
)

knitr::kable(
  data.frame(
    Term = names(all_effects),
    Effect = as.numeric(all_effects),
    Absolute_effect = abs(as.numeric(all_effects))
  ),
  digits = 3
)
Term Effect Absolute_effect
A 1.25 1.25
B 12.75 12.75
C 9.75 9.75
AB -1.75 1.75
AC -13.75 13.75
BC -5.25 5.25
Block / ABC -6.75 6.75
# Half-normal plot
ord <- order(abs(all_effects))
ordered_effects <- abs(all_effects)[ord]
half_normal_quantiles <- qnorm(
  (1 + ppoints(length(all_effects))) / 2
)

plot(
  half_normal_quantiles,
  ordered_effects,
  pch = 16,
  xlab = "Theoretical half-normal quantiles",
  ylab = "Absolute effect",
  main = "Half-normal plot of effects",
  ylim = c(0, max(ordered_effects) * 1.15)
)

text(
  half_normal_quantiles,
  ordered_effects,
  labels = names(all_effects)[ord],
  pos = 3,
  cex = 0.8
)

a. Important Effect

The largest absolute treatment effects are AC (13.75), B (12.75), and C (9.75). These appear to be the strongest candidates for active effects.

This is a tentative graphical conclusion. The unreplicated design provides no pure-error estimate for a conventional significance test.

b. Block Test

block_means <- tapply(dat$life, dat$block2, mean)
block_means
## Block 1 Block 2 
##   44.25   37.50
block_effect
## [1] -6.75

The block means are 44.25 and 37.50 hours, giving a difference of -6.75 hours for Block 2 minus Block 1.

The block/ABC contrast is smaller than the three largest treatment effects and does not clearly stand out as an active effect. Therefore, there is no clear graphical evidence of a strong block effect. A formal significance conclusion cannot be made without an error estimate and an assumption about the ABC interaction.