aovRTloc_F2$means
# Valence words only
datAggVPval       <- datAggVP[datAggVP$WordGroup == "Valence", ]
aovRTval_F1       <- ezANOVA(datAggVPval, dv = .(rtVP), wid = .(VP), within = .(RespDir, Valence ), return_aov = TRUE)
aovRTval_F1$means <- model.tables(aovRTval_F1$aov, type = "mean")
aovRTval_F1$ANOVA
aovRTval_F1$means
datAggItemVal      <- datAggItem[datAggItem$WordGroup == "Valence", ]
datAggItemVal$Wort <- factor(datAggItemVal$Wort)
aovRTval_F2        <- ezANOVA(datAggItemVal, dv = .(rtItem), wid = .(Wort), within = .(RespDir), between = .(Valence), return_aov = TRUE)
aovRTval_F2$means  <- model.tables(aovRTval_F2$aov, type = "mean")
aovRTval_F2$ANOVA
aovRTval_F2$means
# ANOVA Error analysis
aovErr_F1       <- ezANOVA(datAggVP, dv = .(perErrorVP), wid = .(VP), within = .(RespDir, Valence, WordGroup), return_aov = TRUE)
aovErr_F1$means <- model.tables(aovRT_F1$aov, type = "mean")
aovErr_F1$ANOVA
aovErr_F1$means
aovErr_F2       <- ezANOVA(datAggItem, dv = .(perErrorItem), wid = .(Wort), within = .(RespDir), between = .(WordGroup, Valence), return_aov = TRUE)
aovErr_F2$means <- model.tables(aovRT_F2$aov, type = "mean")
aovErr_F2$ANOVA
aovErr_F2$means
aovRTval_F1$ANOVA
aovRTval_F2$ANOVA
# What's up? Emotion-specific activation of vertical space during language processing
# Experiment 4
# R version 3.2.2
# clear everything
rm(list = ls())
# packages
library("dplyr")
library("ez")
# read combined vp final datafile
dataDir <- "~/Desktop/Emo/Exp4/"
dat     <- read.table(file = paste0(dataDir, "exp4.txt"), header=TRUE, encoding="utf-8")
# create factors
dat$VP        <- factor(dat$VP)
dat$Wort      <- factor(dat$Wort)
dat$Valence   <- factor(dat$Valence)
dat$WordGroup <- factor(dat$WordGroup)
dat$RespDir   <- factor(dat$RespDir)
# code outliers + correct/error trials
dat$isOutlier  <- ifelse(dat$RT_Release < 100 | dat$RT_Release > mean(dat$RT_Release[dat$isError == 0]) + 3*sd(dat$RT_Release[dat$isError == 0]), 1, 0)
dat$isExcluded <- ifelse(dat$isError | dat$isOutlier, 1, 0)
# percentage of removed trials
perOutlier <- (sum(dat$isOutlier)/nrow(dat))*100
perError   <- (sum(dat$isError)/nrow(dat))*100
# aggregate data over trials
datAggVP <- dat %>%
group_by(VP, RespDir, Valence, WordGroup) %>%
summarize(nTotalVP     = n(),
rtVP         = mean(RT_Release[isExcluded == 0]),
nErrorVP     = sum(isError),
nOutlierVP   = sum(isOutlier),
perErrorVP   = (nErrorVP/nTotalVP)*100,
perOutlierVP = (nOutlierVP/nTotalVP)/100)
# aggregate data over trials
datAggItem <- dat %>%
group_by(Wort, RespDir, Valence, WordGroup) %>%
summarize(nTotalItem     = n(),
rtItem         = mean(RT_Release[isExcluded == 0]),
nErrorItem     = sum(isError),
nOutlierItem   = sum(isOutlier),
perErrorItem   = (nErrorItem/nTotalItem)*100,
perOutlierItem = (nOutlierItem/nTotalItem)/100)
# aggregate data over vps
datAgg <- datAggVP %>%
group_by(RespDir, Valence, WordGroup) %>%
summarize(nTotal   = n(),
Rt       = mean(rtVP),
sdRt     = sd(rtVP),
seRt     = sdRt/sqrt(nTotal),
perError = mean(perErrorVP),
sdError  = sd(perErrorVP),
seError  = sdError/sqrt(nTotal))
# ANOVA RT analysis
datAggVP       <- as.data.frame(datAggVP)
aovRT_F1       <- ezANOVA(datAggVP, dv = .(rtVP), wid = .(VP), within = .(RespDir, Valence, WordGroup), return_aov = TRUE)
aovRT_F1$means <- model.tables(aovRT_F1$aov, type = "mean")
aovRT_F1$ANOVA
aovRT_F1$means
datAggItem     <- as.data.frame(datAggItem)
aovRT_F2       <- ezANOVA(datAggItem, dv = .(rtItem), wid = .(Wort), within = .(RespDir), between = .(WordGroup, Valence), return_aov = TRUE)
aovRT_F2$means <- model.tables(aovRT_F2$aov, type = "mean")
aovRT_F2$ANOVA
aovRT_F2$means
# Posture words only
datAggVPpos       <- datAggVP[datAggVP$WordGroup == "Posture", ]
aovRTpos_F1       <- ezANOVA(datAggVPpos, dv = .(rtVP), wid = .(VP), within = .(RespDir, Valence ), return_aov = TRUE)
aovRTpos_F1$means <- model.tables(aovRTpos_F1$aov, type = "mean")
aovRTpos_F1$ANOVA
aovRTpos_F1$means
datAggItemPos      <- datAggItem[datAggItem$WordGroup == "Posture", ]
datAggItemPos$Wort <- factor(datAggItemPos$Wort)
aovRTpos_F2        <- ezANOVA(datAggItemPos, dv = .(rtItem), wid = .(Wort), within = .(RespDir), between = .(Valence), return_aov = TRUE)
aovRTpos_F2$means  <- model.tables(aovRTpos_F2$aov, type = "mean")
aovRTpos_F2$ANOVA
aovRTpos_F2$means
# Non-posture words only
datAggVPval       <- datAggVP[datAggVP$WordGroup == "Non-Posture", ]
aovRTpos_F1       <- ezANOVA(datAggVPval, dv = .(rtVP), wid = .(VP), within = .(RespDir, Valence ), return_aov = TRUE)
aovRTpos_F1$means <- model.tables(aovRTpos_F1$aov, type = "mean")
aovRTpos_F1$ANOVA
aovRTpos_F1$means
datAggItemVal      <- datAggItem[datAggItem$WordGroup == "Non-Posture", ]
datAggItemVal$Wort <- factor(datAggItemVal$Wort)
aovRTnpos_F2        <- ezANOVA(datAggItemVal, dv = .(rtItem), wid = .(Wort), within = .(RespDir), between = .(Valence), return_aov = TRUE)
aovRTnpos_F2$means  <- model.tables(aovRTnpos_F2$aov, type = "mean")
aovRTnpos_F2$ANOVA
aovRTnpos_F2$means
# ANOVA Error analysis
aovErr_F1       <- ezANOVA(datAggVP, dv = .(perErrorVP), wid = .(VP), within = .(RespDir, Valence, WordGroup), return_aov = TRUE)
aovErr_F1$means <- model.tables(aovRT_F1$aov, type = "mean")
aovErr_F1$ANOVA
aovErr_F1$means
aovErr_F2       <- ezANOVA(datAggItem, dv = .(perErrorItem), wid = .(Wort), within = .(RespDir), between = .(WordGroup, Valence), return_aov = TRUE)
aovErr_F2$means <- model.tables(aovRT_F2$aov, type = "mean")
aovErr_F2$ANOVA
aovErr_F2$means
# Posture words only
datAggVPpos        <- datAggVP[datAggVP$WordGroup == "Non-Posture", ]
aovErrPos_F1       <- ezANOVA(datAggVPpos, dv = .(rtVP), wid = .(VP), within = .(RespDir, Valence ), return_aov = TRUE)
aovErrPos_F1$means <- model.tables(aovRTpos_F1$aov, type = "mean")
aovErrPos_F1$ANOVA
aovErrPos_F1$means
datAggItemPos      <- datAggItem[datAggItem$WordGroup == "Non-Posture", ]
datAggItemPos$Wort <- factor(datAggItemPos$Wort)
aovRTnpos_F2       <- ezANOVA(datAggItemVal, dv = .(rtItem), wid = .(Wort), within = .(RespDir), between = .(Valence), return_aov = TRUE)
aovRTnpos_F2$means <- model.tables(aovRTnpos_F2$aov, type = "mean")
aovRTnpos_F2$ANOVA
aovRTnpos_F2$means
# Non-posture words only
datAggVPpos        <- datAggVP[datAggVP$WordGroup == "Non-Posture", ]
aovErrPos_F1       <- ezANOVA(datAggVPpos, dv = .(rtVP), wid = .(VP), within = .(RespDir, Valence ), return_aov = TRUE)
aovErrPos_F1$means <- model.tables(aovRTpos_F1$aov, type = "mean")
aovErrPos_F1$ANOVA
aovErrPos_F1$means
datAggItemPos      <- datAggItem[datAggItem$WordGroup == "Non-Posture", ]
datAggItemPos$Wort <- factor(datAggItemPos$Wort)
aovRTnpos_F2        <- ezANOVA(datAggItemPos, dv = .(rtItem), wid = .(Wort), within = .(RespDir), between = .(Valence), return_aov = TRUE)
aovRTnpos_F2$means  <- model.tables(aovRTnpos_F2$aov, type = "mean")
aovRTnpos_F2$ANOVA
aovRTnpos_F2$means
aovRTpos_F1$ANOVA
aovRT_F1$ANOVA
aovErr_F1$ANOVA
aovErr_F2$ANOVA
# "R version 3.2.4 (2016-03-10)"
# clear everything
rm(list = ls())
# packages
# install.packages("dplyr")
# install.packages("ez")
# install.packages("cowplot")
# install.packages("ggplot2")
# load packages
library("dplyr")
library("ez")
library("cowplot")
library("ggplot2")
# data dir
setwd("/Users/Carolin/Documents/Work/MS/5keys/JEP_LML_Data/exp2")
dat <- read.table("exp2data.txt", header=TRUE)
# remove practise trials
dat <- dat[dat$practice != 1,]
# data structure
str(dat)
# change vp/word number to factor
dat$vpNum      <- factor(dat$vpNum)
dat$wordNumber <- factor(dat$wordNumber)
# vp info
table(dat$vpGender[!duplicated(dat$vpNum)])
mean(dat$vpAge[!duplicated(dat$vpNum)])
sd(dat$vpAge[!duplicated(dat$vpNum)])
table(dat$vpHandedness[!duplicated(dat$vpNum)])
# dependent variable
# dat$dv <- dat$releaseTime  # time VP releases centre key
dat$dv <- dat$respTime   # time VP presses respionse key
# reaction time is to colour onset so need to subtract 100ms
dat$dv <- dat$dv - 100
# correct vs. incorrect trials and too slow/too fast
# outliers criterion?
hist(dat$dv, 100)
rtMin <- 200
rtMax <- 1600
dat$isCorrect <- ifelse(dat$correct == 1 & dat$dv > rtMin & dat$dv < rtMax, 1, 0)
dat$isError   <- ifelse(dat$correct == 2 & dat$dv > rtMin & dat$dv < rtMax, 1, 0)
dat$isSlow    <- ifelse(dat$correct == 3 | dat$dv > rtMax, 1, 0)
dat$isFast    <- ifelse(dat$correct == 4 | dat$dv < rtMin,  1, 0)
perError <- (sum(dat$isError)/nrow(dat))*100
perFast  <- (sum(dat$isFast)/nrow(dat))*100
perSlow  <- (sum(dat$isSlow)/nrow(dat))*100
hist(dat$dv[dat$isCorrect == 1], 100)
# VP data overall RT and Error Rate
aggregate(dv ~ vpNum, dat[dat$isCorrect == 1,], mean)
table(dat$vpNum, dat$correct)
################################################################################
# RTs: word direction x response direction vertical dimension
datAggVP <- dat %>%
filter(responseDimension == "Vertical") %>%
group_by(vpNum, wordPosition, targetLocation) %>%
summarize(nTotalVP     = n(),
nCorrectVP   = sum(isCorrect),
rtVP         = mean(dv[isCorrect ==1]),
nErrorVP     = sum(isError),
nOutlierVP   = sum(isSlow + isFast),
perErrorVP   = (nErrorVP/nTotalVP)*100,
perOutlierVP = (nOutlierVP/nTotalVP)/100)
datAggWord <- dat %>%
filter(responseDimension == "Vertical") %>%
group_by(wordNumber, wordPosition, targetLocation) %>%
summarize(nTotalWord     = n(),
nCorrectWord   = sum(isCorrect),
rtWord         = mean(dv[isCorrect ==1]),
nErrorWord     = sum(isError),
nOutlierWord   = sum(isSlow + isFast),
perErrorWord   = (nErrorWord/nTotalWord)*100,
perOutlierWord = (nOutlierWord/nTotalWord)/100)
# grand means
datAggF1 <- datAggVP %>%
group_by(wordPosition, targetLocation) %>%
summarize(nTotal  = n(),
rt      = mean(rtVP),
sdRT    = sd(rtVP),
seRT    = sdRT/sqrt(nTotal),
error   = mean(perErrorVP),
sdError = sd(perErrorVP),
seError = sdError/sqrt(nTotal))
datAggF2 <- datAggWord %>%
group_by(wordPosition, targetLocation) %>%
summarize(nTotal  = n(),
rt      = mean(rtWord),
sdRT    = sd(rtWord),
seRT    = sdRT/sqrt(nTotal),
error   = mean(perErrorWord),
sdError = sd(perErrorWord),
seError = sdError/sqrt(nTotal))
# ANOVA RT analysis
datAggVP           <- as.data.frame(datAggVP)
aovRT_F1           <- ezANOVA(datAggVP, dv = .(rtVP), wid = .(vpNum), within = .(wordPosition, targetLocation), return_aov = TRUE)
aovRT_F1$ANOVA$ges <- NULL
aovRT_F1$ANOVA$pes <- aovRT_F1$ANOVA$DFn*aovRT_F1$ANOVA$F/((aovRT_F1$ANOVA$DFn*aovRT_F1$ANOVA$F) + aovRT_F1$ANOVA$DFd)
aovRT_F1$means     <- model.tables(aovRT_F1$aov, type = "mean")
aovErr_F1           <- ezANOVA(datAggVP, dv = .(perErrorVP), wid = .(vpNum), within = .(wordPosition, targetLocation), return_aov = TRUE)
aovErr_F1$ANOVA$ges <- NULL
aovErr_F1$ANOVA$pes <- aovErr_F1$ANOVA$DFn*aovErr_F1$ANOVA$F/((aovErr_F1$ANOVA$DFn*aovErr_F1$ANOVA$F) + aovErr_F1$ANOVA$DFd)
aovErr_F1$means     <- model.tables(aovErr_F1$aov, type = "mean")
datAggWord            <- as.data.frame(datAggWord)
aovRT_F2              <- ezANOVA(datAggWord, dv = .(rtWord), wid = .(wordNumber), between = .(wordPosition), within = .(targetLocation), return_aov = TRUE)
aovRT_F2$ANOVA$ges    <- NULL
aovRT_F2$ANOVA$pes    <- aovRT_F2$ANOVA$DFn*aovRT_F2$ANOVA$F/((aovRT_F2$ANOVA$DFn*aovRT_F2$ANOVA$F) + aovRT_F2$ANOVA$DFd)
aovRT_F2$means        <- model.tables(aovRT_F2$aov, type = "mean")
aovErr_F2           <- ezANOVA(datAggWord, dv = .(perErrorWord), wid = .(wordNumber), between = .(wordPosition), within = .(targetLocation), return_aov = TRUE)
aovErr_F2$ANOVA$ges <- NULL
aovErr_F2$ANOVA$pes <- aovErr_F2$ANOVA$DFn*aovErr_F2$ANOVA$F/((aovErr_F2$ANOVA$DFn*aovErr_F2$ANOVA$F) + aovErr_F2$ANOVA$DFd)
aovErr_F2$means     <- model.tables(aovErr_F2$aov, type = "mean")
# calculate lofties
#### test lofties: check that added on both sides
dat <- subset (datAggVP, targetLocation != "Up",)
#aov_RT <- aov(AV ~ UV1*UV2 + Error(Between-Factors/(Within-Factor1-UV1*Within-Factor2-UV2)), datAggVP)
aov_RT <- aov(rtVP ~ wordPosition + Error(vpNum/(wordPosition)), datAggVP)
summary(aov_RT)
model.tables(aov_RT, "means")
# "R version 3.2.4 (2016-03-10)"
# clear everything
rm(list = ls())
# packages
# install.packages("dplyr")
# install.packages("ez")
# install.packages("cowplot")
# install.packages("ggplot2")
# load packages
library("dplyr")
library("ez")
library("cowplot")
library("ggplot2")
# data dir
setwd("/Users/Carolin/Documents/Work/MS/5keys/JEP_LML_Data/exp2")
dat <- read.table("exp2data.txt", header=TRUE)
# remove practise trials
dat <- dat[dat$practice != 1,]
# data structure
str(dat)
# change vp/word number to factor
dat$vpNum      <- factor(dat$vpNum)
dat$wordNumber <- factor(dat$wordNumber)
# vp info
table(dat$vpGender[!duplicated(dat$vpNum)])
mean(dat$vpAge[!duplicated(dat$vpNum)])
sd(dat$vpAge[!duplicated(dat$vpNum)])
table(dat$vpHandedness[!duplicated(dat$vpNum)])
# dependent variable
# dat$dv <- dat$releaseTime  # time VP releases centre key
dat$dv <- dat$respTime   # time VP presses respionse key
# reaction time is to colour onset so need to subtract 100ms
dat$dv <- dat$dv - 100
# correct vs. incorrect trials and too slow/too fast
# outliers criterion?
hist(dat$dv, 100)
rtMin <- 200
rtMax <- 1600
dat$isCorrect <- ifelse(dat$correct == 1 & dat$dv > rtMin & dat$dv < rtMax, 1, 0)
dat$isError   <- ifelse(dat$correct == 2 & dat$dv > rtMin & dat$dv < rtMax, 1, 0)
dat$isSlow    <- ifelse(dat$correct == 3 | dat$dv > rtMax, 1, 0)
dat$isFast    <- ifelse(dat$correct == 4 | dat$dv < rtMin,  1, 0)
perError <- (sum(dat$isError)/nrow(dat))*100
perFast  <- (sum(dat$isFast)/nrow(dat))*100
perSlow  <- (sum(dat$isSlow)/nrow(dat))*100
hist(dat$dv[dat$isCorrect == 1], 100)
# VP data overall RT and Error Rate
aggregate(dv ~ vpNum, dat[dat$isCorrect == 1,], mean)
table(dat$vpNum, dat$correct)
################################################################################
# RTs: word direction x response direction vertical dimension
datAggVP <- dat %>%
filter(responseDimension == "Vertical") %>%
group_by(vpNum, wordPosition, targetLocation) %>%
summarize(nTotalVP     = n(),
nCorrectVP   = sum(isCorrect),
rtVP         = mean(dv[isCorrect ==1]),
nErrorVP     = sum(isError),
nOutlierVP   = sum(isSlow + isFast),
perErrorVP   = (nErrorVP/nTotalVP)*100,
perOutlierVP = (nOutlierVP/nTotalVP)/100)
datAggWord <- dat %>%
filter(responseDimension == "Vertical") %>%
group_by(wordNumber, wordPosition, targetLocation) %>%
summarize(nTotalWord     = n(),
nCorrectWord   = sum(isCorrect),
rtWord         = mean(dv[isCorrect ==1]),
nErrorWord     = sum(isError),
nOutlierWord   = sum(isSlow + isFast),
perErrorWord   = (nErrorWord/nTotalWord)*100,
perOutlierWord = (nOutlierWord/nTotalWord)/100)
# grand means
datAggF1 <- datAggVP %>%
group_by(wordPosition, targetLocation) %>%
summarize(nTotal  = n(),
rt      = mean(rtVP),
sdRT    = sd(rtVP),
seRT    = sdRT/sqrt(nTotal),
error   = mean(perErrorVP),
sdError = sd(perErrorVP),
seError = sdError/sqrt(nTotal))
datAggF2 <- datAggWord %>%
group_by(wordPosition, targetLocation) %>%
summarize(nTotal  = n(),
rt      = mean(rtWord),
sdRT    = sd(rtWord),
seRT    = sdRT/sqrt(nTotal),
error   = mean(perErrorWord),
sdError = sd(perErrorWord),
seError = sdError/sqrt(nTotal))
# ANOVA RT analysis
datAggVP           <- as.data.frame(datAggVP)
aovRT_F1           <- ezANOVA(datAggVP, dv = .(rtVP), wid = .(vpNum), within = .(wordPosition, targetLocation), return_aov = TRUE)
aovRT_F1$ANOVA$ges <- NULL
aovRT_F1$ANOVA$pes <- aovRT_F1$ANOVA$DFn*aovRT_F1$ANOVA$F/((aovRT_F1$ANOVA$DFn*aovRT_F1$ANOVA$F) + aovRT_F1$ANOVA$DFd)
aovRT_F1$means     <- model.tables(aovRT_F1$aov, type = "mean")
aovErr_F1           <- ezANOVA(datAggVP, dv = .(perErrorVP), wid = .(vpNum), within = .(wordPosition, targetLocation), return_aov = TRUE)
aovErr_F1$ANOVA$ges <- NULL
aovErr_F1$ANOVA$pes <- aovErr_F1$ANOVA$DFn*aovErr_F1$ANOVA$F/((aovErr_F1$ANOVA$DFn*aovErr_F1$ANOVA$F) + aovErr_F1$ANOVA$DFd)
aovErr_F1$means     <- model.tables(aovErr_F1$aov, type = "mean")
datAggWord            <- as.data.frame(datAggWord)
aovRT_F2              <- ezANOVA(datAggWord, dv = .(rtWord), wid = .(wordNumber), between = .(wordPosition), within = .(targetLocation), return_aov = TRUE)
aovRT_F2$ANOVA$ges    <- NULL
aovRT_F2$ANOVA$pes    <- aovRT_F2$ANOVA$DFn*aovRT_F2$ANOVA$F/((aovRT_F2$ANOVA$DFn*aovRT_F2$ANOVA$F) + aovRT_F2$ANOVA$DFd)
aovRT_F2$means        <- model.tables(aovRT_F2$aov, type = "mean")
aovErr_F2           <- ezANOVA(datAggWord, dv = .(perErrorWord), wid = .(wordNumber), between = .(wordPosition), within = .(targetLocation), return_aov = TRUE)
aovErr_F2$ANOVA$ges <- NULL
aovErr_F2$ANOVA$pes <- aovErr_F2$ANOVA$DFn*aovErr_F2$ANOVA$F/((aovErr_F2$ANOVA$DFn*aovErr_F2$ANOVA$F) + aovErr_F2$ANOVA$DFd)
aovErr_F2$means     <- model.tables(aovErr_F2$aov, type = "mean")
# calculate lofties
#### test lofties: check that added on both sides
dat <- subset (datAggVP, targetLocation != "Up",)
#aov_RT <- aov(AV ~ UV1*UV2 + Error(Between-Factors/(Within-Factor1-UV1*Within-Factor2-UV2)), datAggVP)
aov_RT <- aov(rtVP ~ wordPosition + Error(vpNum/(wordPosition)), datAggVP[datAggVP$targetLocation == "Down",])
summary(aov_RT)
# "R version 3.2.4 (2016-03-10)"
# clear everything
rm(list = ls())
# packages
# install.packages("dplyr")
# install.packages("ez")
# install.packages("cowplot")
# install.packages("ggplot2")
# load packages
library("dplyr")
library("ez")
library("cowplot")
library("ggplot2")
# data dir
setwd("/Users/Carolin/Documents/Work/MS/5keys/JEP_LML_Data/exp2")
dat <- read.table("exp2data.txt", header=TRUE)
# remove practise trials
dat <- dat[dat$practice != 1,]
# data structure
str(dat)
# change vp/word number to factor
dat$vpNum      <- factor(dat$vpNum)
dat$wordNumber <- factor(dat$wordNumber)
# vp info
table(dat$vpGender[!duplicated(dat$vpNum)])
mean(dat$vpAge[!duplicated(dat$vpNum)])
sd(dat$vpAge[!duplicated(dat$vpNum)])
table(dat$vpHandedness[!duplicated(dat$vpNum)])
# dependent variable
# dat$dv <- dat$releaseTime  # time VP releases centre key
dat$dv <- dat$respTime   # time VP presses respionse key
# reaction time is to colour onset so need to subtract 100ms
dat$dv <- dat$dv - 100
# correct vs. incorrect trials and too slow/too fast
# outliers criterion?
hist(dat$dv, 100)
rtMin <- 200
rtMax <- 1600
dat$isCorrect <- ifelse(dat$correct == 1 & dat$dv > rtMin & dat$dv < rtMax, 1, 0)
dat$isError   <- ifelse(dat$correct == 2 & dat$dv > rtMin & dat$dv < rtMax, 1, 0)
dat$isSlow    <- ifelse(dat$correct == 3 | dat$dv > rtMax, 1, 0)
dat$isFast    <- ifelse(dat$correct == 4 | dat$dv < rtMin,  1, 0)
perError <- (sum(dat$isError)/nrow(dat))*100
perFast  <- (sum(dat$isFast)/nrow(dat))*100
perSlow  <- (sum(dat$isSlow)/nrow(dat))*100
hist(dat$dv[dat$isCorrect == 1], 100)
# VP data overall RT and Error Rate
aggregate(dv ~ vpNum, dat[dat$isCorrect == 1,], mean)
table(dat$vpNum, dat$correct)
################################################################################
# RTs: word direction x response direction vertical dimension
datAggVP <- dat %>%
filter(responseDimension == "Vertical") %>%
group_by(vpNum, wordPosition, targetLocation) %>%
summarize(nTotalVP     = n(),
nCorrectVP   = sum(isCorrect),
rtVP         = mean(dv[isCorrect ==1]),
nErrorVP     = sum(isError),
nOutlierVP   = sum(isSlow + isFast),
perErrorVP   = (nErrorVP/nTotalVP)*100,
perOutlierVP = (nOutlierVP/nTotalVP)/100)
datAggWord <- dat %>%
filter(responseDimension == "Vertical") %>%
group_by(wordNumber, wordPosition, targetLocation) %>%
summarize(nTotalWord     = n(),
nCorrectWord   = sum(isCorrect),
rtWord         = mean(dv[isCorrect ==1]),
nErrorWord     = sum(isError),
nOutlierWord   = sum(isSlow + isFast),
perErrorWord   = (nErrorWord/nTotalWord)*100,
perOutlierWord = (nOutlierWord/nTotalWord)/100)
# grand means
datAggF1 <- datAggVP %>%
group_by(wordPosition, targetLocation) %>%
summarize(nTotal  = n(),
rt      = mean(rtVP),
sdRT    = sd(rtVP),
seRT    = sdRT/sqrt(nTotal),
error   = mean(perErrorVP),
sdError = sd(perErrorVP),
seError = sdError/sqrt(nTotal))
datAggF2 <- datAggWord %>%
group_by(wordPosition, targetLocation) %>%
summarize(nTotal  = n(),
rt      = mean(rtWord),
sdRT    = sd(rtWord),
seRT    = sdRT/sqrt(nTotal),
error   = mean(perErrorWord),
sdError = sd(perErrorWord),
seError = sdError/sqrt(nTotal))
# ANOVA RT analysis
datAggVP           <- as.data.frame(datAggVP)
aovRT_F1           <- ezANOVA(datAggVP, dv = .(rtVP), wid = .(vpNum), within = .(wordPosition, targetLocation), return_aov = TRUE)
aovRT_F1$ANOVA$ges <- NULL
aovRT_F1$ANOVA$pes <- aovRT_F1$ANOVA$DFn*aovRT_F1$ANOVA$F/((aovRT_F1$ANOVA$DFn*aovRT_F1$ANOVA$F) + aovRT_F1$ANOVA$DFd)
aovRT_F1$means     <- model.tables(aovRT_F1$aov, type = "mean")
aovErr_F1           <- ezANOVA(datAggVP, dv = .(perErrorVP), wid = .(vpNum), within = .(wordPosition, targetLocation), return_aov = TRUE)
aovErr_F1$ANOVA$ges <- NULL
aovErr_F1$ANOVA$pes <- aovErr_F1$ANOVA$DFn*aovErr_F1$ANOVA$F/((aovErr_F1$ANOVA$DFn*aovErr_F1$ANOVA$F) + aovErr_F1$ANOVA$DFd)
aovErr_F1$means     <- model.tables(aovErr_F1$aov, type = "mean")
datAggWord            <- as.data.frame(datAggWord)
aovRT_F2              <- ezANOVA(datAggWord, dv = .(rtWord), wid = .(wordNumber), between = .(wordPosition), within = .(targetLocation), return_aov = TRUE)
aovRT_F2$ANOVA$ges    <- NULL
aovRT_F2$ANOVA$pes    <- aovRT_F2$ANOVA$DFn*aovRT_F2$ANOVA$F/((aovRT_F2$ANOVA$DFn*aovRT_F2$ANOVA$F) + aovRT_F2$ANOVA$DFd)
aovRT_F2$means        <- model.tables(aovRT_F2$aov, type = "mean")
aovErr_F2           <- ezANOVA(datAggWord, dv = .(perErrorWord), wid = .(wordNumber), between = .(wordPosition), within = .(targetLocation), return_aov = TRUE)
aovErr_F2$ANOVA$ges <- NULL
aovErr_F2$ANOVA$pes <- aovErr_F2$ANOVA$DFn*aovErr_F2$ANOVA$F/((aovErr_F2$ANOVA$DFn*aovErr_F2$ANOVA$F) + aovErr_F2$ANOVA$DFd)
aovErr_F2$means     <- model.tables(aovErr_F2$aov, type = "mean")
# calculate lofties
#### test lofties: check that added on both sides
dat <- subset (datAggVP, targetLocation != "Up",)
#aov_RT <- aov(AV ~ UV1*UV2 + Error(Between-Factors/(Within-Factor1-UV1*Within-Factor2-UV2)), datAggVP)
#aov_RT <- aov(rtVP ~ wordPosition + Error(vpNum/(wordPosition)), datAggVP[datAggVP$targetLocation == "Down",])
aov_RT <- aov(rtVP ~ wordPosition + Error(vpNum/(wordPosition)), dat)
summary(aov_RT)
sqrt(6.59)*1.6991
sqrt(6.59)*2.0452
# calculate sqrt(MSE(residuals)/n)*criticalT
datAggF1$loft <- rep(0, times = nrow(datAggF1))
for (targetLoc in c("Down", "Up")){
tempEZ           <- ezANOVA(datAggVP[datAggVP$targetLocation == targetLoc,], dv=.(rtVP), wid = .(vpNum), within = .(wordPosition), detailed = TRUE, return_aov = TRUE)
tempEZ$ANOVA$mse <- tempEZ$ANOVA$SSd/tempEZ$ANOVA$DFd
tempCritT        <- qt(1-0.05/2, tempEZ$ANOVA$DFd[2])
lofties          <- rep(sqrt(tempEZ$ANOVA$mse[2]/(tempEZ$ANOVA$DFd[2]+1))*tempCritT, times = 2, each = 1)
datAggF1[datAggF1$targetLocation == targetLoc, ]$loft <- lofties
}
View(datAggF1)
dat <- subset (datAggVP, targetLocation != "Down",)
#aov_RT <- aov(AV ~ UV1*UV2 + Error(Between-Factors/(Within-Factor1-UV1*Within-Factor2-UV2)), datAggVP)
aov_RT <- aov(rtVP ~ wordPosition + Error(vpNum/(wordPosition)), dat)
summary(aov_RT)
sqrt(170.6/30)*2.0452
View(datAggF1)
