CHEAT SHEET ANOVA Alphabet Soup & Regression Equivalents:


[First appeared in a post on CrossValidate]

One-way ANOVA:

Structure:   DV is continuous; IV is ONE FACTOR with different LEVELS.
Scenario:    miles-per-gal. vs cylinders
             Note that Income vs Gender (M, F) is a t-test.
Syntax:      fit <- aov(mpg ~ as.factor(cyl), data = mtcars); summary(fit); TukeyHSD(fit)
Regression:  fit <- lm(mpg ~ as.factor(cyl), mtcars) 
             # with F dummy coded;
             summary(fit); anova(fit)

Two-way ANOVA:

Structure:   DV is continuous; IV is > 1 FACTORS with different LEVELS.
Scenario:    mpg ~ cylinders & carburators
Syntax:      fit <- aov(mpg ~ as.factor(cyl) + as.factor(carb), mtcars); 
             summary(fit); TukeyHSD(fit)
Regression:  fit <- lm(mpg ~ as.factor(cyl) + as.factor(carb), mtcars) 
             # with F dummy coded; 
             summary(fit); anova(fit)

Two-way Factorial ANOVA:

Structure:   All possible COMBINATIONS of LEVELS are considered.
Scenario:    mpg ~ cylinders + carburetors + (4cyl/1,...8cyl/4)
Syntax:      fit <- aov(mpg ~ as.factor(cyl) * as.factor(carb), mtcars); 
             summary(fit); TukeyHSD(fit)
Regression:  fit <- lm(mpg ~ as.factor(cyl) * as.factor(carb), mtcars) 
             # with F dummy coded; 
             summary(fit); anova(fit)

ANCOVA:

Structure:   DV continuous ~ Factor and continuous COVARIATE.
Scenario:    mpg ~ cylinders + weight
Syntax:      fit <- aov(mpg ~ as.factor(cyl) + wt, mtcars); summary(fit)
Regression:  fit <- lm(mpg ~ as.factor(cyl) + wt, mtcars) 
             # with F dummy coded; 
             summary(fit); anova(fit)

MANOVA:

Structure:   > 1 DVs continuous ~ 1 FACTOR ("One-way") or 2 FACTORS ("Two-way MANOVA").
Scenario:    mpg and wt ~ cylinders
Syntax:      fit <- manova(cbind(mpg,wt) ~ as.factor(cyl), mtcars); summary(fit)
Regression:  N/A

MANCOVA:

Structure:   > 1 DVs continuous ~ 1 FACTOR + 1 continuous (covariate) DV.
Scenario:    mpg and wt ~ cyl + displacement (cubic inches)
Syntax:      fit <- manova(cbind(mpg,wt) ~ as.factor(cyl) + disp, mtcars); summary(fit)
Regression:  N/A

WITHIN FACTOR (or SUBJECT) ANOVA: (code here)

Structure:   DV continuous ~ FACTOR with each level * with subject (repeated observations).
             Extension paired t-test. Each subject measured at each level multiple times. 
Scenario:    Memory rate ~ Emotional value of words for Subjects @ Times
Syntax:      fit <- aov(Recall_Rate ~ Emtl_Value * Time + Error(Subject/Time), data); 
             summary(fit); print(model.tables(fit, "means"), digits=3);
             boxplot(Recall_Rate ~ Emtl_Value, data=data)
             with(data, interaction.plot(Time, Emtl_Value, Recall_Rate))
             with(data, interaction.plot(Subject, Emtl_Value, Recall_Rate))
             NOTE: Data should be in the LONG FORMAT (same subject in multiple rows)
Regression:  Mixed Effects
             require(lme4); require(lmerTest)
             fit <- lmer(Recall_Rate ~ Emtl_Value * Time + (1|Subject/Time), data); 
             anova(fit); summary(fit); coefficients(fit); confint(fit) 
or
             require(nlme)
             fit <- lme(Recall_Rate ~ Emtl_Value * Time, random = ~1|Subject/Time, data)
             summary(fit); anova(fit); coefficients(fit); confint(fit)

SPLIT-PLOT: (code here)

Structure:   DV continuous ~ FACTOR/-S with RANDOM EFFECTS and pseudoreplication.
Scenario:    Harvest yield ~ Factors = Irrigation / Density of seeds / Fertilizer 
                 & RANDOM EFFECTS (Blocks and plots of land): 
Syntax:      fit <- aov(yield ~ irrigation * density * fertilizer + 
                 Error(block/irrigation/density), data); summary(fit)
Regression:  Mixed Effects
             require(lme4); require(lmerTest); 
             fit <- lmer(yield ~ irrigation * fertilizer + 
             (1|block/irrigation/density), data = splityield); 
             anova(fit); summary(fit); coefficients(fit); confint(fit)
or
             library(nlme)
             fit <- lme(yield ~ irrigation * variety, random=~1|field, irrigation)
             summary(fit); anova(fit)

NESTED DESIGN: (code here)

Structure:   DV continuous ~ FACTOR/-S with pseudoreplication.
Scenario:    [Glycogen] ~ Factors = Treatment & RANDOM EFFECTS with Russian-doll effect: 
             Six rats (6 Livers)-> 3 Microscopic Slides/Liver-> 2 Readings/Slide). 
Syntax:      fit <- aov(Glycogen ~ Treatment + Error(Rat/Liver), data); summary(fit)
Regression:  Mixed Effects
             require(lme4); require(lmerTest)
             fit <- lmer(Glycogen ~ Treatment + (1|Rat/Liver), rats); 
             anova(fit); summary(fit); coefficients(fit); confint(fit)
or
             require(nlme)
             fit<-lme(Glycogen ~ Treatment, random=~1|Rat/Liver, rats)
             summary(fit); anova(fit); VarCorr(fit)

USEFUL SITES:

  1. RExRepos
  2. Personality Project
  3. Quick-R
  4. R-Bloggers
  5. Nested Analysis and Split-Plot by M. Crawley
  6. Models with Multiple Random Effects
  7. Split Plot Models
  8. The R Book by M. Crowley
  9. Within Groups & Repeated Measures
  10. Repeat Measures in R

Home Page