Description Usage Arguments Details Value Author(s) See Also Examples
Construct a user-specified contrast matrix.
1 | make.contrasts(contr, how.many = ncol(contr))
|
contr |
vector or matrix specifying contrasts (one per row). |
how.many |
dimensions of the desired contrast matrix. This must equal the number of levels of the target factor variable. |
This function converts human-readable contrasts into the form that R requires for computation.
Specifying a contrast row of the form
c(1,0,0,-1)
creates a contrast that will compare the mean of the
first group with the mean of the fourth group.
make.contrasts
returns a matrix with dimensions
(how.many
, how.many
) containing the specified contrasts
augmented (if necessary) with orthogonal "filler" contrasts.
This matrix can then be used as the argument to
contrasts
or to the contrasts
argument of model
functions (eg, lm
).
Gregory R. Warnes greg@warnes.net
lm
, contrasts
,
contr.treatment
, contr.poly
,
Computation and testing of General Linear Hypothesis:
glh.test
, Computation and testing of estimable functions
of model coefficients: estimable
, Estimate and Test
Contrasts for a previously fit linear model: fit.contrast
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | set.seed(4684)
y <- rnorm(100)
x.true <- rnorm(100, mean=y, sd=0.25)
x <- factor(cut(x.true,c(-4,-1.5,0,1.5,4)))
reg <- lm(y ~ x)
summary(reg)
# Mirror default treatment contrasts
test <- make.contrasts(rbind( c(-1,1,0,0), c(-1,0,1,0), c(-1,0,0,1) ))
lm( y ~ x, contrasts=list(x = test ))
# Specify some more complicated contrasts
# - mean of 1st group vs mean of 4th group
# - mean of 1st and 2nd groups vs mean of 3rd and 4th groups
# - mean of 1st group vs mean of 2nd, 3rd and 4th groups
cmat <- rbind( "1 vs 4" =c(-1, 0, 0, 1),
"1+2 vs 3+4"=c(-1/2,-1/2, 1/2, 1/2),
"1 vs 2+3+4"=c(-3/3, 1/3, 1/3, 1/3))
summary(lm( y ~ x, contrasts=list(x=make.contrasts(cmat) )))
# or
contrasts(x) <- make.contrasts(cmat)
summary(lm( y ~ x ) )
# or use contrasts.lm
reg <- lm(y ~ x)
fit.contrast( reg, "x", cmat )
# compare with values computed directly using group means
gm <- sapply(split(y,x),mean)
gm
#
# Example for Analysis of Variance
#
set.seed(03215)
Genotype <- sample(c("WT","KO"), 1000, replace=TRUE)
Time <- factor(sample(1:3, 1000, replace=TRUE))
data <- data.frame(y, Genotype, Time)
y <- rnorm(1000)
data <- data.frame(y, Genotype, as.factor(Time))
# Compute Contrasts & obtain 95% confidence intervals
model <- aov( y ~ Genotype + Time + Genotype:Time, data=data )
fit.contrast( model, "Genotype", rbind("KO vs WT"=c(-1,1) ), conf=0.95 )
fit.contrast( model, "Time",
rbind("1 vs 2"=c(-1,1,0),
"2 vs 3"=c(0,-1,1)
),
conf=0.95 )
cm.G <- rbind("KO vs WT"=c(-1,1) )
cm.T <- rbind("1 vs 2"=c(-1,1,0),
"2 vs 3"=c(0,-1,1) )
# Compute contrasts and show SSQ decompositions
model <- model <- aov( y ~ Genotype + Time + Genotype:Time, data=data,
contrasts=list(Genotype=make.contrasts(cm.G),
Time=make.contrasts(cm.T) )
)
summary(model, split=list( Genotype=list( "KO vs WT"=1 ),
Time = list( "1 vs 2" = 1,
"2 vs 3" = 2 ) ) )
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.