# NOT RUN { ff <- log(Volume) ~ log(Height) + log(Girth) utils::str(m <- model.frame(ff, trees)) mat <- model.matrix(ff, m) dd <- data.frame(a = gl(3,4), b = gl(4,1,12)) # balanced 2-way options("contrasts") # typically 'treatment' (for unordered factors) model.matrix(~ a + b, dd) model.matrix(~ a + b, dd, contrasts = list(a = "contr.sum")) model.matrix(~ a + b, dd, contrasts = list(a = "contr.sum", b = contr.poly)) m.orth <- model.matrix(~a+b, dd, contrasts = list(a = "contr.helmert")) crossprod(m.orth) # m.orth is ALMOST orthogonal # invalid contrasts.. ignored with a warning: stopifnot(identical( model.matrix(~ a + b, dd), model.matrix(~ a + b, dd, contrasts.arg = "contr.FOO"))) # }
Run the code above in your browser using DataCamp Workspace