# Combining data from five EXPeriments # Kliegl et al. (2009, PsycholRes) # May 4, 2007: # Key to variables # ...cuePos -1 links, 1 rechts # ...cueTyp: # ...tarPos: Target pos -1 links, -1 rechts # ...tFixEin: FCI # ...tTarEin: CTI # ...numBinSac: n of binocular sacc (incl. micro) # ...sacType: 1 micro, 2 sacc response (not here) , 3 manual response # ...sacOnset: CSacI (- before cue, + after cue) # ...sacOffset: like sacOnset # ...sacDur: saccade duration # ...sacDelay: interocular differece of sacc onset # ...sacVPeak: peak velocity # ...sacDist: effective distance # ...sacAngle1: direction (-pi to + pi) for sacDist # ...sacAmp: maximum distance # ...sacAngle2: direction (-pi to + pi) for sacAmp # ...sacxOset, sacyOnset, sacxOffset, sacyOffset: drift from fix point # ...reaRT: manual RT # ...reaCor: 0 =wrong 1=falsch # May 14, 2007 # revision: June 13, 2007 # revision: January 21, 2008 # # NOTE THE FOLLOWING VARIABLES ARE AVAILABLE IN THE DATA FRAME MM.rda ######### EXPerimental codes ################## # ... cv: invalid = 0, valid = 1 # d$cv <- ifelse(d$cuePos==d$tarPos, 1, 0) # d0$cv <- ifelse(d0$cuePos==d0$tarPos, 1, 0) # ... cue direction: left = 0, right = 1 # d$cd <- ifelse(d$cuePos==-1, 0, 1) # d0$cd <- ifelse(d0$cuePos==-1, 0, 1) # ... target position: left = 0, right = 1 # d$tpos <- ifelse(d$tarPos==-1, 0, 1) # d0$tpos <- ifelse(d0$tarPos==-1, 0, 1) # ... effect coding for cv, mtc # d$cv.e <- d$cv - 0.5 # d$CV <- as.factor(d$cv) # levels(d$CV) <- c("invalid", "valid") # d0$cv.e <- d0$cv - 0.5 # d0$CV <- as.factor(d0$cv) # levels(d0$CV) <- c("invalid", "valid") ########## MS characteristics # ms time of occurrence # d$mt <- d$sacOnset # d0$mt <- NA # d$mt_r <- d$mt - d$tTarEin # d0$mt_r <- NA # ... ms direction: left = 0, right = 1 # d$md <- ifelse(d$sacAngle1 <= -pi/2 | d$sacAngle1 > pi/2, 0, 1) # d0$md <- NA # ... ms congruency with cue: incongruent = 0, congruent = 1 # d$mcc <- ifelse(d$md==d$cd, 1, 0) # d0$mcc <- NA # ... ms congruency with target: incongruent = 0, congruent = 1 # d$mtc <- ifelse(d$md==d$tpos, 1, 0) # d0$mtc <- NA # d$mtc.e <- d$mtc - 0.5 # d$MTC <- as.factor(d$mtc) # levels(d$MTC) <- c("incongruent", "congruent") # d0$mtc.e <- NA # d0$MTC <- NA # d$mcc.e <- d$mcc - 0.5 # d$MCC <- as.factor(d$mcc) # levels(d$MCC) <- c("incongruent", "congruent") # d0$mcc.e <- NA # d0$MCC <- NA ################################################ # dependent variables and transformations # d$rt <- d$reaRT # d0$rt <- d0$reaRT # d$lrt <- log(d$rt) # d0$lrt <- log(d0$rt) ################################################## # generate compatible data frames # d0 <- d0[, c("ID", "EXP", "TYP", "CV", "MTC", "rt", "lrt", "mt", "mt_r", "sacAmp", "sacVPeak", "mn", "cv.e", "mtc.e", "tpos")] # d <- d[, c("ID", "EXP", "TYP", "CV", "MTC", "rt", "lrt", "mt", "mt_r", "sacAmp", "sacVPeak", "mn", "cv.e", "mtc.e", "tpos")] # d <- rbind(d, d0) # d[] <- lapply(d,function(x) x[drop=TRUE]) # Save MMVV # save(d, file="data/MM.rda") # EXTRAS library(ggplot2) library(lme4) # cue validity effect rm(list=ls()) load("MM.rda") d.rs <- melt(d, id=c("ID", "EXP", "TYP", "CV", "MTC"), measure=c("rt", "lrt", "mn"), subset=TYP !="first MS") (table.id <- cast(d.rs, ID + EXP + CV ~ variable, function(x) c(M=mean(x), N=length(x)))) summary(aov(rt_M ~ EXP*CV, data=table.id)) summary(aov(mn_M ~ EXP*CV, data=table.id)) summary(aov(mn_N ~ EXP*CV, data=table.id)) # PART 1: EFFECT OF N OF MS IN TRIAL ON RT # include "No MS" trials, i.e. leave out MTC, use only first of several MS ix <- which(d$TYP !="last MS") d.sub <- d[ix, ] d.sub[] <- lapply(d.sub,function(x) x[drop=TRUE]) d.sub$TYP <- relevel(d.sub$TYP, ref=3) d.sub$TYP2 <- C(d.sub$TYP, matrix(c(-2, +1, +1, 0, -1, 1), 3, 2), 2) contrasts(d.sub$TYP2) d.sub$MTC <- relevel(d.sub$MTC, ref="congruent") # ref is "target-congruent MS" print(m0 <- lmer(rt ~ (EXP+CV+TYP2)^2 + (1|ID), data=d.sub), cor=FALSE) print(m0.VV <- lmer(rt ~ CV*TYP2 + (1|ID), data=d.sub, subset=EXP=="VV"), cor=FALSE) print(m0.VA <- lmer(rt ~ CV*TYP2 + (1|ID), data=d.sub, subset=EXP=="VA"), cor=FALSE) # Main message: MS for neutral cues slightly increase RT, for invalid cues they slightly reduce cost, and for valid cues they increase benefit! d.sub.rs <- melt(d.sub, id=c("ID", "EXP", "TYP", "CV", "MTC"), measure=c("rt", "lrt", "mn")) (table <- cast(d.sub.rs, EXP + CV + TYP ~ variable, function(x) c(M=mean(x), N=length(x)))) levels(table$TYP) <- c("0 MS", "1 MS", "2+ MS") qplot(x=CV, y=rt_M, data=table, colour=TYP, group=TYP, facets= EXP ~ TYP, geom=c("point", "line")) qplot(x=CV, y=lrt_M, data=table, colour=TYP, group=TYP, facets=EXP ~ TYP, geom=c("point", "line")) # PART 1: EFFECT OF N OF MS IN TRIAL ON RT ix <- which(d$TYP == "no MS") d.sub12 <- d[-ix, ] d.sub12[] <- lapply(d.sub12,function(x) x[drop=TRUE]) # include MTC as factor, leave out "No MS" trials; combine for nesting within TYP?, separate LMEs for MTC of first and last MS print(m1 <- lmer(rt ~ (EXP+CV+TYP+MTC)^3 + (1|ID), data=d.sub12, subset=TYP !="last MS" ), cor=FALSE) print(m2 <- lmer(rt ~ (EXP+CV+TYP+MTC)^3 + (1|ID), data=d.sub12, subset=TYP !="first MS"), cor=FALSE) d.sub12.rs <- melt(d.sub12, id=c("ID", "EXP", "TYP", "CV", "MTC"), measure=c("rt", "lrt", "mn")) (table12 <- cast(d.sub12.rs, EXP + CV + TYP + MTC ~ variable, function(x) c(M=mean(x), N=length(x)))) table12$CV <- relevel(table12$CV, ref="invalid") levels(table12$TYP) <- c("single MS", "first MS", "last MS") qplot(x=CV, y=rt_M, colour=MTC, group=MTC, facets= EXP ~ TYP, data=table12, geom = c("point", "line")) qplot(x=CV, y=lrt_M, colour=MTC, group=MTC, facets= EXP ~ TYP, data=table12, geom = c("point", "line")) # # Extra for plots # function(x) c(M=mean(x), SE=1.96*sd(x)/sqrt(length(x)), N=length(x) )) #p <- p +geom_errorbar(aes(max=M+SE, min=M-SE), width=0.1) #p