Rev 76413 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/stats/man/se.contrast.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2019 R Core Team% Distributed under GPL 2 or later\name{se.contrast}\alias{se.contrast}\alias{se.contrast.aov}\alias{se.contrast.aovlist}\title{Standard Errors for Contrasts in Model Terms}\usage{se.contrast(object, \dots)\method{se.contrast}{aov}(object, contrast.obj,coef = contr.helmert(ncol(contrast))[, 1],data = NULL, \dots)}\arguments{\item{object}{A suitable fit, usually from \code{aov}.}\item{contrast.obj}{The contrasts for which standard errors arerequested. This can be specified via a list or via a matrix. Asingle contrast can be specified by a list of logical vectors givingthe cells to be contrasted. Multiple contrasts should be specifiedby a matrix, each column of which is a numerical contrast vector(summing to zero).}\item{coef}{used when \code{contrast.obj} is a list; it should be avector of the same length as the list with zero sum. The defaultvalue is the first Helmert contrast, which contrasts the first andsecond cell means specified by the list.}\item{data}{The data frame used to evaluate \code{contrast.obj}.}\item{\dots}{further arguments passed to or from other methods.}}\description{Returns the standard errors for one or more contrasts in an \code{aov}object.}\details{Contrasts are usually used to test if certain means aresignificantly different; it can be easier to use \code{se.contrast}than compute them directly from the coefficients.In multistratum models, the contrasts can appear in more than onestratum, in which case the standard errors are computed in the loweststratum and adjusted for efficiencies and comparisons betweenstrata. (See the comments in the note in the help for\code{\link{aov}} about using orthogonal contrasts.) Such standarderrors are often conservative.Suitable matrices for use with \code{coef} can be found bycalling \code{\link{contrasts}} and indexing the columns by a factor.}\value{A vector giving the standard errors for each contrast.}\seealso{\code{\link{contrasts}}, \code{\link{model.tables}}}\examples{## From Venables and Ripley (2002) p.165.N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,55.0, 62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)npk <- data.frame(block = gl(6,4), N = factor(N), P = factor(P),K = factor(K), yield = yield)## Set suitable contrasts.options(contrasts = c("contr.helmert", "contr.poly"))npk.aov1 <- aov(yield ~ block + N + K, data = npk)se.contrast(npk.aov1, list(N == "0", N == "1"), data = npk)# or via a matrixcont <- matrix(c(-1,1), 2, 1, dimnames = list(NULL, "N"))se.contrast(npk.aov1, cont[N, , drop = FALSE]/12, data = npk)## test a multi-stratum modelnpk.aov2 <- aov(yield ~ N + K + Error(block/(N + K)), data = npk)se.contrast(npk.aov2, list(N == "0", N == "1"))## an example looking at an interaction contrast## Dataset from R.E. Kirk (1995)## 'Experimental Design: procedures for the behavioral sciences'score <- c(12, 8,10, 6, 8, 4,10,12, 8, 6,10,14, 9, 7, 9, 5,11,12,7,13, 9, 9, 5,11, 8, 7, 3, 8,12,10,13,14,19, 9,16,14)A <- gl(2, 18, labels = c("a1", "a2"))B <- rep(gl(3, 6, labels = c("b1", "b2", "b3")), 2)fit <- aov(score ~ A*B)cont <- c(1, -1)[A] * c(1, -1, 0)[B]sum(cont) # 0sum(cont*score) # value of the contrastse.contrast(fit, as.matrix(cont))(t.stat <- sum(cont*score)/se.contrast(fit, as.matrix(cont)))summary(fit, split = list(B = 1:2), expand.split = TRUE)## t.stat^2 is the F value on the A:B: C1 line (with Helmert contrasts)## Now look at all three interaction contrastscont <- c(1, -1)[A] * cbind(c(1, -1, 0), c(1, 0, -1), c(0, 1, -1))[B,]se.contrast(fit, cont) # same, due to balance.rm(A, B, score)## multi-stratum example where efficiencies play a role## An example from Yates (1932),## a 2^3 design in 2 blocks replicated 4 timesBlock <- gl(8, 4)A <- factor(c(0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1))B <- factor(c(0,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1))C <- factor(c(0,1,1,0,1,0,0,1,0,0,1,1,0,0,1,1,0,1,0,1,1,0,1,0,0,0,1,1,1,1,0,0))Yield <- c(101, 373, 398, 291, 312, 106, 265, 450, 106, 306, 324, 449,272, 89, 407, 338, 87, 324, 279, 471, 323, 128, 423, 334,131, 103, 445, 437, 324, 361, 302, 272)aovdat <- data.frame(Block, A, B, C, Yield)fit <- aov(Yield ~ A + B * C + Error(Block), data = aovdat)cont1 <- c(-1, 1)[A]/32 # Helmert contrastscont2 <- c(-1, 1)[B] * c(-1, 1)[C]/32cont <- cbind(A = cont1, BC = cont2)colSums(cont*Yield) # values of the contrastsse.contrast(fit, as.matrix(cont))\donttest{# comparison with lmelibrary(nlme)fit2 <- lme(Yield ~ A + B*C, random = ~1 | Block, data = aovdat)summary(fit2)$tTable # same estimates, similar (but smaller) se's.}}\keyword{models}