1 Set up R environment.

library(tidyverse)
library(ggplot2)
library(ggpubr)
library(plyr)
library(magick)
library(png)
library(EBImage)
library(lme4)
library(lmerTest)

2 Set the R working drectory to the main experiment directory.

setwd("/Users/adambarnas/Box/MetaAwareness/data/")  

3 Read in data files.

Rensink_RTs_likelihood_no_NA <- read_csv("Rensink_RTs_likelihood_no_NA.csv")
Ma_RTs_likelihood_no_NA <- read_csv("Ma_RTs_likelihood_no_NA.csv")
Wolfe1_RTs_likelihood_no_NA <- read_csv("Wolfe1_RTs_likelihood_no_NA.csv")
Wolfe2_RTs_likelihood_no_NA <- read_csv("Wolfe2_RTs_likelihood_no_NA.csv")

tbl_all <- rbind(Rensink_RTs_likelihood_no_NA, Ma_RTs_likelihood_no_NA, Wolfe1_RTs_likelihood_no_NA, Wolfe2_RTs_likelihood_no_NA)

4 Compute average likelihood rating.

tbl_all_subj_avg <- tbl_all %>%
  group_by(workerId,image) %>%
  dplyr::summarize(average = mean(likelihood_rating)) %>%
  spread(image,average) %>% 
  mutate(subj_avg = rowMeans(.[-1], na.rm = TRUE))
mean(tbl_all_subj_avg$subj_avg)
## [1] 3.118165

5 Mixed effects model and correlation.

5.1 Raw RT

fit_raw <- lmer(detection_rt ~ likelihood_rating * change_type + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all)
summary(fit_raw)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: detection_rt ~ likelihood_rating * change_type + (1 | workerId) +  
##     (1 | image) + (1 | stim_set)
##    Data: tbl_all
## 
## REML criterion at convergence: 21930.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.5091 -0.4204 -0.1191  0.1349  8.4728 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  image    (Intercept)  1.5762  1.2555  
##  workerId (Intercept)  8.8350  2.9724  
##  stim_set (Intercept)  0.2357  0.4855  
##  Residual             22.5100  4.7445  
## Number of obs: 3594, groups:  image, 479; workerId, 157; stim_set, 4
## 
## Fixed effects:
##                                            Estimate Std. Error         df
## (Intercept)                                12.18030    0.65287   11.74828
## likelihood_rating                          -0.52271    0.14572 2514.81913
## change_typedisappear                       -1.24944    0.63878 1096.16484
## change_typemovement                        -2.51826    0.93216 1605.80051
## change_typereplacement                     -0.96918    2.79736 2775.36288
## change_typesize                            -2.94424    1.26784 1365.76434
## likelihood_rating:change_typedisappear      0.10176    0.16738 2511.44253
## likelihood_rating:change_typemovement       0.34464    0.28182 3451.63417
## likelihood_rating:change_typereplacement   -0.02988    0.77479 3354.56997
## likelihood_rating:change_typesize           0.32073    0.37769 2773.42153
##                                          t value Pr(>|t|)    
## (Intercept)                               18.657 4.31e-10 ***
## likelihood_rating                         -3.587 0.000341 ***
## change_typedisappear                      -1.956 0.050723 .  
## change_typemovement                       -2.702 0.006975 ** 
## change_typereplacement                    -0.346 0.729021    
## change_typesize                           -2.322 0.020366 *  
## likelihood_rating:change_typedisappear     0.608 0.543284    
## likelihood_rating:change_typemovement      1.223 0.221448    
## likelihood_rating:change_typereplacement  -0.039 0.969238    
## likelihood_rating:change_typesize          0.849 0.395843    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##                      (Intr) lklhd_ chng_typd chng_typm chng_typr chng_typs
## liklhd_rtng          -0.756                                               
## chng_typdsp          -0.706  0.728                                        
## chng_typmvm          -0.502  0.543  0.480                                 
## chng_typrpl          -0.173  0.183  0.163     0.140                       
## chang_typsz          -0.371  0.395  0.350     0.330     0.115             
## lklhd_rtng:chng_typd  0.634 -0.829 -0.877    -0.453    -0.152    -0.329   
## lklhd_rtng:chng_typm  0.369 -0.493 -0.369    -0.849    -0.093    -0.232   
## lklhd_rtng:chng_typr  0.144 -0.189 -0.140    -0.105    -0.905    -0.080   
## lklhd_rtng:chng_typs  0.282 -0.371 -0.277    -0.234    -0.069    -0.849   
##                      lklhd_rtng:chng_typd lklhd_rtng:chng_typm
## liklhd_rtng                                                   
## chng_typdsp                                                   
## chng_typmvm                                                   
## chng_typrpl                                                   
## chang_typsz                                                   
## lklhd_rtng:chng_typd                                          
## lklhd_rtng:chng_typm  0.422                                   
## lklhd_rtng:chng_typr  0.158                0.097              
## lklhd_rtng:chng_typs  0.313                0.222              
##                      lklhd_rtng:chng_typr
## liklhd_rtng                              
## chng_typdsp                              
## chng_typmvm                              
## chng_typrpl                              
## chang_typsz                              
## lklhd_rtng:chng_typd                     
## lklhd_rtng:chng_typm                     
## lklhd_rtng:chng_typr                     
## lklhd_rtng:chng_typs  0.075
corr <- tbl_all %>% 
  group_by(image) %>% 
  dplyr::summarize(detection_rt = mean(detection_rt), likelihood_rating = mean(likelihood_rating), change_type = unique(change_type))

corr %>%
  ggscatter(y = "detection_rt", x = "likelihood_rating", ylab = "Raw Change Detection RT (sec)", xlab = "Likelihood of Detecting Change", title = "N = 154", add = "reg.line", cor.coef = TRUE, cor.coeff.args = list(method = "pearson", label.x = 1, label.y = 40), conf.int = TRUE, xlim = c(1, 5), ylim = c(5, 40))

corr %>%
  ggscatter(y = "detection_rt", x = "likelihood_rating", color = "change_type", palette = c("#0d2240", "#00a8e1", "#f7a800", "#E31818", "#dfdddc"), ylab = "Raw Change Detection RT (sec)", xlab = "Likelihood of Detecting Change", title = "N = 154", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(5, 40)) + stat_cor(aes(color = change_type), label.x = 1, label.y = c(30, 32.5, 35, 37.5, 40), method = "pearson")

Drop image-116 from Wolfe1.

tbl_all_no_outlier <- tbl_all %>% 
  filter(image != "image-116")

fit_raw_no_outlier <- lmer(detection_rt ~ likelihood_rating * change_type + (1 | workerId) + (1 | image), data=tbl_all_no_outlier)
summary(fit_raw_no_outlier)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: detection_rt ~ likelihood_rating * change_type + (1 | workerId) +  
##     (1 | image)
##    Data: tbl_all_no_outlier
## 
## REML criterion at convergence: 21865.8
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.5294 -0.4223 -0.1219  0.1331  8.5204 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  image    (Intercept)  1.421   1.192   
##  workerId (Intercept)  8.794   2.965   
##  Residual             22.272   4.719   
## Number of obs: 3592, groups:  image, 478; workerId, 157
## 
## Fixed effects:
##                                            Estimate Std. Error         df
## (Intercept)                                12.44696    0.58732 1456.58035
## likelihood_rating                          -0.59238    0.14419 2573.09601
## change_typedisappear                       -1.35477    0.62487 1630.19706
## change_typemovement                        -2.76537    0.91708 2158.38713
## change_typereplacement                     -1.22584    2.76799 2871.07434
## change_typesize                            -3.19856    1.24678 1641.09734
## likelihood_rating:change_typedisappear      0.16097    0.16562 2521.61698
## likelihood_rating:change_typemovement       0.40544    0.27955 3441.47290
## likelihood_rating:change_typereplacement    0.04331    0.76846 3349.92887
## likelihood_rating:change_typesize           0.39169    0.37397 2763.58912
##                                          t value Pr(>|t|)    
## (Intercept)                               21.193  < 2e-16 ***
## likelihood_rating                         -4.108 4.11e-05 ***
## change_typedisappear                      -2.168   0.0303 *  
## change_typemovement                       -3.015   0.0026 ** 
## change_typereplacement                    -0.443   0.6579    
## change_typesize                           -2.565   0.0104 *  
## likelihood_rating:change_typedisappear     0.972   0.3312    
## likelihood_rating:change_typemovement      1.450   0.1471    
## likelihood_rating:change_typereplacement   0.056   0.9551    
## likelihood_rating:change_typesize          1.047   0.2950    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##                      (Intr) lklhd_ chng_typd chng_typm chng_typr chng_typs
## liklhd_rtng          -0.822                                               
## chng_typdsp          -0.780  0.736                                        
## chng_typmvm          -0.535  0.542  0.482                                 
## chng_typrpl          -0.183  0.182  0.163     0.136                       
## chang_typsz          -0.395  0.394  0.353     0.325     0.111             
## lklhd_rtng:chng_typd  0.692 -0.830 -0.884    -0.453    -0.152    -0.329   
## lklhd_rtng:chng_typm  0.402 -0.492 -0.372    -0.854    -0.092    -0.232   
## lklhd_rtng:chng_typr  0.156 -0.188 -0.141    -0.104    -0.907    -0.079   
## lklhd_rtng:chng_typs  0.307 -0.371 -0.279    -0.234    -0.068    -0.853   
##                      lklhd_rtng:chng_typd lklhd_rtng:chng_typm
## liklhd_rtng                                                   
## chng_typdsp                                                   
## chng_typmvm                                                   
## chng_typrpl                                                   
## chang_typsz                                                   
## lklhd_rtng:chng_typd                                          
## lklhd_rtng:chng_typm  0.421                                   
## lklhd_rtng:chng_typr  0.158                0.097              
## lklhd_rtng:chng_typs  0.313                0.221              
##                      lklhd_rtng:chng_typr
## liklhd_rtng                              
## chng_typdsp                              
## chng_typmvm                              
## chng_typrpl                              
## chang_typsz                              
## lklhd_rtng:chng_typd                     
## lklhd_rtng:chng_typm                     
## lklhd_rtng:chng_typr                     
## lklhd_rtng:chng_typs  0.075
corr %>%
  filter(image!="image-116") %>% 
  ggscatter(y = "detection_rt", x = "likelihood_rating", ylab = "Raw Change Detection RT (sec)", xlab = "Likelihood of Detecting Change", title = "N = 154", add = "reg.line", cor.coef = TRUE, cor.coeff.args = list(method = "pearson", label.x = 1, label.y = 30), conf.int = TRUE, xlim = c(1, 5), ylim = c(5, 30))

corr %>%
  filter(image!="image-116") %>% 
  ggscatter(y = "detection_rt", x = "likelihood_rating", color = "change_type", palette = c("#0d2240", "#00a8e1", "#f7a800", "#E31818", "#dfdddc"), ylab = "Raw Change Detection RT (sec)", xlab = "Likelihood of Detecting Change", title = "N = 154", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(5, 30)) + stat_cor(aes(color = change_type), label.x = 1, label.y = c(22, 23.5, 25, 26.5, 28), method = "pearson")

5.2 Log RT

fit_log <- lmer(log10(detection_rt) ~ likelihood_rating * change_type + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all)
summary(fit_log)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: log10(detection_rt) ~ likelihood_rating * change_type + (1 |  
##     workerId) + (1 | image) + (1 | stim_set)
##    Data: tbl_all
## 
## REML criterion at convergence: -3790.9
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.7459 -0.5465 -0.1205  0.3302  5.1445 
## 
## Random effects:
##  Groups   Name        Variance  Std.Dev.
##  image    (Intercept) 0.0016214 0.04027 
##  workerId (Intercept) 0.0126077 0.11228 
##  stim_set (Intercept) 0.0004966 0.02228 
##  Residual             0.0164874 0.12840 
## Number of obs: 3594, groups:  image, 479; workerId, 157; stim_set, 4
## 
## Fixed effects:
##                                            Estimate Std. Error         df
## (Intercept)                               1.012e+00  2.146e-02  6.664e+00
## likelihood_rating                        -1.571e-02  4.048e-03  2.798e+03
## change_typedisappear                     -3.313e-02  1.800e-02  1.410e+03
## change_typemovement                      -6.764e-02  2.612e-02  1.845e+03
## change_typereplacement                   -1.394e-04  7.728e-02  2.725e+03
## change_typesize                          -7.840e-02  3.563e-02  1.498e+03
## likelihood_rating:change_typedisappear    3.911e-03  4.645e-03  2.732e+03
## likelihood_rating:change_typemovement     9.766e-03  7.762e-03  3.476e+03
## likelihood_rating:change_typereplacement -4.685e-03  2.124e-02  3.381e+03
## likelihood_rating:change_typesize         7.774e-03  1.044e-02  2.948e+03
##                                          t value Pr(>|t|)    
## (Intercept)                               47.151 1.16e-09 ***
## likelihood_rating                         -3.881 0.000106 ***
## change_typedisappear                      -1.840 0.065937 .  
## change_typemovement                       -2.590 0.009677 ** 
## change_typereplacement                    -0.002 0.998561    
## change_typesize                           -2.201 0.027919 *  
## likelihood_rating:change_typedisappear     0.842 0.399825    
## likelihood_rating:change_typemovement      1.258 0.208395    
## likelihood_rating:change_typereplacement  -0.221 0.825417    
## likelihood_rating:change_typesize          0.745 0.456385    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##                      (Intr) lklhd_ chng_typd chng_typm chng_typr chng_typs
## liklhd_rtng          -0.641                                               
## chng_typdsp          -0.600  0.714                                        
## chng_typmvm          -0.433  0.539  0.475                                 
## chng_typrpl          -0.152  0.185  0.164     0.146                       
## chang_typsz          -0.320  0.391  0.346     0.337     0.121             
## lklhd_rtng:chng_typd  0.535 -0.825 -0.865    -0.448    -0.153    -0.325   
## lklhd_rtng:chng_typm  0.313 -0.494 -0.364    -0.835    -0.095    -0.233   
## lklhd_rtng:chng_typr  0.124 -0.191 -0.139    -0.106    -0.896    -0.081   
## lklhd_rtng:chng_typs  0.240 -0.372 -0.273    -0.234    -0.071    -0.836   
##                      lklhd_rtng:chng_typd lklhd_rtng:chng_typm
## liklhd_rtng                                                   
## chng_typdsp                                                   
## chng_typmvm                                                   
## chng_typrpl                                                   
## chang_typsz                                                   
## lklhd_rtng:chng_typd                                          
## lklhd_rtng:chng_typm  0.422                                   
## lklhd_rtng:chng_typr  0.160                0.099              
## lklhd_rtng:chng_typs  0.313                0.225              
##                      lklhd_rtng:chng_typr
## liklhd_rtng                              
## chng_typdsp                              
## chng_typmvm                              
## chng_typrpl                              
## chang_typsz                              
## lklhd_rtng:chng_typd                     
## lklhd_rtng:chng_typm                     
## lklhd_rtng:chng_typr                     
## lklhd_rtng:chng_typs  0.077
corr <- tbl_all %>% 
  group_by(image) %>% 
  dplyr::summarize(detection_rt = mean(detection_rt), likelihood_rating = mean(likelihood_rating), change_type = unique(change_type))

corr$log <- log10(corr$detection_rt)

corr %>%
  ggscatter(y = "log", x = "likelihood_rating", ylab = "LogChange Detection RT (sec)", xlab = "Likelihood of Detecting Change", title = "N = 154", add = "reg.line", cor.coef = TRUE, cor.coeff.args = list(method = "pearson", label.x = 1, label.y = 1.75), conf.int = TRUE, xlim = c(1, 5), ylim = c(0.75, 1.75))

corr %>%
  ggscatter(y = "log", x = "likelihood_rating", color = "change_type", palette = c("#0d2240", "#00a8e1", "#f7a800", "#E31818", "#dfdddc"), ylab = "Log Change Detection RT (sec)", xlab = "Likelihood of Detecting Change", title = "N = 154", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(0.75, 1.75)) + stat_cor(aes(color = change_type), label.x = 1, label.y = c(1.50, 1.5625, 1.625, 1.6875, 1.75), method = "pearson")

Drop image-116 from Wolfe1.

tbl_all_no_outlier <- tbl_all %>% 
  filter(image != "image-116")

fit_log_no_outlier <- lmer(log10(detection_rt) ~ likelihood_rating * change_type + (1 | workerId) + (1 | image), data=tbl_all_no_outlier)
summary(fit_log_no_outlier)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: log10(detection_rt) ~ likelihood_rating * change_type + (1 |  
##     workerId) + (1 | image)
##    Data: tbl_all_no_outlier
## 
## REML criterion at convergence: -3812.8
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.7550 -0.5472 -0.1218  0.3318  5.1704 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  image    (Intercept) 0.001538 0.03922 
##  workerId (Intercept) 0.012735 0.11285 
##  Residual             0.016417 0.12813 
## Number of obs: 3592, groups:  image, 478; workerId, 157
## 
## Fixed effects:
##                                            Estimate Std. Error         df
## (Intercept)                               1.021e+00  1.768e-02  1.162e+03
## likelihood_rating                        -1.719e-02  4.029e-03  2.801e+03
## change_typedisappear                     -3.520e-02  1.774e-02  1.626e+03
## change_typemovement                      -7.387e-02  2.585e-02  2.065e+03
## change_typereplacement                   -6.621e-03  7.683e-02  2.775e+03
## change_typesize                          -8.480e-02  3.526e-02  1.615e+03
## likelihood_rating:change_typedisappear    5.149e-03  4.622e-03  2.722e+03
## likelihood_rating:change_typemovement     1.103e-02  7.734e-03  3.469e+03
## likelihood_rating:change_typereplacement -3.126e-03  2.116e-02  3.375e+03
## likelihood_rating:change_typesize         9.283e-03  1.039e-02  2.933e+03
##                                          t value Pr(>|t|)    
## (Intercept)                               57.759  < 2e-16 ***
## likelihood_rating                         -4.268 2.03e-05 ***
## change_typedisappear                      -1.984  0.04743 *  
## change_typemovement                       -2.858  0.00431 ** 
## change_typereplacement                    -0.086  0.93133    
## change_typesize                           -2.405  0.01629 *  
## likelihood_rating:change_typedisappear     1.114  0.26540    
## likelihood_rating:change_typemovement      1.427  0.15372    
## likelihood_rating:change_typereplacement  -0.148  0.88253    
## likelihood_rating:change_typesize          0.894  0.37154    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Correlation of Fixed Effects:
##                      (Intr) lklhd_ chng_typd chng_typm chng_typr chng_typs
## liklhd_rtng          -0.763                                               
## chng_typdsp          -0.732  0.720                                        
## chng_typmvm          -0.503  0.538  0.478                                 
## chng_typrpl          -0.175  0.184  0.164     0.143                       
## chang_typsz          -0.370  0.390  0.349     0.332     0.118             
## lklhd_rtng:chng_typd  0.641 -0.826 -0.870    -0.448    -0.153    -0.325   
## lklhd_rtng:chng_typm  0.374 -0.494 -0.367    -0.839    -0.094    -0.232   
## lklhd_rtng:chng_typr  0.147 -0.191 -0.140    -0.106    -0.897    -0.081   
## lklhd_rtng:chng_typs  0.285 -0.372 -0.275    -0.234    -0.070    -0.839   
##                      lklhd_rtng:chng_typd lklhd_rtng:chng_typm
## liklhd_rtng                                                   
## chng_typdsp                                                   
## chng_typmvm                                                   
## chng_typrpl                                                   
## chang_typsz                                                   
## lklhd_rtng:chng_typd                                          
## lklhd_rtng:chng_typm  0.422                                   
## lklhd_rtng:chng_typr  0.160                0.099              
## lklhd_rtng:chng_typs  0.313                0.225              
##                      lklhd_rtng:chng_typr
## liklhd_rtng                              
## chng_typdsp                              
## chng_typmvm                              
## chng_typrpl                              
## chang_typsz                              
## lklhd_rtng:chng_typd                     
## lklhd_rtng:chng_typm                     
## lklhd_rtng:chng_typr                     
## lklhd_rtng:chng_typs  0.077
corr$log <- log10(corr$detection_rt)

corr %>%
  filter(image!="image-116") %>% 
  ggscatter(y = "log", x = "likelihood_rating", ylab = "Raw Change Detection RT (sec)", xlab = "Likelihood of Detecting Change", title = "N = 154", add = "reg.line", cor.coef = TRUE, cor.coeff.args = list(method = "pearson", label.x = 1, label.y = 1.4), conf.int = TRUE, xlim = c(1, 5), ylim = c(.75, 1.5))

corr %>%
  filter(image!="image-116") %>% 
  ggscatter(y = "log", x = "likelihood_rating", color = "change_type", palette = c("#0d2240", "#00a8e1", "#f7a800", "#E31818", "#dfdddc"), ylab = "Raw Change Detection RT (sec)", xlab = "Likelihood of Detecting Change", title = "N = 154", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(.75, 1.5)) + stat_cor(aes(color = change_type), label.x = 1, label.y = c(1.3, 1.35, 1.4, 1.45, 1.5), method = "pearson")