Watching Driving Data Exploration and MANOVA

Author: S. Wu


# Check and load required R packages
# car: for Levene’s test, compute.es: for effect sizes, multcomp: for post hoc tests, 
# ez: for ANOVA (ezANOVA()), pastecs: for descriptive statistics, WRS: for robust tests

pkg<-c("knitr", "ggplot2", "grid", "gridExtra", "plyr", "tidyr", "dplyr", "Hmisc", "reshape2", "compute.es", "car", "ez", "multcomp", "pastecs", "MASS", "mvoutlier", "mvnormtest", "heplots", "broom");

pkgCheck<-pkg %in% rownames(installed.packages());
for(i in 1:length(pkg)) {
    if(pkgCheck[i]==FALSE) {
        install.packages(pkg[i])
    }
    library(pkg[i],character.only = TRUE, quietly = TRUE)
};
rm(i,pkg,pkgCheck);
# install.packages("akima")
# install.packages("WRS", repos="http://R-Forge.R-project.org"); 
library(WRS)

options(scipen=999); #remove scientific notation in printing

Data Exploration

Load Data

data.flat<- read.csv('flat file.csv', stringsAsFactors = FALSE);
names(data.flat)
##  [1] "ss"                                                         
##  [2] "condition"                                                  
##  [3] "order"                                                      
##  [4] "safe_agg"                                                   
##  [5] "law_abiding_agg"                                            
##  [6] "speed_agg"                                                  
##  [7] "competent_agg"                                              
##  [8] "satisfaction_agg"                                           
##  [9] "recommend_agg"                                              
## [10] "buy_agg"                                                    
## [11] "style_agg"                                                  
## [12] "rideagain_agg"                                              
## [13] "safe_pass"                                                  
## [14] "law_abiding_pass"                                           
## [15] "speed_pass"                                                 
## [16] "competent_pass"                                             
## [17] "satisfaction_pass"                                          
## [18] "recommend_pass"                                             
## [19] "buy_pass"                                                   
## [20] "style_pass"                                                 
## [21] "rideagain_pass"                                             
## [22] "prefer"                                                     
## [23] "whichagg"                                                   
## [24] "age"                                                        
## [25] "gender"                                                     
## [26] "liscence"                                                   
## [27] "driveregularly"                                             
## [28] "oftendrive"                                                 
## [29] "Have.you.ever.been.in.an.autonomous..self.driving..vehicle."
## [30] "usedcriuse"                                                 
## [31] "usedadvcriuse"                                              
## [32] "usedvoice"                                                  
## [33] "automationcar"                                              
## [34] "oftencriuse"                                                
## [35] "oftenvoice"
names(data.flat)<- gsub('law_abiding','lawAbiding',names(data.flat));
names(data.flat)[29]<- 'selfDrive.Veh.Experience';
names(data.flat)[3]<- 'firstDrive'


Ratings Overview by Drive/Order/Condition

# Long flatfile, different rows for passive/aggressive drives & variables
data.ratings<- data.flat[,-c(22:35)];
data.ratings<- data.ratings %>%
  mutate(ss= factor(ss),
         condition=factor(condition, labels=c('untimed','timed')),
         firstDrive=factor(firstDrive, labels=c('pass','agg')),
         rideagain_agg=abs(rideagain_agg-2), # transform to 0=no, 1=yes
         rideagain_pass=abs(rideagain_pass-2))  %>%
  gather(var_drive, rating, 4:21) %>%
  separate(var_drive, c('var', 'drive')) %>%
  mutate(order= factor(ifelse(drive==firstDrive, 1, 2), labels=c('first','second')),
         drive= factor(drive, levels=c('pass', 'agg')))
  # dplyr::select(-firstDrive);
fnum=fnum+1;
# exclude "rideagain", which is a yes/no question
data.ratingsSub1<- subset(data.ratings, var!='rideagain'); 
# average across all ratings excluding 'rideagain'
data.ratingsAverage1 <- ddply(data.ratingsSub1, .(ss, condition, firstDrive, drive, order), summarise, rating=mean(rating));

ggplot(data.ratingsAverage1, aes(x=drive, y=rating, colour=order)) + 
  geom_boxplot() + 
  labs(x = "Drive", y = "Average Rating") +
  facet_grid(. ~ condition) +
  theme(panel.grid.minor = element_blank()) +
  scale_colour_manual("Order", values=c("steelblue1", "steelblue")) + 
  scale_y_continuous(limits=c(0,10), breaks=seq(0,10,2.5)) + 
  scale_x_discrete(labels=c('passive', 'aggressive')) +
  theme_bw();

Figure 1 Boxplots of the watching driving data I


fnum=fnum+1;
labels <- c(pass='Passive Drive First', agg='Aggressive Drive First')
ggplot(data.ratingsAverage1, aes(x=drive, y=rating, colour=condition)) + 
  geom_boxplot() + 
  labs(x = "Drive", y = "Average Rating") +
  facet_grid(. ~ firstDrive, labeller=labeller(firstDrive=labels)) +
  theme(panel.grid.minor = element_blank()) +
  scale_colour_manual("Condition", values=c("steelblue1", "steelblue")) + 
  scale_y_continuous(limits=c(0,10), breaks=seq(0,10,2.5)) + 
  scale_x_discrete(labels=c('passive', 'aggressive')) +
  theme_bw();

Figure 2 Boxplots of the watching driving data II


fnum=fnum+1;
# Definition of whiskers
f <- function(x) {
  r <- quantile(x, probs = c(0.05, 0.25, 0.5, 0.75, 0.95))
  names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
  r
}

# Add points outside of whiskers
o <- function(x) {
  subset(x, x < quantile(x,probs=0.05) | quantile(x,probs=0.95) < x)
}

ggplot(data.ratingsSub1, aes(x=var, y=rating, colour = drive)) + 
  stat_summary(fun.data = f, geom = 'boxplot', position=position_dodge(width=1), size = 0.6) +
  stat_summary(fun.y = o, geom="point", position=position_dodge(width=1)) +
  labs(x = "", y = "Rating") +
  scale_y_continuous(limits=c(1,10), breaks=seq(1,10,1)) +
  scale_colour_manual("", values=c("blue", "red"),
  labels=c("passive drive", "aggressive drive")) +
  theme_bw() #+ 

  # theme(axis.text.x = element_text(angle = 45, hjust = 1)) #legend.position="none", 

Figure 3 Boxplots of the watching driving data III


# graph
fnum=fnum+1
g1<- ggplot(data.ratingsSub1, aes(x=var, y=rating, colour=drive)) + 
  stat_summary(fun.data = "mean_cl_normal", size = 0.6) +
  labs(x = "", y = "Rating") +
  scale_y_continuous(limits=c(0,10), breaks=seq(0,10,2.5)) +
  scale_colour_manual("", values=c("yellowgreen", "steelblue"), 
                      labels=c("passive drive", "aggressive drive")) + 
  theme_bw() + 
  theme(legend.position="none", axis.text.x = element_text(angle = 45, hjust = 1))

g2<- ggplot(data.ratingsSub1, aes(x=var, y=rating, colour=drive)) + 
  stat_summary(fun.data = "mean_cl_normal", size = 0.6) +
  facet_grid(condition ~ order) + #, scales="free_y"
  labs(x = "Catagory", y = "Rating") +
  scale_y_continuous(limits=c(0,10), breaks=seq(0,10,2.5)) +
  scale_colour_manual("", values=c("yellowgreen", "steelblue"), 
                      labels=c("passive drive", "aggressive drive")) + 
  theme_bw() + 
  theme(legend.position="bottom", axis.text.x = element_text(angle = 45, hjust = 1))

g3<- ggplot(data.ratingsAverage1, aes(x=drive, y=rating, colour=drive)) + 
  stat_summary(fun.data = "mean_cl_normal", size = 0.6) +
  labs(x = "Drive", y = "Average Rating") +
  scale_y_continuous(limits=c(0,10), breaks=seq(0,10,2.5)) +
  scale_colour_manual("", values=c("yellowgreen", "steelblue"), 
                      labels=c("passive drive", "aggressive drive")) + 
  theme_bw() + 
  theme(legend.position="none")


grid.arrange(grid.arrange(g3, g1, ncol=2), g2, nrow=2)

Figure 4 Ratings by Drive / Order / Condition


# graph - rideagain
fnum=fnum+1
# 'ridegagin' ratings only
data.ratingsSub2<- subset(data.ratings, var=='rideagain');
# f <- function(x) {
#   r <- quantile(x, probs = c(0.10, 0.25, 0.5, 0.75, 0.90))
#   names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
#   r
# }
g1<- ggplot(data.ratingsSub2, aes(x=drive, y=rating, colour=drive)) + 
  stat_summary(fun.data = "mean_cl_normal", size = 1) +
  labs(x = "", y = "Would you ride in this car again?") +
  scale_y_continuous(limits=c(-0.3,1.3), breaks=c(0, 0.5, 1), 
                       labels=c('No', '', 'Yes')) +
  scale_x_discrete(labels=c('passive', 'aggressive')) +
  scale_colour_manual("", values=c("yellowgreen", "steelblue"), 
                      labels=c("passive drive", "aggressive drive")) + 
  theme_bw() + 
  theme(legend.position="none")

g2<- ggplot(data.ratingsSub2, aes(x=drive, y=rating, colour=drive)) + 
  stat_summary(fun.data = "mean_cl_normal", size = 1) +
  # stat_summary(fun.data = f, geom='boxplot', position=position_dodge(width=1.5)) +
  facet_grid(condition ~ order) + #, scales="free_y"
  labs(x = "", y = "") +
  scale_y_continuous(limits=c(-0.3,1.3), breaks=c(0, 0.5, 1), 
                       labels=c('No', '', 'Yes')) +
  scale_x_discrete(labels=c('passive', 'aggressive')) +
  scale_colour_manual("", values=c("yellowgreen", "steelblue"), 
                      labels=c("passive drive", "aggressive drive")) + 
  theme_bw() + 
  theme(legend.position="none")

grid.arrange(g1, g2, ncol=2)

Figure 5 Would you ride in this car again?



MANOVA + Univariate

1. Descriptive Stats

# Wide flatfile, different rows for passive/aggressive drives, different columns for each variables
data.ratingsWide<- dcast(data.ratings, ss+condition+drive+firstDrive+order ~ var, value.var = 'rating');
options(contrasts=c("contr.helmert","contr.poly"))

#drive
stats<- NULL;
for (i in 1:9) {
  stats[[i]]<- by(data.ratingsWide[[i+5]], list(data.ratingsWide$drive), stat.desc, basic = FALSE);
}
names(stats)<- names(data.ratingsWide[c(6:14)]); print(stats)
## $buy
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##    3.0000000    3.5312500    0.4065601    0.8291847    5.2893145 
##      std.dev     coef.var 
##    2.2998510    0.6512852 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.0000000    6.6875000    0.4697235    0.9580073    7.0604839 
##      std.dev     coef.var 
##    2.6571571    0.3973319 
## 
## $competent
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    2.3125000    0.3026679    0.6172953    2.9314516 
##      std.dev     coef.var 
##    1.7121482    0.7403884 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.5000000    5.0625000    0.4305321    0.8780759    5.9314516 
##      std.dev     coef.var 
##    2.4354572    0.4810780 
## 
## $lawAbiding
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##    1.0000000    2.2500000    0.3620061    0.7383162    4.1935484 
##      std.dev     coef.var 
##    2.0478155    0.9101402 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##    6.0000000    5.8125000    0.3899894    0.7953886    4.8669355 
##      std.dev     coef.var 
##    2.2061132    0.3795464 
## 
## $recommend
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    3.0312500    0.4567689    0.9315864    6.6764113 
##      std.dev     coef.var 
##    2.5838752    0.8524125 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.5000000    6.6562500    0.4848706    0.9889002    7.5231855 
##      std.dev     coef.var 
##    2.7428426    0.4120702 
## 
## $rideagain
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##   1.00000000   0.87500000   0.05939887   0.12114479   0.11290323 
##      std.dev     coef.var 
##   0.33601075   0.38401229 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##   0.00000000   0.31250000   0.08324929   0.16978804   0.22177419 
##      std.dev     coef.var 
##   0.47092907   1.50697304 
## 
## $safe
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##    1.0000000    1.9062500    0.3154598    0.6433845    3.1844758 
##      std.dev     coef.var 
##    1.7845100    0.9361364 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.0000000    6.2812500    0.4217723    0.8602103    5.6925403 
##      std.dev     coef.var 
##    2.3859045    0.3798455 
## 
## $satisfaction
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    3.1250000    0.4439331    0.9054076    6.3064516 
##      std.dev     coef.var 
##    2.5112649    0.8036048 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##    6.0000000    6.0937500    0.4172669    0.8510214    5.5715726 
##      std.dev     coef.var 
##    2.3604179    0.3873506 
## 
## $speed
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##    4.0000000    3.9062500    0.2391154    0.4876790    1.8296371 
##      std.dev     coef.var 
##    1.3526408    0.3462760 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.0000000    6.8750000    0.3412205    0.6959239    3.7258065 
##      std.dev     coef.var 
##    1.9302348    0.2807614 
## 
## $style
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    2.7812500    0.4229657    0.8626442    5.7247984 
##      std.dev     coef.var 
##    2.3926551    0.8602805 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.5000000    7.2187500    0.4253423    0.8674914    5.7893145 
##      std.dev     coef.var 
##    2.4060994    0.3333125
#condition
stats<- NULL;
for (i in 1:9) {
  stats[[i]]<- by(data.ratingsWide[[i+5]], list(data.ratingsWide$condition), stat.desc, basic = FALSE);
}
names(stats)<- names(data.ratingsWide[c(6:14)]); print(stats)
## $buy
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    4.0000000    4.5000000    0.5236349    1.0679605    8.7741935 
##      std.dev     coef.var 
##    2.9621265    0.6582503 
## -------------------------------------------------------- 
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.0000000    5.7187500    0.4984540    1.0166037    7.9506048 
##      std.dev     coef.var 
##    2.8196817    0.4930591 
## 
## $competent
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    3.0000000    3.7500000    0.4445004    0.9065646    6.3225806 
##      std.dev     coef.var 
##    2.5144742    0.6705265 
## -------------------------------------------------------- 
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    3.0000000    3.6250000    0.4484516    0.9146231    6.4354839 
##      std.dev     coef.var 
##    2.5368255    0.6998139 
## 
## $lawAbiding
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    3.5000000    4.0312500    0.4825261    0.9841184    7.4506048 
##      std.dev     coef.var 
##    2.7295796    0.6771050 
## -------------------------------------------------------- 
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    4.0000000    4.0312500    0.5049840    1.0299216    8.1602823 
##      std.dev     coef.var 
##    2.8566208    0.7086191 
## 
## $recommend
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    4.0000000    4.6875000    0.5340002    1.0891007    9.1250000 
##      std.dev     coef.var 
##    3.0207615    0.6444291 
## -------------------------------------------------------- 
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    3.5000000    5.0000000    0.6074139    1.2388288   11.8064516 
##      std.dev     coef.var 
##    3.4360517    0.6872103 
## 
## $rideagain
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##   1.00000000   0.62500000   0.08695104   0.17733782   0.24193548 
##      std.dev     coef.var 
##   0.49186938   0.78699100 
## -------------------------------------------------------- 
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##   1.00000000   0.56250000   0.08909831   0.18171719   0.25403226 
##      std.dev     coef.var 
##   0.50401613   0.89602867 
## 
## $safe
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.5000000    4.0937500    0.5281575    1.0771843    8.9264113 
##      std.dev     coef.var 
##    2.9877100    0.7298223 
## -------------------------------------------------------- 
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    3.0000000    4.0937500    0.5542348    1.1303692    9.8296371 
##      std.dev     coef.var 
##    3.1352252    0.7658565 
## 
## $satisfaction
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.0000000    4.5312500    0.5019807    1.0237964    8.0635081 
##      std.dev     coef.var 
##    2.8396317    0.6266773 
## -------------------------------------------------------- 
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.0000000    4.6875000    0.5108451    1.0418754    8.3508065 
##      std.dev     coef.var 
##    2.8897762    0.6164856 
## 
## $speed
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.0000000    5.6875000    0.4222575    0.8611999    5.7056452 
##      std.dev     coef.var 
##    2.3886492    0.4199823 
## -------------------------------------------------------- 
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.0000000    5.0937500    0.3630054    0.7403544    4.2167339 
##      std.dev     coef.var 
##    2.0534687    0.4031350 
## 
## $style
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.0000000    5.1250000    0.6086573    1.2413647   11.8548387 
##      std.dev     coef.var 
##    3.4430856    0.6718216 
## -------------------------------------------------------- 
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.0000000    4.8750000    0.5531253    1.1281065    9.7903226 
##      std.dev     coef.var 
##    3.1289491    0.6418357
#dirve x condition
stats<- NULL;
for (i in 1:9) {
  stats[[i]]<- by(data.ratingsWide[[i+5]], list(data.ratingsWide$drive, data.ratingsWide$condition), stat.desc, basic = FALSE);
}
names(stats)<- names(data.ratingsWide[c(6:14)]); print(stats)
## $buy
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    2.5000000    0.3763863    0.8022485    2.2666667 
##      std.dev     coef.var 
##    1.5055453    0.6022181 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.0000000    6.5000000    0.6770032    1.4429982    7.3333333 
##      std.dev     coef.var 
##    2.7080128    0.4166174 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    4.0000000    4.5625000    0.6322496    1.3476082    6.3958333 
##      std.dev     coef.var 
##    2.5289985    0.5543010 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.5000000    6.8750000    0.6700435    1.4281640    7.1833333 
##      std.dev     coef.var 
##    2.6801741    0.3898435 
## 
## $competent
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    2.1250000    0.3966001    0.8453332    2.5166667 
##      std.dev     coef.var 
##    1.5864005    0.7465414 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.5000000    5.3750000    0.5543389    1.1815455    4.9166667 
##      std.dev     coef.var 
##    2.2173558    0.4125313 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    2.5000000    0.4654747    0.9921358    3.4666667 
##      std.dev     coef.var 
##    1.8618987    0.7447595 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.5000000    4.7500000    0.6677075    1.4231849    7.1333333 
##      std.dev     coef.var 
##    2.6708301    0.5622800 
## 
## $lawAbiding
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    1.0000000    1.9375000    0.3815402    0.8132337    2.3291667 
##      std.dev     coef.var 
##    1.5261608    0.7876959 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    6.5000000    6.1250000    0.4819665    1.0272872    3.7166667 
##      std.dev     coef.var 
##    1.9278658    0.3147536 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    1.0000000    2.5625000    0.6189288    1.3192156    6.1291667 
##      std.dev     coef.var 
##    2.4757154    0.9661328 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    6.0000000    5.5000000    0.6191392    1.3196639    6.1333333 
##      std.dev     coef.var 
##    2.4765567    0.4502830 
## 
## $recommend
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    2.3750000    0.4269563    0.9100358    2.9166667 
##      std.dev     coef.var 
##    1.7078251    0.7190843 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    8.0000000    7.0000000    0.5322906    1.1345507    4.5333333 
##      std.dev     coef.var 
##    2.1291626    0.3041661 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    3.6875000    0.7890857    1.6818964    9.9625000 
##      std.dev     coef.var 
##    3.1563428    0.8559574 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.0000000    6.3125000    0.8201562    1.7481216   10.7625000 
##      std.dev     coef.var 
##    3.2806249    0.5197030 
## 
## $rideagain
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    1.0000000    0.9375000    0.0625000    0.1332156    0.0625000 
##      std.dev     coef.var 
##    0.2500000    0.2666667 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    0.0000000    0.3125000    0.1196784    0.2550884    0.2291667 
##      std.dev     coef.var 
##    0.4787136    1.5318834 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    1.0000000    0.8125000    0.1007782    0.2148037    0.1625000 
##      std.dev     coef.var 
##    0.4031129    0.4961389 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    0.0000000    0.3125000    0.1196784    0.2550884    0.2291667 
##      std.dev     coef.var 
##    0.4787136    1.5318834 
## 
## $safe
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    1.0000000    1.3750000    0.1547848    0.3299160    0.3833333 
##      std.dev     coef.var 
##    0.6191392    0.4502830 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.0000000    6.8125000    0.3788002    0.8073935    2.2958333 
##      std.dev     coef.var 
##    1.5152008    0.2224148 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    1.0000000    2.4375000    0.5913878    1.2605134    5.5958333 
##      std.dev     coef.var 
##    2.3655514    0.9704826 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    6.0000000    5.7500000    0.7444237    1.5867016    8.8666667 
##      std.dev     coef.var 
##    2.9776949    0.5178600 
## 
## $satisfaction
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    2.3125000    0.4254287    0.9067798    2.8958333 
##      std.dev     coef.var 
##    1.7017148    0.7358767 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.0000000    6.7500000    0.4518481    0.9630913    3.2666667 
##      std.dev     coef.var 
##    1.8073922    0.2677618 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    3.0000000    3.9375000    0.7386291    1.5743506    8.7291667 
##      std.dev     coef.var 
##    2.9545163    0.7503534 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.5000000    5.4375000    0.6768108    1.4425882    7.3291667 
##      std.dev     coef.var 
##    2.7072434    0.4978838 
## 
## $speed
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    4.0000000    3.8125000    0.3318980    0.7074237    1.7625000 
##      std.dev     coef.var 
##    1.3275918    0.3482208 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.5000000    7.5625000    0.3975838    0.8474299    2.5291667 
##      std.dev     coef.var 
##    1.5903354    0.2102923 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    4.0000000    4.0000000    0.3535534    0.7535812    2.0000000 
##      std.dev     coef.var 
##    1.4142136    0.3535534 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    6.0000000    6.1875000    0.5100551    1.0871568    4.1625000 
##      std.dev     coef.var 
##    2.0402206    0.3297326 
## 
## $style
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    2.5000000    0.5773503    1.2305930    5.3333333 
##      std.dev     coef.var 
##    2.3094011    0.9237604 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    8.0000000    7.7500000    0.5283622    1.1261775    4.4666667 
##      std.dev     coef.var 
##    2.1134490    0.2727031 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    3.0625000    0.6289459    1.3405664    6.3291667 
##      std.dev     coef.var 
##    2.5157835    0.8214803 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    7.0000000    6.6875000    0.6564980    1.3992923    6.8958333 
##      std.dev     coef.var 
##    2.6259919    0.3926717
# by(data.ratingsWide[, 6:14], data.ratingsWide$drive, cov);



2. Construct Contrasts

contrasts(data.ratingsWide$drive)<- contr.helmert(2) #=c(-1, 1), passive=-1, aggresive=1
contrasts(data.ratingsWide$condition)<- contr.helmert(2) #=c(-1, 1), untimed=-1, timed=1
# contrasts(data.ratingsWide$order)<- contr.helmert(2) #=c(-1, 1), first=-1, second=1
# contrasts(data.ratingsWide$firstDrive)<- contr.helmert(2) #=c(-1, 1), passFirst=-1, aggFirst=1
attr(data.ratingsWide$drive, 'contrasts'); attr(data.ratingsWide$condition, 'contrasts');
# attr(data.ratingsWide$order, 'contrasts'); attr(data.ratingsWide$firstDrive, 'contrasts');


3. MANOVA

DV: 9 ratings: safe, lawAbiding, speed, competent, satisfaction, recommend, buy, style, rideagain(0-=no/1=yes)

IV: drive(within subject), condition(between subject)

outcome<- as.matrix(data.ratingsWide[,6:14]);
# model2<-manova(outcome ~ condition*drive, data = data.ratingsWide);
model<-manova(outcome ~ condition*drive + Error(ss/drive)+condition, data = data.ratingsWide);
modSum<- summary(model, intercept = TRUE, test = "Wilks") #default test=Pillai's trace, or, test='Hotelling', test='Roy'
modSumMatrix<-rbind(modSum[[1]][[4]], modSum[[2]][[4]]);
p<- round(modSumMatrix[,6], 3); df<- round(modSumMatrix[,4:5], 3); f<- round(modSumMatrix[,3], 3); 
lambda<- round(modSumMatrix[,2], 3);
etaSQ<- round(summary.lm(model[[3]])$r.squared, 3);
# p<- round(modSum[[1]][,6], 3); df<- round(modSum[[4]][,4:5], 3); f<- round(modSum[[4]][,3], 3); 
# lambda<- round(modSum[[4]][,2], 3);
# etaSQ<- round(summary.lm(model[2:3])$r.squared, 3);
modSum;
## 
## Error: ss
##           Df   Wilks approx F num Df den Df Pr(>F)
## condition  1 0.71007  0.99811      9     22 0.4698
## Residuals 30                                      
## 
## Error: ss:drive
##                 Df   Wilks approx F num Df den Df      Pr(>F)    
## drive            1 0.20519   9.4688      9     22 0.000009455 ***
## condition:drive  1 0.69633   1.0660      9     22       0.424    
## Residuals       30                                               
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interaction of condition and drive was not significant, Wilk’s Lambda = 0.696, F(9, 22) = 1.066, p = 0.424.

Main effect of condition was not significant, Wilk’s Lambda = 0.71, F(9, 22) = 0.998, p = 0.47.

Main effect of drive was significant, Wilk’s Lambda = 0.205, F(9, 22) = 9.469, p < 0.001.

\(\eta^2\) = 0.522 (This is not correct.)


4. Univariate Tests

#Univariate ANOVA table
modUnivariate<- summary.aov(model[[3]]);
# modUnivariate<- summary.aov(model);
# a<- bind_rows(modUnivariate, .id='response')
modUnivariate;
##  Response buy :
##                 Df  Sum Sq Mean Sq F value    Pr(>F)    
## drive            1 159.391 159.391 28.0093 0.0000102 ***
## condition:drive  1  11.391  11.391  2.0016    0.1674    
## Residuals       30 170.719   5.691                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response competent :
##                 Df Sum Sq Mean Sq F value     Pr(>F)    
## drive            1    121 121.000 26.1151 0.00001706 ***
## condition:drive  1      4   4.000  0.8633     0.3602    
## Residuals       30    139   4.633                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response lawAbiding :
##                 Df Sum Sq Mean Sq F value        Pr(>F)    
## drive            1 203.06 203.062 51.7631 0.00000005247 ***
## condition:drive  1   6.25   6.250  1.5932        0.2166    
## Residuals       30 117.69   3.923                          
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response recommend :
##                 Df Sum Sq Mean Sq F value     Pr(>F)    
## drive            1 210.25 210.250 26.9840 0.00001345 ***
## condition:drive  1  16.00  16.000  2.0535     0.1622    
## Residuals       30 233.75   7.792                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response rideagain :
##                 Df Sum Sq Mean Sq F value      Pr(>F)    
## drive            1 5.0625  5.0625 31.1538 0.000004513 ***
## condition:drive  1 0.0625  0.0625  0.3846      0.5398    
## Residuals       30 4.8750  0.1625                        
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response safe :
##                 Df  Sum Sq Mean Sq F value         Pr(>F)    
## drive            1 306.250 306.250 66.2461 0.000000004375 ***
## condition:drive  1  18.062  18.062  3.9072        0.05734 .  
## Residuals       30 138.688   4.623                           
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response satisfaction :
##                 Df  Sum Sq Mean Sq F value     Pr(>F)    
## drive            1 141.016 141.016 24.6002 0.00002609 ***
## condition:drive  1  34.516  34.516  6.0213    0.02016 *  
## Residuals       30 171.969   5.732                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response speed :
##                 Df  Sum Sq Mean Sq F value        Pr(>F)    
## drive            1 141.016 141.016 51.7686 0.00000005242 ***
## condition:drive  1   9.766   9.766  3.5851       0.06798 .  
## Residuals       30  81.719   2.724                          
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
##  Response style :
##                 Df  Sum Sq Mean Sq F value       Pr(>F)    
## drive            1 315.062 315.062 38.6777 0.0000007569 ***
## condition:drive  1  10.563  10.563  1.2967       0.2638    
## Residuals       30 244.375   8.146                         
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
results<- lapply(modUnivariate, function(x) {
  x<- round(x, 3);
  dfError<- x['Residuals', 1];
  x$results<- paste0('Effect of ', row.names(x), ' is ', ifelse(x[[5]]>0.05, "not significant", "significant"), 
                     ': F(', x[[1]], ', ', dfError, ') = ', x[[4]], 
                     ', p ', ifelse(x[[5]]==0, "< 0.001", paste("=", x[[5]])), '.');
  # return(paste(x$results[1:nrow(x)-1], collapse=' '));
  return(x$results[1:nrow(x)-1]);
});
results
## $` Response buy`
## [1] "Effect of drive           is significant: F(1, 30) = 28.009, p < 0.001."   
## [2] "Effect of condition:drive is not significant: F(1, 30) = 2.002, p = 0.167."
## 
## $` Response competent`
## [1] "Effect of drive           is significant: F(1, 30) = 26.115, p < 0.001."  
## [2] "Effect of condition:drive is not significant: F(1, 30) = 0.863, p = 0.36."
## 
## $` Response lawAbiding`
## [1] "Effect of drive           is significant: F(1, 30) = 51.763, p < 0.001."   
## [2] "Effect of condition:drive is not significant: F(1, 30) = 1.593, p = 0.217."
## 
## $` Response recommend`
## [1] "Effect of drive           is significant: F(1, 30) = 26.984, p < 0.001."   
## [2] "Effect of condition:drive is not significant: F(1, 30) = 2.053, p = 0.162."
## 
## $` Response rideagain`
## [1] "Effect of drive           is significant: F(1, 30) = 31.154, p < 0.001."  
## [2] "Effect of condition:drive is not significant: F(1, 30) = 0.385, p = 0.54."
## 
## $` Response safe`
## [1] "Effect of drive           is significant: F(1, 30) = 66.246, p < 0.001."   
## [2] "Effect of condition:drive is not significant: F(1, 30) = 3.907, p = 0.057."
## 
## $` Response satisfaction`
## [1] "Effect of drive           is significant: F(1, 30) = 24.6, p < 0.001."
## [2] "Effect of condition:drive is significant: F(1, 30) = 6.021, p = 0.02."
## 
## $` Response speed`
## [1] "Effect of drive           is significant: F(1, 30) = 51.769, p < 0.001."   
## [2] "Effect of condition:drive is not significant: F(1, 30) = 3.585, p = 0.068."
## 
## $` Response style`
## [1] "Effect of drive           is significant: F(1, 30) = 38.678, p < 0.001."   
## [2] "Effect of condition:drive is not significant: F(1, 30) = 1.297, p = 0.264."


4. Graphs

fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=condition, y=rating, colour=firstDrive)) + 
  stat_summary(fun.y = mean, geom="point") +
  stat_summary(fun.y = mean, geom="line", aes(group=firstDrive)) + 
  stat_summary(fun.data = mean_cl_boot, geom="errorbar", width=0.2) +
  labs(x = "Condition", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_colour_manual("firstDrive", values=c("steelblue", "black")) + 
  scale_y_continuous(limits=c(1, 10), breaks=seq(1, 10, by=1));

Figure 6 Graph of interaction between condition and firstDrive


fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=drive, y=rating, colour=firstDrive)) + 
  stat_summary(fun.y = mean, geom="point") +
  stat_summary(fun.y = mean, geom="line", aes(group=firstDrive)) + 
  stat_summary(fun.data = mean_cl_boot, geom="errorbar", width=0.2) +
  labs(x = "Drive", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_colour_manual("firstDrive", values=c("steelblue", "black")) + 
  scale_y_continuous(limits=c(1, 10), breaks=seq(1, 10, by=1));

Figure 7 Graph of interaction between drive and firstDrive


fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=condition, y=rating, colour=drive)) + 
  stat_summary(fun.y = mean, geom="point") +
  stat_summary(fun.y = mean, geom="line", aes(group=drive)) + 
  stat_summary(fun.data = mean_cl_boot, geom="errorbar", width=0.2) +
  labs(x = "Condition", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_colour_manual("Drive", values=c("steelblue", "black")) + 
  scale_y_continuous(limits=c(1, 10), breaks=seq(1, 10, by=1));

Figure 8 Graph of interaction between condition and drive


fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=drive, y=rating, colour=condition)) + 
  stat_summary(fun.y = mean, geom="point") +
  stat_summary(fun.y = mean, geom="line", aes(group=condition)) + 
  stat_summary(fun.data = mean_cl_boot, geom="errorbar", width=0.2) +
  labs(x = "Drive", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_colour_manual("Condition", values=c("steelblue", "black")) + 
  scale_y_continuous(limits=c(1, 10), breaks=seq(1, 10, by=1));

Figure 9 Graph of interaction between condition and drive


fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=firstDrive, y=rating, colour=drive)) + 
  stat_summary(fun.y = mean, geom="point") +
  stat_summary(fun.y = mean, geom="line", aes(group=drive)) + 
  stat_summary(fun.data = mean_cl_boot, geom="errorbar", width=0.2) +
  labs(x = "First Drive", y = "Average Rating") +
  facet_grid(. ~ condition) +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_colour_manual("Drive", values=c("steelblue", "black"), labels=(c('passive', 'aggressive'))) + 
  scale_x_discrete(labels=c('passive first', 'aggressive first')) +
  scale_y_continuous(limits=c(1, 10), breaks=seq(1, 10, by=1));

Figure 10 Graphs showing the condition by drive interaction for passive-first and aggressive-first drivers. Lines represent passive drive (light blue) and aggressive drive (dark blue)


fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=firstDrive, y=rating)) + 
  stat_summary(fun.y = mean, geom = "bar", fill = "White", colour = "Black") + 
  stat_summary(fun.data = mean_cl_normal, geom = "pointrange") +
  labs(x = "First Drive", y = "Average Rating") +
  scale_x_discrete(labels=c('passive', 'aggressive')) +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_y_continuous(limits=c(0, 10), breaks=seq(0, 10, by=1));

Figure 11 Error bar graph of the main effect of firstDrive


fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=drive, y=rating)) + 
  stat_summary(fun.y = mean, geom = "bar", fill = "White", colour = "Black") + 
  stat_summary(fun.data = mean_cl_normal, geom = "pointrange") +
  labs(x = "Drive", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_y_continuous(limits=c(0, 10), breaks=seq(0, 10, by=1));

Figure 12 Error bar graph of the main effect of drive


fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=condition, y=rating)) + 
  stat_summary(fun.y = mean, geom = "bar", fill = "White", colour = "Black") + 
  stat_summary(fun.data = mean_cl_normal, geom = "pointrange") +
  labs(x = "Condition", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_y_continuous(limits=c(0, 10), breaks=seq(0, 10, by=1));

Figure 13 Error bar graph of the main effect of condition


Repeated-Measures ANOVA

DV: average rating (include ‘rideagain’)

IV: drive(within subject), condition(between subject)

1. Descriptive Stats

# levels(data.ratingsAverage1$firstDrive)<- c('passFirst', 'aggFirst');
by(data.ratingsAverage$rating, list(data.ratingsAverage$drive), stat.desc, basic = FALSE)
## : pass
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.2222222    2.6354167    0.2453893    0.5004748    1.9269091 
##      std.dev     coef.var 
##    1.3881315    0.5267218 
## -------------------------------------------------------- 
## : agg
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.8888889    5.6666667    0.2832349    0.5776614    2.5671047 
##      std.dev     coef.var 
##    1.6022187    0.2827445
by(data.ratingsAverage$rating, list(data.ratingsAverage$drive, data.ratingsAverage$condition), stat.desc, basic = FALSE)
## : pass
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.0000000    2.2083333    0.1641398    0.3498557    0.4310700 
##      std.dev     coef.var 
##    0.6565592    0.2973098 
## -------------------------------------------------------- 
## : agg
## : untimed
##       median         mean      SE.mean CI.mean.0.95          var 
##    5.8888889    6.0208333    0.2596331    0.5533948    1.0785494 
##      std.dev     coef.var 
##    1.0385323    0.1724898 
## -------------------------------------------------------- 
## : pass
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##    2.5000000    3.0625000    0.4445566    0.9475499    3.1620885 
##      std.dev     coef.var 
##    1.7782262    0.5806453 
## -------------------------------------------------------- 
## : agg
## : timed
##       median         mean      SE.mean CI.mean.0.95          var 
##     5.611111     5.312500     0.497444     1.060277     3.959208 
##      std.dev     coef.var 
##     1.989776     0.374546
# by(data.ratingsAverage$rating, list(data.ratingsAverage$drive, data.ratingsAverage$order), stat.desc, basic = FALSE)
# by(data.ratingsAverage$rating, list(data.ratingsAverage$drive, data.ratingsAverage$condition, data.ratingsAverage$order), stat.desc, basic = FALSE)


2. Construct Contrasts

contrasts(data.ratingsAverage$drive)<- contr.helmert(2) #=c(-1, 1), passive=-1, aggresive=1
contrasts(data.ratingsAverage$condition)<- contr.helmert(2) #=c(-1, 1), untimed=-1, timed=1
contrasts(data.ratingsAverage$order)<- contr.helmert(2) #=c(-1, 1), first=-1, second=1
contrasts(data.ratingsAverage$firstDrive)<- contr.helmert(2) #=c(-1, 1), passFirst=-1, aggFirst=1
attr(data.ratingsAverage$drive, 'contrasts'); attr(data.ratingsAverage$condition, 'contrasts');
attr(data.ratingsAverage$order, 'contrasts'); attr(data.ratingsAverage$firstDrive, 'contrasts');


3. ANOVA

model1<-ezANOVA(data = data.ratingsAverage, dv = .(rating), wid = .(ss), 
                    between = .(condition), within = .(drive), 
                    type = 3, detailed = TRUE); #or type=2(default), type=1, specifying the Sums of Squares "type"
n<- nrow(model1[["ANOVA"]]);
df<- model1[["ANOVA"]][c(2:n), c('DFn', 'DFd')];
p<- round(model1[["ANOVA"]][c(2:n), 'p'], 3);
f<- round(model1[["ANOVA"]][c(2:n), 'F'], 3);
etaSQ<- round(model1[["ANOVA"]][c(2:n), 'ges'], 3); # generalized eta-squared
row.names(df)<- model1[["ANOVA"]][c(2:n), 'Effect'];
names(p)<- names(f)<- names(etaSQ)<- model1[["ANOVA"]][c(2:n), 'Effect'];

if(any(grep('Sphericity', names(model1)))) {
  pMauchly<- round(model1[["Mauchly's Test for Sphericity"]]$p, 3);
  if (any(pMauchly<=0.05)) {
    msgMauchly<- "Where violations of sphericity were indicated by Mauchly's Test, degrees of freedom have been adjusted using the Greenhouse-Geisser correction.";
    GGe<- round(model1[["Sphericity Corrections"]]$GGe, 3);
    names(pMauchly)<- names(GGe)<- model1[["Sphericity Corrections"]]$Effect;
    for (i in 1:length(GGe)) {
      v<- names(GGe[i])
      if (pMauchly[v]<=0.05) {
        df[v,]<-df[v,]*GGe[v];
        p[v]<- pMauchly[v];
      }
    }
  } else { msgMauchly<- "" }
} else { msgMauchly<- "" }
model1;
## $ANOVA
##            Effect DFn DFd           SSn      SSd           F
## 1     (Intercept)   1  30 1102.79340278 54.15239 610.9388870
## 2       condition   1  30    0.08506944 54.15239   0.0471278
## 3           drive   1  30  147.01562500 75.31134  58.5631407
## 4 condition:drive   1  30    9.76562500 75.31134   3.8901013
##                               p p<.05          ges
## 1 0.000000000000000000001675235     * 0.8949377280
## 2 0.829608332673397952383709253       0.0006566594
## 3 0.000000015519897797940396229     * 0.5317417735
## 4 0.057851210232398718458224351       0.0701405582

Interaction of condition and drive was not significant, F(1, 30) = 3.89, p = 0.058, \(\eta^2\) = 0.07.

Main effect of condition was not significant, F(1, 30) = 0.047, p = 0.83, \(\eta^2\) = 0.001.

Main effect of drive was significant, F(1, 30) = 58.563, p < 0.001, \(\eta^2\) = 0.532.


4. Graphs



fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=condition, y=rating, colour=drive)) + 
  stat_summary(fun.y = mean, geom="point") +
  stat_summary(fun.y = mean, geom="line", aes(group=drive)) + 
  stat_summary(fun.data = mean_cl_boot, geom="errorbar", width=0.2) +
  labs(x = "Condition", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_colour_manual("Drive", values=c("steelblue", "black")) + 
  scale_y_continuous(limits=c(1, 10), breaks=seq(1, 10, by=1));

Figure 6 Graph of interaction between condition and drive I


fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=drive, y=rating, colour=condition)) + 
  stat_summary(fun.y = mean, geom="point") +
  stat_summary(fun.y = mean, geom="line", aes(group=condition)) + 
  stat_summary(fun.data = mean_cl_boot, geom="errorbar", width=0.2) +
  labs(x = "Drive", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_colour_manual("Condition", values=c("steelblue", "black")) + 
  scale_y_continuous(limits=c(1, 10), breaks=seq(1, 10, by=1));

Figure 7 Graph of interaction between condition and drive II




fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=drive, y=rating)) + 
  stat_summary(fun.y = mean, geom = "bar", fill = "White", colour = "Black") + 
  stat_summary(fun.data = mean_cl_normal, geom = "pointrange") +
  labs(x = "Drive", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_y_continuous(limits=c(0, 10), breaks=seq(0, 10, by=1));

Figure 8 Error bar graph of the main effect of drive


fnum=fnum+1;
ggplot(data.ratingsAverage, aes(x=condition, y=rating)) + 
  stat_summary(fun.y = mean, geom = "bar", fill = "White", colour = "Black") + 
  stat_summary(fun.data = mean_cl_normal, geom = "pointrange") +
  labs(x = "Condition", y = "Average Rating") +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  scale_y_continuous(limits=c(0, 10), breaks=seq(0, 10, by=1));

Figure 9 Error bar graph of the main effect of condition