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.100348

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: 23816.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.5417 -0.4219 -0.1208  0.1419  8.6021 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  image    (Intercept)  1.5986  1.2644  
##  workerId (Intercept)  8.4997  2.9154  
##  stim_set (Intercept)  0.2638  0.5136  
##  Residual             21.7899  4.6680  
## Number of obs: 3923, groups:  image, 480; workerId, 173; stim_set, 4
## 
## Fixed effects:
##                                            Estimate Std. Error         df
## (Intercept)                                12.10463    0.64645   11.87018
## likelihood_rating                          -0.52308    0.14306 2717.01985
## change_typedisappear                       -1.31017    0.62308 1151.03530
## change_typemovement                        -2.55755    0.90860 1657.93690
## change_typereplacement                     -1.39780    2.53863 2769.13562
## change_typesize                            -2.98798    1.23039 1373.57443
## likelihood_rating:change_typedisappear      0.11657    0.16280 2681.36634
## likelihood_rating:change_typemovement       0.35430    0.27413 3737.27688
## likelihood_rating:change_typereplacement    0.06829    0.71758 3656.85074
## likelihood_rating:change_typesize           0.32998    0.36705 2892.24576
##                                          t value Pr(>|t|)    
## (Intercept)                               18.725 3.54e-10 ***
## likelihood_rating                         -3.656 0.000261 ***
## change_typedisappear                      -2.103 0.035706 *  
## change_typemovement                       -2.815 0.004938 ** 
## change_typereplacement                    -0.551 0.581945    
## change_typesize                           -2.428 0.015290 *  
## likelihood_rating:change_typedisappear     0.716 0.474017    
## likelihood_rating:change_typemovement      1.292 0.196284    
## likelihood_rating:change_typereplacement   0.095 0.924186    
## likelihood_rating:change_typesize          0.899 0.368720    
## ---
## 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.749                                               
## chng_typdsp          -0.709  0.735                                        
## chng_typmvm          -0.505  0.548  0.490                                 
## chng_typrpl          -0.187  0.200  0.180     0.160                       
## chang_typsz          -0.375  0.401  0.360     0.340     0.132             
## lklhd_rtng:chng_typd  0.636 -0.840 -0.873    -0.464    -0.169    -0.339   
## lklhd_rtng:chng_typm  0.370 -0.499 -0.376    -0.845    -0.108    -0.239   
## lklhd_rtng:chng_typr  0.152 -0.201 -0.151    -0.118    -0.891    -0.090   
## lklhd_rtng:chng_typs  0.284 -0.376 -0.283    -0.239    -0.082    -0.845   
##                      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.432                                   
## lklhd_rtng:chng_typr  0.171                0.110              
## lklhd_rtng:chng_typs  0.321                0.227              
##                      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.085
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 = 173", add = "reg.line", cor.coef = TRUE, cor.coeff.args = list(method = "pearson", label.x = 1, label.y = 37.5), 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 = 173", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(5, 40)) + stat_cor(aes(color = change_type), label.x = c(1, 1, 2.5, 2.5, 4), label.y = c(37.5, 35, 37.5, 35, 37.5), 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: 23750.4
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.5600 -0.4240 -0.1206  0.1410  8.6445 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  image    (Intercept)  1.448   1.203   
##  workerId (Intercept)  8.474   2.911   
##  Residual             21.575   4.645   
## Number of obs: 3921, groups:  image, 479; workerId, 173
## 
## Fixed effects:
##                                           Estimate Std. Error        df t value
## (Intercept)                                12.3927     0.5733 1612.2338  21.617
## likelihood_rating                          -0.5941     0.1416 2788.3993  -4.197
## change_typedisappear                       -1.4225     0.6084 1721.5165  -2.338
## change_typemovement                        -2.8247     0.8932 2272.0900  -3.162
## change_typereplacement                     -1.6872     2.5110 2900.2981  -0.672
## change_typesize                            -3.2660     1.2091 1666.2308  -2.701
## likelihood_rating:change_typedisappear      0.1779     0.1611 2696.9948   1.104
## likelihood_rating:change_typemovement       0.4168     0.2720 3728.1867   1.532
## likelihood_rating:change_typereplacement    0.1452     0.7120 3648.9687   0.204
## likelihood_rating:change_typesize           0.4024     0.3635 2882.1582   1.107
##                                          Pr(>|t|)    
## (Intercept)                               < 2e-16 ***
## likelihood_rating                        2.79e-05 ***
## change_typedisappear                      0.01949 *  
## change_typemovement                       0.00159 ** 
## change_typereplacement                    0.50169    
## change_typesize                           0.00698 ** 
## likelihood_rating:change_typedisappear    0.26965    
## likelihood_rating:change_typemovement     0.12552    
## likelihood_rating:change_typereplacement  0.83839    
## likelihood_rating:change_typesize         0.26833    
## ---
## 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.824                                               
## chng_typdsp          -0.797  0.744                                        
## chng_typmvm          -0.544  0.547  0.494                                 
## chng_typrpl          -0.200  0.198  0.180     0.155                       
## chang_typsz          -0.403  0.400  0.363     0.334     0.127             
## lklhd_rtng:chng_typd  0.704 -0.841 -0.881    -0.464    -0.168    -0.340   
## lklhd_rtng:chng_typm  0.408 -0.498 -0.379    -0.850    -0.107    -0.238   
## lklhd_rtng:chng_typr  0.167 -0.201 -0.152    -0.117    -0.894    -0.090   
## lklhd_rtng:chng_typs  0.312 -0.376 -0.286    -0.239    -0.081    -0.850   
##                      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.431                                   
## lklhd_rtng:chng_typr  0.171                0.109              
## lklhd_rtng:chng_typs  0.321                0.226              
##                      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.085
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 = 173", add = "reg.line", cor.coef = TRUE, cor.coeff.args = list(method = "pearson", label.x = 1, label.y = 25), 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 = 173", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(5, 30)) + stat_cor(aes(color = change_type), label.x = c(1, 1, 2.5, 2.5, 4), label.y = c(27.5, 25, 27.5, 25, 27.5), 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: -4197.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.7630 -0.5472 -0.1255  0.3285  5.1747 
## 
## Random effects:
##  Groups   Name        Variance  Std.Dev.
##  image    (Intercept) 0.0015873 0.03984 
##  workerId (Intercept) 0.0123117 0.11096 
##  stim_set (Intercept) 0.0005797 0.02408 
##  Residual             0.0162902 0.12763 
## Number of obs: 3923, groups:  image, 480; workerId, 173; stim_set, 4
## 
## Fixed effects:
##                                            Estimate Std. Error         df
## (Intercept)                               1.010e+00  2.169e-02  6.701e+00
## likelihood_rating                        -1.602e-02  4.004e-03  2.993e+03
## change_typedisappear                     -3.489e-02  1.766e-02  1.481e+03
## change_typemovement                      -6.969e-02  2.563e-02  1.938e+03
## change_typereplacement                   -2.251e-02  7.078e-02  2.732e+03
## change_typesize                          -8.286e-02  3.481e-02  1.522e+03
## likelihood_rating:change_typedisappear    4.323e-03  4.552e-03  2.903e+03
## likelihood_rating:change_typemovement     1.012e-02  7.616e-03  3.766e+03
## likelihood_rating:change_typereplacement  3.478e-04  1.984e-02  3.689e+03
## likelihood_rating:change_typesize         8.675e-03  1.023e-02  3.078e+03
##                                          t value Pr(>|t|)    
## (Intercept)                               46.540 1.15e-09 ***
## likelihood_rating                         -4.002 6.44e-05 ***
## change_typedisappear                      -1.975  0.04841 *  
## change_typemovement                       -2.719  0.00662 ** 
## change_typereplacement                    -0.318  0.75050    
## change_typesize                           -2.381  0.01741 *  
## likelihood_rating:change_typedisappear     0.950  0.34235    
## likelihood_rating:change_typemovement      1.328  0.18416    
## likelihood_rating:change_typereplacement   0.018  0.98601    
## likelihood_rating:change_typesize          0.848  0.39632    
## ---
## 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.627                                               
## chng_typdsp          -0.593  0.722                                        
## chng_typmvm          -0.429  0.544  0.486                                 
## chng_typrpl          -0.162  0.202  0.180     0.166                       
## chang_typsz          -0.318  0.397  0.356     0.347     0.138             
## lklhd_rtng:chng_typd  0.530 -0.837 -0.862    -0.460    -0.170    -0.336   
## lklhd_rtng:chng_typm  0.310 -0.499 -0.371    -0.833    -0.110    -0.240   
## lklhd_rtng:chng_typr  0.129 -0.204 -0.150    -0.119    -0.882    -0.092   
## lklhd_rtng:chng_typs  0.238 -0.376 -0.279    -0.240    -0.083    -0.833   
##                      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.432                                   
## lklhd_rtng:chng_typr  0.173                0.112              
## lklhd_rtng:chng_typs  0.321                0.230              
##                      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.088
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 = 173", 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 = 173", 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: -4219.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.7709 -0.5449 -0.1241  0.3339  5.2009 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  image    (Intercept) 0.001509 0.03885 
##  workerId (Intercept) 0.012464 0.11164 
##  Residual             0.016226 0.12738 
## Number of obs: 3921, groups:  image, 479; workerId, 173
## 
## Fixed effects:
##                                            Estimate Std. Error         df
## (Intercept)                               1.020e+00  1.730e-02  1.331e+03
## likelihood_rating                        -1.757e-02  3.984e-03  3.000e+03
## change_typedisappear                     -3.706e-02  1.739e-02  1.708e+03
## change_typemovement                      -7.676e-02  2.535e-02  2.174e+03
## change_typereplacement                   -3.022e-02  7.035e-02  2.799e+03
## change_typesize                          -9.029e-02  3.443e-02  1.646e+03
## likelihood_rating:change_typedisappear    5.620e-03  4.530e-03  2.894e+03
## likelihood_rating:change_typemovement     1.146e-02  7.590e-03  3.759e+03
## likelihood_rating:change_typereplacement  2.017e-03  1.977e-02  3.682e+03
## likelihood_rating:change_typesize         1.025e-02  1.018e-02  3.062e+03
##                                          t value Pr(>|t|)    
## (Intercept)                               58.994  < 2e-16 ***
## likelihood_rating                         -4.409 1.08e-05 ***
## change_typedisappear                      -2.131  0.03320 *  
## change_typemovement                       -3.027  0.00250 ** 
## change_typereplacement                    -0.430  0.66750    
## change_typesize                           -2.623  0.00881 ** 
## likelihood_rating:change_typedisappear     1.241  0.21482    
## likelihood_rating:change_typemovement      1.509  0.13128    
## likelihood_rating:change_typereplacement   0.102  0.91872    
## likelihood_rating:change_typesize          1.007  0.31419    
## ---
## 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.769                                               
## chng_typdsp          -0.751  0.729                                        
## chng_typmvm          -0.513  0.544  0.489                                 
## chng_typrpl          -0.191  0.200  0.181     0.162                       
## chang_typsz          -0.379  0.397  0.359     0.342     0.134             
## lklhd_rtng:chng_typd  0.656 -0.838 -0.868    -0.460    -0.170    -0.336   
## lklhd_rtng:chng_typm  0.382 -0.499 -0.374    -0.837    -0.109    -0.239   
## lklhd_rtng:chng_typr  0.158 -0.204 -0.151    -0.119    -0.884    -0.091   
## lklhd_rtng:chng_typs  0.292 -0.376 -0.282    -0.240    -0.083    -0.837   
##                      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.432                                   
## lklhd_rtng:chng_typr  0.173                0.112              
## lklhd_rtng:chng_typs  0.321                0.230              
##                      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.087
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 = 173", 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 = 173", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(.75, 1.5)) + stat_cor(aes(color = change_type), label.x = c(1, 1, 2.5, 2.5, 4), label.y = c(1.4, 1.35, 1.4, 1.35, 1.4), method = "pearson")