library(car)
#> Warning: package 'car' was built under R version 3.4.4
#> Loading required package: carData
library(compute.es)
library(effects)
#> lattice theme set by effectsTheme()
#> See ?effectsTheme for details.
library(ggplot2)
library(multcomp)
#> Loading required package: mvtnorm
#> Loading required package: survival
#> Loading required package: TH.data
#> Loading required package: MASS
#>
#> Attaching package: 'TH.data'
#> The following object is masked from 'package:MASS':
#>
#> geyser
library(pastecs)
#> Warning: package 'pastecs' was built under R version 3.4.4
library(reshape)
library(WRS2)
library(Hmisc)
#> Loading required package: lattice
#> Loading required package: Formula
#>
#> Attaching package: 'Hmisc'
#> The following objects are masked from 'package:base':
#>
#> format.pval, units
library(Rcmdr)
#> Loading required package: splines
#> Loading required package: RcmdrMisc
#> Loading required package: sandwich
#>
#> Attaching package: 'RcmdrMisc'
#> The following object is masked from 'package:Hmisc':
#>
#> Dotplot
#> The Commander GUI is launched only in interactive sessions
#>
#> Attaching package: 'Rcmdr'
#> The following object is masked from 'package:car':
#>
#> Confint
#dataframe
gender <- gl(2, 24, labels = c("Female", "Male"))
alcohol <- gl(3, 8, 48, labels = c("None", "2 Pints", "4 Pints"))
attractiveness <- c(65,70,60,60,60,55,60,55,70,65,60,70,65,60,60,50,55,65,70,55,55,60,50,50,50,55,80,65,70,75,75,65,45,60,85,65,70,70,80,60,30,30,30,55,35,20,45,40)
gogglesData <- data.frame(gender, alcohol, attractiveness)
gogglesData
#> gender alcohol attractiveness
#> 1 Female None 65
#> 2 Female None 70
#> 3 Female None 60
#> 4 Female None 60
#> 5 Female None 60
#> 6 Female None 55
#> 7 Female None 60
#> 8 Female None 55
#> 9 Female 2 Pints 70
#> 10 Female 2 Pints 65
#> 11 Female 2 Pints 60
#> 12 Female 2 Pints 70
#> 13 Female 2 Pints 65
#> 14 Female 2 Pints 60
#> 15 Female 2 Pints 60
#> 16 Female 2 Pints 50
#> 17 Female 4 Pints 55
#> 18 Female 4 Pints 65
#> 19 Female 4 Pints 70
#> 20 Female 4 Pints 55
#> 21 Female 4 Pints 55
#> 22 Female 4 Pints 60
#> 23 Female 4 Pints 50
#> 24 Female 4 Pints 50
#> 25 Male None 50
#> 26 Male None 55
#> 27 Male None 80
#> 28 Male None 65
#> 29 Male None 70
#> 30 Male None 75
#> 31 Male None 75
#> 32 Male None 65
#> 33 Male 2 Pints 45
#> 34 Male 2 Pints 60
#> 35 Male 2 Pints 85
#> 36 Male 2 Pints 65
#> 37 Male 2 Pints 70
#> 38 Male 2 Pints 70
#> 39 Male 2 Pints 80
#> 40 Male 2 Pints 60
#> 41 Male 4 Pints 30
#> 42 Male 4 Pints 30
#> 43 Male 4 Pints 30
#> 44 Male 4 Pints 55
#> 45 Male 4 Pints 35
#> 46 Male 4 Pints 20
#> 47 Male 4 Pints 45
#> 48 Male 4 Pints 40
#interaction plot
interaction.plot(gogglesData$alcohol, gogglesData$gender, gogglesData$attractiveness, col = 2:3)

#ANOVA
contrasts(gogglesData$alcohol) <- cbind(c(-2, 1, 1), c(0, -1, 1))
contrasts(gogglesData$gender) <- c(-1, 1)
gogglesModel <- aov(attractiveness ~ gender*alcohol, data = gogglesData)
Anova(gogglesModel, type="III")
#> Anova Table (Type III tests)
#>
#> Response: attractiveness
#> Sum Sq Df F value Pr(>F)
#> (Intercept) 163333 1 1967.0251 < 2.2e-16 ***
#> gender 169 1 2.0323 0.1614
#> alcohol 3332 2 20.0654 7.649e-07 ***
#> gender:alcohol 1978 2 11.9113 7.987e-05 ***
#> Residuals 3488 42
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Created on 2018-06-30 by the reprex package (v0.2.0).
And I am wondering how do I create these two plot in my textbook: