# the matrix function can be used for data sets with only numeric variables data <- matrix(scan(),ncol=2,byrow=TRUE) 1 1 2 1 3 1 5 2 3 2 4 2 6 3 7 3 5 3 data tastetest <- data.frame(data) colnames(tastetest) <- c("taste","treat") rm(data) # remove unneeded objects # we must make sure that treat is a factor, not numeric tastetest$treat <- as.factor(tastetest$treat) # set a reference level for use with Dunnetts method tastetest$treat <- relevel(tastetest$treat, ref="1") tastetest.lm <- lm(taste ~ treat, data = tastetest) anova(tastetest.lm) summary(tastetest.lm) # check model assumptions par(mfrow=c(2,2)) plot(tastetest.lm) par(mfrow=c(1,1)) # ------------------------------------------------------------------------ # using emmeans for contrasts # ------------------------------------------------------------------------ library(emmeans) treatmeans <- emmeans(tastetest.lm, "treat") contrast1vs2 <- list(First2 = c(1, -1, 0)) contrast12vs3 <- list(First2vs3 = c(1, 1, -2)) contrast(treatmeans, contrast1vs2, adjust="none") contrast(treatmeans, contrast12vs3, adjust="none") # ------------------------------------------------------------------------ # using multcomp for Tukey and Dunnett methods # ------------------------------------------------------------------------ library(multcomp) methods.Dunnett <- glht(tastetest.lm,linfct=mcp(treat="Dunnett")) summary(methods.Dunnett) methods.Tukey <- glht(tastetest.lm,linfct=mcp(treat="Tukey")) summary(methods.Tukey) # ------------------------------------------------------------------------ # using DescTools for Tukey, Fisher's LSD and Scheffe methods # ------------------------------------------------------------------------ library(DescTools) tastetest.aov <- aov(taste ~ treat, data = tastetest) # these functions use aov objects # Fisher's and Tukey's methods PostHocTest(aov(taste ~ treat, data = tastetest), method = "lsd", conf.level=.95) PostHocTest(aov(taste ~ treat, data = tastetest), method = "hsd", conf.level=.95) # find levels of Species for defining a contrast levels(tastetest$treat) # compare Milk Tea to the two others: Sch.c1 <- ScheffeTest(tastetest.aov, contrasts=matrix( c(1.,1.,-2.), ncol=1) ) Sch.c1 # ------------------------------------------------------------------------ # methods for adjusting p values # ------------------------------------------------------------------------ # p values from Table 5.1 in the text pvalues1 <- c(.004,.002,.13,.29,.73,.08,.02) pvalues2 <- c(.40,.24,.01,.0001,.0001,.001) pvalues3 <- c(.001,.0001,.41,.07,.15,.42,.002,.006) pvalsall <- c(pvalues1,pvalues2,pvalues3) # adjusted p values p.adjust(pvalsall, "bonferroni") p.adjust(pvalsall, "holm") p.adjust(pvalsall, "fdr") # rounded values round(pvalsall, 3) round(p.adjust(pvalsall, "bonferroni"), 3) round(p.adjust(pvalsall, "holm"), 3) round(p.adjust(pvalsall, "fdr"), 3)