A <- c(-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1)
B <- c(-1,-1,+1,+1,-1,-1,+1,+1,-1,-1,+1,+1,-1,-1,+1,+1)
C <- c(rep(-1,4),rep(1,4),rep(-1,4),rep(1,4))
D <- c(rep(-1,8),rep(1,8))
obs <- c(12,18,13,16,17,15,20,15,10,25,13,24,19,21,17,23)
data <- data.frame(A,B,C,D,obs)

a)

library(DoE.base)
model <- lm(obs~A*B*C*D,data = data)
halfnormal(model)

Factors A, D and interactions AC and AD appear to be significant (\(\alpha=0.05\)).

b)

anova_mod <- aov(obs~A+C+D+A*C+A*D,data = data)
summary(anova_mod)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## A            1  81.00   81.00  49.846 3.46e-05 ***
## C            1  16.00   16.00   9.846 0.010549 *  
## D            1  42.25   42.25  26.000 0.000465 ***
## A:C          1  72.25   72.25  44.462 5.58e-05 ***
## A:D          1  64.00   64.00  39.385 9.19e-05 ***
## Residuals   10  16.25    1.62                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

All effects that seemed significant in the half-normal plot are significant here too (\(\alpha<0.001\)). Additionally, the factor C is shown the be significant too with a comparatively higher p-value (\(\alpha<0.05\))