##### Potsdam Mind Research Repository ###### ## This script is part of the publication package for the article: # Hohenstein, S., & Kliegl, R. (2013). # Semantic preview benefit during reading. # Journal of Experimental Psychology: Learning, Memory, and Cognition. # http://psycnet.apa.org/doi/10.1037/a0033670 # Sven Hohenstein, 2013 ######## Generate statistics and graphs for the Meta-analysis of Experiments 1-3 ######### rm(list=ls()) # packages library(lme4) library(ggplot2) # load data of Experiments 1-3 filenames <- paste0("Exp", seq(3), ".rds") datList <- lapply(filenames, readRDS) # add column for Experiment datList <- mapply("[[<-", x = datList, value = seq(datList), i = "exp") # find column names present in all data frames is <- Reduce(intersect, lapply(datList, names)) # combine data frames into one large data frame datList_sub <- lapply(datList, "[", is) b2 <- do.call(rbind, datList_sub) # modify id column (increase values for Exp. 2 and 3) b2 <- transform(b2, id = as.integer(as.character(id)) + (exp - 1) * 100) # remove trials with identical and nonword primes b2 <- droplevels(b2[b2$prime %in% c("unrelated", "related"), ]) # add contrast variable for unrelated vs. related b2$PrimeN <- as.integer(b2$prime) - 1.5 ### Analyses for subjects without display-change detection summary(lmer(data = b2[!b2$percent, ], log(tar.GD) ~ PrimeN + (1 | id) + (1 | sn))) summary(lmer(data = b2[!b2$percent, ], log(tar.FFD) ~ PrimeN + (1 | id) + (1 | sn))) summary(lmer(data = b2[!b2$percent, ], log(tar.SFD) ~ PrimeN + (1 | id) + (1 | sn))) ### change display-change awareness value of data from Exp. 3 # proportion of trials with display changes: p <- (100 * .75 + 24 * .5 + 8 * .5) / (100 + 24 + 8) b2$percent_backup <- b2$percent b2$percent[b2$exp == 3] <- b2$percent[b2$exp == 3] / p # not more than 100% awareness b2$percent[b2$percent > 100] <- 100 ### Analyses of the influence of display-change awareness # display-change awareness summary(M.gd <- lmer(data = b2, log(tar.GD) ~ PrimeN * scale(percent, scale = FALSE) + (1 | id) + (1 + PrimeN | sn))) summary(M.ffd <- lmer(data = b2, log(tar.FFD) ~ PrimeN * scale(percent, scale = FALSE) + (1 | id) + (1 + PrimeN | sn))) summary(M.sfd <- lmer(data = b2, log(tar.SFD) ~ PrimeN * scale(percent, scale = FALSE) + (1 | id) + (1 + PrimeN | sn))) # Plot (GD) # plot influence PTb.id.tar <- aggregate(tar.GD ~ id + prime, data =b2, mean, na.rm = TRUE, subset = !is.na(PrimeN) & !is.na(percent)) PEb.id.tar <- aggregate(percent ~ id + prime, data =b2, mean, na.rm = TRUE, subset = !is.na(PrimeN) & !is.na(percent)) PTEb <- cbind(PTb.id.tar, PEb.id.tar[,3]) names(PTEb)[3:4] <- c("x","percent") PTEb$percent <- PTEb$percent / 100 # DV transformation (to superimpose on density) a <- -0.45; b <- 270 ybreaks <- seq(100, 1000, 50) y_trans <- ybreaks / b + a # p <- ggplot() p <- p + stat_density(data = PTEb[PTEb$prime == "related", ], fill = "grey", colour ="grey", alpha = .4, size = 0, aes(x = percent)) dens <- density(PTEb[PTEb$prime == "related", "percent"], from = 0, to = 1) dd <- with(dens,data.frame(x,y)) p <- p + geom_ribbon(data = subset(dd, x >= quantile(PTEb[PTEb$prime == "related", "percent"], .25) & x <= quantile(PTEb[PTEb$prime == "related", "percent"], .75)), aes(ymax=y, x = x), ymin = 0, fill = "grey", alpha = .5) p <- p + geom_point(data = PTEb, aes(y = x/b+a, x = percent, shape = prime), size = 2.5) p <- p + scale_shape("Preview", guide = guide_legend(keywidth = 2)) p <- p + scale_x_continuous("Display-change detection rate", labels = percent, breaks = seq(0,1,0.2)) p <- p + scale_y_continuous("Target gaze duration [ms]", breaks = y_trans[y_trans >= 0.1 & y_trans <= 1.9], labels = as.character(ybreaks[y_trans >= 0.1 & y_trans <= 1.9])) p <- p + stat_smooth(data = PTEb, aes(y = x/b+a, x = percent, group = prime, linetype = prime), method = "lm", size = 1.2, formula = y ~ poly(x, 1), se = FALSE, colour = "black") p <- p + theme_bw() p <- p + theme(legend.position = "top") p <- p + scale_linetype("Preview") p <- p + coord_cartesian(ylim = c(0,1.85),xlim = c(-0.01, 1.01)) p ## Analyses for different launch site distances # launch-site distance print(lmer(data = b2, log(tar.GD) ~ PrimeN * scale(distLast, scale = FALSE) + (1 | id) + (1 + PrimeN | sn)), cor = FALSE) print(lmer(data = b2, log(tar.FFD) ~ PrimeN * scale(distLast, scale = FALSE) + (1 | id) + (1 + PrimeN | sn)), cor = FALSE) print(lmer(data = b2, log(tar.SFD) ~ PrimeN * scale(distLast, scale = FALSE) + (1 | id) + (1 + PrimeN | sn)), cor = FALSE) out <- list() for (lsd in 1:7) { m.GD <- lmer(data = b2, log(tar.GD) ~ PrimeN + (1 | id) + (1 + PrimeN | sn), subset = distLast >= lsd) m.FFD <- lmer(data = b2, log(tar.FFD) ~ PrimeN + (1 | id) + (1 + PrimeN | sn), subset = distLast >= lsd) m.SFD <- lmer(data = b2, log(tar.SFD) ~ PrimeN + (1 | id) + (1 + PrimeN | sn), subset = distLast >= lsd) coefs <- do.call(rbind, lapply(list(m.GD, m.FFD, m.SFD), FUN = function(x) coef(summary(x))[2,]) ) nObs <- sapply(list(m.GD, m.FFD, m.SFD), FUN = function(x) nrow(x@frame)) out[[lsd]] <- cbind(lsd, nObs, coefs) } res <- do.call(rbind, out) res[ , 3:5] <- round(res[ , 3:5], 2) res <- as.data.frame(res) res$var <- factor(c("GD", "FFD", "SFD"), levels = c("GD", "FFD", "SFD")) res$nObsRel <- round(100 * res$nObs/nrow(b2), 1) res <- res[ , c(1, 6, 7, 3:5)] tab <- res[order(res$var,res$lsd),] tab