On Thu, 17 Feb 2005, Christoph Buser wrote:
Dear Jamie
As Prof. Ripley explained your analysis is equivalent to the fixed effect models for the means, so you can calculate it by (if this is your design):
Lab <- factor(rep(c("1","2","3"),each=12)) Material <- factor(rep(c("A","B","C","D"),each=3,times=3)) Measurement <- c(12.20,12.28,12.16,15.51,15.02,15.29,18.14,18.08,18.21, 18.54,18.36,18.45,12.59,12.30,12.67,14.98,15.46,15.22, 18.54,18.31,18.60,19.21,18.77,18.69,12.72,12.78,12.66, 15.33,15.19,15.24,18.00,18.15,17.93,18.88,18.12,18.03) testdata <- data.frame(Lab,Material,Measurement) rm(list=c("Lab","Material","Measurement"))
You can aggregate your data
dat.mean <- aggregate(testdata$Measurement, by = list(Material=testdata$Material,Lab=testdata$Lab), FUN = mean) names(dat.mean)[3] <- "Measurement"
test.red.aov1 <- aov(Measurement ~ Lab + Material, data = dat.mean) se.contrast(test.red.aov1, list(Material=="A",Material=="B",Material=="C",Material=="D"), coef=c(0.5,0.5,-0.5,-0.5),dat.mean) [1] 0.1220339
By aggregating the data you bypass the problem in se.contrast and you do not need R-devel.
Note that this is not the same contrast, and you need to double the value for comparability with the original problem.
-----------------------------------------------------------------------------
The second way to get the same is to set your contrast for the factor "Material" and calculate you model with this contrast and use summary.lm:
dat.mean$Material <- C(dat.mean$Material, c(-0.5,-0.5,0.5,0.5), how.many = 3) test.red.aov2 <- aov(Measurement ~ Lab + Material, data = dat.mean) summary.lm(test.red.aov2)
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 16.02000 0.10568 151.583 5.56e-12 *** Lab2 0.25833 0.14946 1.728 0.135 Lab3 0.06583 0.14946 0.440 0.675 Material1 4.52278 0.12203 37.062 2.58e-08 *** Material2 1.21056 0.12203 9.920 6.06e-05 *** Material3 1.55389 0.12203 12.733 1.44e-05 *** --- Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
Material1 is now the contrast you are interested in and you get beside the Std. Error the Estimate, too. Material2 and Material3 are just orthogonal contrasts to complete.
-----------------------------------------------------------------------------
The third way (which I prefer) is using lme from the package nlme
library(nlme)
Here I use the origianl data set (not aggregated) and set the desired contrast, too.
testdata$Material <- C(testdata$Material, c(-0.5,-0.5,0.5,0.5), how.many = 3) test.lme <- lme(fixed = Measurement ~ Material, data = testdata, random = ~1|Lab/Material)
With anova you get the F-Test for the fixed factor "Material"
anova(test.lme) numDF denDF F-value p-value(Intercept) 1 24 43301.14 <.0001 Material 3 6 544.71 <.0001
and with the summary you have your contrast with standard error:
summary(test.lme)Fixed effects: Measurement ~ Material Value Std.Error DF t-value p-value (Intercept) 16.128056 0.07750547 24 208.08925 0e+00 Material1 4.522778 0.12203325 6 37.06185 0e+00 Material2 1.210556 0.12203325 6 9.91988 1e-04 Material3 1.553889 0.12203325 6 12.73332 0e+00
-----------------------------------------------------------------------------
Last but not least I tried it with R-devel and the original data frame: First I reset the contrast on the default value:
testdata$Material <- C(testdata$Material, "contr.treatment", how.many = 3)
I used your syntax and se.contrast():
test.aov <- with(testdata,aov(Measurement ~ Material + Error(Lab/Material))) se.contrast(test.aov, list(Material=="A",Material=="B",Material=="C",Material=="D"), coef=c(0.5,0.5,-0.5,-0.5),data=testdata) [1] 0.1432572
I got a different result and I have admit that I didn't understand why there is a differnce between the lme model and this one. There are some comments in the help pages but I'm not sure if this is the answer.
It is. You used the default `constrasts', which are not actually contrasts. With
options(contrasts=c("contr.helmert", "contr.poly"))
it gives the same answer as the other two. Because you used non-contrasts there was an efficiency loss (to the Intercept stratum).
-- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html