library(tidyverse)
library(ggplot2)
library(ggpubr)
library(plyr)
library(magick)
library(png)
library(lme4)
library(lmerTest)
library(irrNA)
library(psy)
library(coefficientalpha)
library(parameters)
setwd("/Users/adambarnas/Box/MetaAwareness/data/")
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)
Box_and_change_info <- read_csv("Box_and_change_info.csv")
Box_and_change_info <- Box_and_change_info %>%
filter(!grepl('catch', image)) %>%
separate(image,into=c('database', 'image'), sep = "([\\_])", extra = "merge")
Box_and_change_info$image <- lapply(Box_and_change_info$image, gsub, pattern='-a', replacement='')
Box_and_change_info$image <- as.character(Box_and_change_info$image)
tbl_all <- left_join(tbl_all, Box_and_change_info, by = "image")
Get total number of subjects and counts for each stimulus set
nrow(tbl_all %>% distinct(workerId,.keep_all = FALSE))
## [1] 219
count <- tbl_all %>%
group_by(stim_set) %>%
dplyr::summarize(count = n_distinct(workerId)) %>%
spread(stim_set,count)
count
## # A tibble: 1 x 4
## ma rensink wolfe1 wolfe2
## <int> <int> <int> <int>
## 1 29 21 62 110
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.12851
tbl_all$log <- log10(tbl_all$detection_rt)
corr <- tbl_all %>%
group_by(image) %>%
dplyr::summarize(log = mean(log), raw = mean(detection_rt), likelihood_rating = mean(likelihood_rating), change_type = unique(change_type), eccentricity = mean(eccentricity), box_percent = mean(box_percent), change_percent = mean(change_percent))
corr %>%
gghistogram(x = "likelihood_rating", fill = "#f7a800", add = "mean", bins = 9, xlab = ("Likelihood of Detecting Change"), ylab = ("Frequency"), ylim = c(0, 100))
ggsave("fig_1_rating_histogram.jpg")
corr %>%
gghistogram(x = "log", fill = "#f7a800", add = "mean", bins = 36, ylim = c(0,60), xlim = c(0.7,1.5), xlab = ("Log Change Detection RT (sec)"), ylab = ("Frequency"))
ggsave("fig_2_log_histogram.jpg")
corr %>%
gghistogram(x = "raw", fill = "#f7a800", add = "mean", bins = 36, ylim = c(0,80), xlim = c(0,30), xlab = ("Raw Change Detection RT (sec)"), ylab = ("Frequency"))
ggsave("fig_3_raw_histogram.jpg")
corr %>%
ggboxplot(x = "change_type", y = "log", label = "image", font.label = c(5, "plain", "black"), ylab = ("Log Change Detection RT (sec)"), xlab = "Change Type", ylim = c(0.75,1.4))
ggsave("fig_4_log_changetype.jpg")
corr %>%
ggboxplot(x = "change_type", y = "raw", label = "image", font.label = c(5, "plain", "black"), ylab = ("Raw Change Detection RT (sec)"), xlab = "Change Type", ylim = c(5,30))
ggsave("fig_5_raw_changetype.jpg")
fit_log1 = Does likelihood rating predict log change blindness duration? A: Yes. fit_raw1 = Does likelihood rating predict raw change blindness duration? A: Yes.
fit_log1 <- lmer(log ~ likelihood_rating + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all)
summary(fit_log1)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: log ~ likelihood_rating + (1 | workerId) + (1 | image) + (1 |
## stim_set)
## Data: tbl_all
##
## REML criterion at convergence: -5814.8
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.8487 -0.5531 -0.1383 0.3340 5.2174
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 0.0017054 0.04130
## workerId (Intercept) 0.0117514 0.10840
## stim_set (Intercept) 0.0003399 0.01844
## Residual 0.0158299 0.12582
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 9.710e-01 1.384e-02 2.665e+00 70.183 1.98e-05 ***
## likelihood_rating -9.841e-03 1.807e-03 2.683e+03 -5.445 5.64e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## liklhd_rtng -0.405
ci(fit_log1)
## Parameter CI CI_low CI_high
## 1 (Intercept) 95 0.9438773 0.998110187
## 2 likelihood_rating 95 -0.0133837 -0.006299196
corr %>%
ggscatter(y = "log", x = "likelihood_rating", ylab = "Log Change Detection RT (sec)", xlab = "Likelihood of Detecting Change", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(0.75, 1.4))
ggsave("fig_6_likelihood_predict_log.jpg")
fit_raw1 <- lmer(detection_rt ~ likelihood_rating + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all)
summary(fit_raw1)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: detection_rt ~ likelihood_rating + (1 | workerId) + (1 | image) +
## (1 | stim_set)
## Data: tbl_all
##
## REML criterion at convergence: 31087.7
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.7473 -0.4185 -0.1301 0.1484 9.1228
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.5595 1.2488
## workerId (Intercept) 7.9059 2.8118
## stim_set (Intercept) 0.3667 0.6055
## Residual 19.6149 4.4289
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 10.58004 0.42883 3.42545 24.672 5.58e-05 ***
## likelihood_rating -0.33206 0.06131 2415.40510 -5.416 6.68e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## liklhd_rtng -0.445
ci(fit_raw1)
## Parameter CI CI_low CI_high
## 1 (Intercept) 95 9.7395530 11.4205365
## 2 likelihood_rating 95 -0.4522239 -0.2119055
corr %>%
ggscatter(y = "raw", x = "likelihood_rating", ylab = "Raw Change Detection RT (sec)", xlab = "Likelihood of Detecting Change", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(5, 30))
ggsave("fig_7_likelihood_predict_raw.jpg")
Conclusion: Yes, ratings of change blindness ability predict change blindness duration.
Do likelihood ratings better predict change blindness duration beyond what is predicted from image-related properties (change size, eccentricity, and change type) alone?
Size of change. A: Yes.
model1a_log <- lmer(log ~ change_percent + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model1a_log)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: log ~ change_percent + (1 | workerId) + (1 | image) + (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## -5800.9 -5761.6 2906.5 -5812.9 5204
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.7724 -0.5460 -0.1409 0.3318 5.2184
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.940e-03 4.405e-02
## workerId (Intercept) 1.186e-02 1.089e-01
## stim_set (Intercept) 3.007e-10 1.734e-05
## Residual 1.579e-02 1.256e-01
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 0.951402 0.008092 272.746848 117.574 < 2e-16 ***
## change_percent -0.003811 0.001288 468.123515 -2.959 0.00324 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## chang_prcnt -0.225
model1b_log <- lmer(log ~ change_percent + likelihood_rating + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model1b_log)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: log ~ change_percent + likelihood_rating + (1 | workerId) + (1 |
## image) + (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## -5827.8 -5781.9 2920.9 -5841.8 5203
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.8544 -0.5508 -0.1412 0.3345 5.2205
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.667e-03 4.083e-02
## workerId (Intercept) 1.174e-02 1.084e-01
## stim_set (Intercept) 1.477e-10 1.215e-05
## Residual 1.582e-02 1.258e-01
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 9.818e-01 9.753e-03 5.414e+02 100.669 < 2e-16 ***
## change_percent -3.799e-03 1.238e-03 4.506e+02 -3.068 0.00229 **
## likelihood_rating -9.933e-03 1.802e-03 2.656e+03 -5.511 3.91e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) chng_p
## chang_prcnt -0.184
## liklhd_rtng -0.571 0.007
## convergence code: 0
## boundary (singular) fit: see ?isSingular
anova(model1a_log,model1b_log)
## Data: tbl_all
## Models:
## model1a_log: log ~ change_percent + (1 | workerId) + (1 | image) + (1 | stim_set)
## model1b_log: log ~ change_percent + likelihood_rating + (1 | workerId) + (1 |
## model1b_log: image) + (1 | stim_set)
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## model1a_log 6 -5800.9 -5761.6 2906.5 -5812.9
## model1b_log 7 -5827.8 -5781.9 2920.9 -5841.8 28.909 1 7.586e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model2a_raw <- lmer(detection_rt ~ change_percent + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model2a_raw)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: detection_rt ~ change_percent + (1 | workerId) + (1 | image) +
## (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## 31117.1 31156.4 -15552.5 31105.1 5204
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.6665 -0.4133 -0.1274 0.1467 9.0153
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.791e+00 1.3383490
## workerId (Intercept) 8.025e+00 2.8328350
## stim_set (Intercept) 2.431e-07 0.0004931
## Residual 1.958e+01 4.4245791
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 9.87817 0.22015 287.72798 44.871 < 2e-16 ***
## change_percent -0.11328 0.04094 484.75324 -2.767 0.00587 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## chang_prcnt -0.265
model2b_raw <- lmer(detection_rt ~ change_percent + likelihood_rating + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model2b_raw)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: detection_rt ~ change_percent + likelihood_rating + (1 | workerId) +
## (1 | image) + (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## 31090.4 31136.3 -15538.2 31076.4 5203
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.7508 -0.4178 -0.1340 0.1473 9.1099
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.529679 1.23680
## workerId (Intercept) 7.933779 2.81670
## stim_set (Intercept) 0.006188 0.07866
## Residual 19.607618 4.42805
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 10.89898 0.29197 7.42153 37.329 1.02e-09 ***
## change_percent -0.11173 0.03960 311.00739 -2.821 0.00509 **
## likelihood_rating -0.33445 0.06117 2393.77505 -5.468 5.03e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) chng_p
## chang_prcnt -0.199
## liklhd_rtng -0.647 0.002
anova(model2a_raw,model2b_raw)
## Data: tbl_all
## Models:
## model2a_raw: detection_rt ~ change_percent + (1 | workerId) + (1 | image) +
## model2a_raw: (1 | stim_set)
## model2b_raw: detection_rt ~ change_percent + likelihood_rating + (1 | workerId) +
## model2b_raw: (1 | image) + (1 | stim_set)
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## model2a_raw 6 31117 31156 -15552 31105
## model2b_raw 7 31090 31136 -15538 31076 28.707 1 8.422e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Eccentricity. A: Yes.
model3a_log <- lmer(log ~ eccentricity + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model3a_log)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: log ~ eccentricity + (1 | workerId) + (1 | image) + (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## -5804.6 -5765.2 2908.3 -5816.6 5204
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.7216 -0.5450 -0.1436 0.3361 5.2760
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.888e-03 0.043457
## workerId (Intercept) 1.200e-02 0.109557
## stim_set (Intercept) 4.659e-05 0.006826
## Residual 1.579e-02 0.125645
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 9.231e-01 1.076e-02 2.595e+00 85.754 1.5e-05 ***
## eccentricity 1.124e-04 3.194e-05 4.150e+02 3.519 0.000481 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## eccentricty -0.570
model3b_log <- lmer(log ~ eccentricity + likelihood_rating + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model3b_log)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: log ~ eccentricity + likelihood_rating + (1 | workerId) + (1 |
## image) + (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## -5831.9 -5786.0 2922.9 -5845.9 5203
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.7989 -0.5485 -0.1394 0.3332 5.2834
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.617e-03 0.040209
## workerId (Intercept) 1.185e-02 0.108844
## stim_set (Intercept) 6.735e-05 0.008206
## Residual 1.582e-02 0.125795
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 9.533e-01 1.219e-02 5.933e+00 78.183 3.61e-10 ***
## eccentricity 1.120e-04 3.064e-05 4.021e+02 3.656 0.00029 ***
## likelihood_rating -9.978e-03 1.798e-03 2.620e+03 -5.550 3.14e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) eccntr
## eccentricty -0.481
## liklhd_rtng -0.454 -0.002
anova(model3a_log,model3b_log)
## Data: tbl_all
## Models:
## model3a_log: log ~ eccentricity + (1 | workerId) + (1 | image) + (1 | stim_set)
## model3b_log: log ~ eccentricity + likelihood_rating + (1 | workerId) + (1 |
## model3b_log: image) + (1 | stim_set)
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## model3a_log 6 -5804.6 -5765.2 2908.3 -5816.6
## model3b_log 7 -5831.9 -5786.0 2922.9 -5845.9 29.314 1 6.155e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model4a_raw <- lmer(detection_rt ~ eccentricity + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model4a_raw)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: detection_rt ~ eccentricity + (1 | workerId) + (1 | image) +
## (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## 31120.6 31160.0 -15554.3 31108.6 5204
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.6368 -0.4171 -0.1304 0.1447 9.0504
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.7929 1.3390
## workerId (Intercept) 8.0242 2.8327
## stim_set (Intercept) 0.1867 0.4321
## Residual 19.5786 4.4248
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 9.235e+00 3.753e-01 4.113e+00 24.608 1.27e-05 ***
## eccentricity 1.929e-03 1.048e-03 4.092e+02 1.841 0.0663 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr)
## eccentricty -0.533
model4b_raw <- lmer(detection_rt ~ eccentricity + likelihood_rating + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model4b_raw)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: detection_rt ~ eccentricity + likelihood_rating + (1 | workerId) +
## (1 | image) + (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## 31094.0 31139.9 -15540.0 31080.0 5203
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.7175 -0.4196 -0.1316 0.1487 9.1475
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.5364 1.2395
## workerId (Intercept) 7.9432 2.8184
## stim_set (Intercept) 0.1577 0.3971
## Residual 19.6078 4.4281
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 1.027e+01 4.060e-01 7.574e+00 25.304 1.36e-08 ***
## eccentricity 1.923e-03 1.010e-03 4.003e+02 1.904 0.0576 .
## likelihood_rating -3.337e-01 6.121e-02 2.403e+03 -5.452 5.49e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) eccntr
## eccentricty -0.474
## liklhd_rtng -0.466 -0.002
anova(model4a_raw,model4b_raw)
## Data: tbl_all
## Models:
## model4a_raw: detection_rt ~ eccentricity + (1 | workerId) + (1 | image) +
## model4a_raw: (1 | stim_set)
## model4b_raw: detection_rt ~ eccentricity + likelihood_rating + (1 | workerId) +
## model4b_raw: (1 | image) + (1 | stim_set)
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## model4a_raw 6 31121 31160 -15554 31109
## model4b_raw 7 31094 31140 -15540 31080 28.571 1 9.032e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Type of change. A: Yes.
model5a_log <- lmer(log ~ change_type + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model5a_log)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: log ~ change_type + (1 | workerId) + (1 | image) + (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## -5797.1 -5738.1 2907.6 -5815.1 5201
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.7466 -0.5536 -0.1380 0.3334 5.1830
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 0.001902 0.04361
## workerId (Intercept) 0.011977 0.10944
## stim_set (Intercept) 0.000000 0.00000
## Residual 0.015790 0.12566
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 0.961522 0.010126 476.541412 94.957 < 2e-16 ***
## change_typedisappear -0.017518 0.008438 443.002675 -2.076 0.03846 *
## change_typemovement -0.029171 0.012616 453.564508 -2.312 0.02121 *
## change_typereplacement -0.021801 0.030943 450.793276 -0.705 0.48145
## change_typesize -0.048274 0.017669 461.168650 -2.732 0.00653 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) chng_typd chng_typm chng_typr
## chng_typdsp -0.614
## chng_typmvm -0.306 0.354
## chng_typrpl -0.128 0.144 0.168
## chang_typsz -0.220 0.246 0.289 0.161
## convergence code: 0
## boundary (singular) fit: see ?isSingular
model5b_log <- lmer(log ~ change_type + likelihood_rating + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model5b_log)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: log ~ change_type + likelihood_rating + (1 | workerId) + (1 |
## image) + (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## -5831.2 -5765.6 2925.6 -5851.2 5200
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.8352 -0.5519 -0.1338 0.3269 5.1783
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 0.001558 0.03947
## workerId (Intercept) 0.011768 0.10848
## stim_set (Intercept) 0.000000 0.00000
## Residual 0.015844 0.12587
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 9.983e-01 1.152e-02 7.389e+02 86.693 < 2e-16 ***
## change_typedisappear -1.878e-02 8.013e-03 4.188e+02 -2.344 0.019566 *
## change_typemovement -4.254e-02 1.219e-02 4.585e+02 -3.490 0.000530 ***
## change_typereplacement -2.835e-02 2.943e-02 4.381e+02 -0.963 0.335978
## change_typesize -5.853e-02 1.689e-02 4.505e+02 -3.467 0.000577 ***
## likelihood_rating -1.134e-02 1.827e-03 2.858e+03 -6.207 6.19e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) chng_typd chng_typm chng_typr chng_typs
## chng_typdsp -0.525
## chng_typmvm -0.344 0.350
## chng_typrpl -0.126 0.144 0.174
## chang_typsz -0.234 0.245 0.304 0.167
## liklhd_rtng -0.519 0.025 0.181 0.037 0.100
## convergence code: 0
## boundary (singular) fit: see ?isSingular
anova(model5a_log,model5b_log)
## Data: tbl_all
## Models:
## model5a_log: log ~ change_type + (1 | workerId) + (1 | image) + (1 | stim_set)
## model5b_log: log ~ change_type + likelihood_rating + (1 | workerId) + (1 |
## model5b_log: image) + (1 | stim_set)
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## model5a_log 9 -5797.1 -5738.1 2907.6 -5815.1
## model5b_log 10 -5831.2 -5765.6 2925.6 -5851.2 36.07 1 1.904e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model6a_raw <- lmer(detection_rt ~ change_type + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model6a_raw)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: detection_rt ~ change_type + (1 | workerId) + (1 | image) + (1 |
## stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## 31116.3 31175.4 -15549.2 31098.3 5201
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.6339 -0.4143 -0.1248 0.1494 9.0205
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.716e+00 1.310e+00
## workerId (Intercept) 8.109e+00 2.848e+00
## stim_set (Intercept) 3.678e-18 1.918e-09
## Residual 1.958e+01 4.425e+00
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 10.3528 0.2927 509.4464 35.370 < 2e-16 ***
## change_typedisappear -0.7436 0.2677 448.5829 -2.777 0.00571 **
## change_typemovement -1.0766 0.4064 452.5058 -2.649 0.00835 **
## change_typereplacement -1.1019 1.0027 452.8482 -1.099 0.27238
## change_typesize -1.6335 0.5698 459.0375 -2.867 0.00433 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) chng_typd chng_typm chng_typr
## chng_typdsp -0.675
## chng_typmvm -0.343 0.361
## chng_typrpl -0.143 0.147 0.165
## chang_typsz -0.247 0.252 0.285 0.157
## convergence code: 0
## boundary (singular) fit: see ?isSingular
model6b_raw <- lmer(detection_rt ~ change_type + likelihood_rating + (1 | workerId) + (1 | image) + (1 | stim_set), data=tbl_all, REML=FALSE)
summary(model6b_raw)
## Linear mixed model fit by maximum likelihood . t-tests use Satterthwaite's
## method [lmerModLmerTest]
## Formula: detection_rt ~ change_type + likelihood_rating + (1 | workerId) +
## (1 | image) + (1 | stim_set)
## Data: tbl_all
##
## AIC BIC logLik deviance df.resid
## 31081.3 31146.9 -15530.6 31061.3 5200
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.7248 -0.4202 -0.1323 0.1525 9.1105
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.378 1.174
## workerId (Intercept) 7.947 2.819
## stim_set (Intercept) 0.000 0.000
## Residual 19.631 4.431
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 11.61454 0.34890 852.54452 33.289 < 2e-16 ***
## change_typedisappear -0.78907 0.25516 428.77478 -3.092 0.002115 **
## change_typemovement -1.52552 0.39424 464.67523 -3.869 0.000125 ***
## change_typereplacement -1.31618 0.95681 445.96898 -1.376 0.169638
## change_typesize -1.97785 0.54626 454.72491 -3.621 0.000327 ***
## likelihood_rating -0.38749 0.06189 2562.56277 -6.261 4.48e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) chng_typd chng_typm chng_typr chng_typs
## chng_typdsp -0.556
## chng_typmvm -0.376 0.358
## chng_typrpl -0.136 0.147 0.171
## chang_typsz -0.255 0.251 0.301 0.163
## liklhd_rtng -0.583 0.029 0.186 0.038 0.103
## convergence code: 0
## boundary (singular) fit: see ?isSingular
anova(model6a_raw,model6b_raw)
## Data: tbl_all
## Models:
## model6a_raw: detection_rt ~ change_type + (1 | workerId) + (1 | image) + (1 |
## model6a_raw: stim_set)
## model6b_raw: detection_rt ~ change_type + likelihood_rating + (1 | workerId) +
## model6b_raw: (1 | image) + (1 | stim_set)
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## model6a_raw 9 31116 31175 -15549 31098
## model6b_raw 10 31081 31147 -15531 31061 37.036 1 1.16e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Conclusion: Change blindness duration is better predicted by the size of the change, the eccentricity of the change, and the type of the change when accounting for likelihood ratings.
tbl_all_mod <- tbl_all[, -c(8,9,10,11,12,13,14,16,17,19,20,21,22,23,24)]
names(tbl_all_mod)[4] <- "raw_CB_duration"
names(tbl_all_mod)[11] <- "log_CB_duration"
tbl_all_mod$group = "return"
rensink_new <- list.files(path = "./Rensink_New", pattern = "*.csv", full.names = T, ignore.case = F) %>%
map_df(~read.csv(., colClasses=c("gender..m.f."="character", "a"="character", "tp_a"="character")))
nrow(rensink_new %>% distinct(workerId,.keep_all = FALSE))
## [1] 36
rensink_new <- rensink_new %>%
group_by(workerId) %>%
filter(any(Airplane_resp.keys >= 4) & any(Boat_resp.keys >= 4) & any(Cow_resp.keys >= 4) & any(Garden_resp.keys <= 3))
nrow(rensink_new %>% distinct(workerId,.keep_all = FALSE))
## [1] 20
rensink_new = subset(rensink_new, select = c(user_resp.keys,user_resp.rt,workerId,image_a))
col_idx <- grep("workerId", names(rensink_new))
rensink_new <- rensink_new[, c(col_idx, (1:ncol(rensink_new))[-col_idx])]
rensink_new <- data.frame(na.omit(rensink_new))
rensink_new <- rensink_new %>%
separate(image_a,into=c('database', 'image'), sep = "([\\_])", extra = "merge")
rensink_new$image <- lapply(rensink_new$image, gsub, pattern='-a_w_outline.jpg', replacement='')
rensink_new <- rensink_new %>%
mutate(image = as.character(image))
ma_new <- list.files(path = "./Ma_New", pattern = "*.csv", full.names = T, ignore.case = F) %>%
map_df(~read.csv(., colClasses=c("gender..m.f."="character", "a"="character", "tp_a"="character")))
nrow(ma_new %>% distinct(workerId,.keep_all = FALSE))
## [1] 45
ma_new <- ma_new %>%
group_by(workerId) %>%
filter(any(Airplane_resp.keys >= 4) & any(Boat_resp.keys >= 4) & any(Cow_resp.keys >= 4) & any(Garden_resp.keys <= 3))
nrow(ma_new %>% distinct(workerId,.keep_all = FALSE))
## [1] 37
ma_new = subset(ma_new, select = c(user_resp.keys,user_resp.rt,workerId,image_a))
col_idx <- grep("workerId", names(ma_new))
ma_new <- ma_new[, c(col_idx, (1:ncol(ma_new))[-col_idx])]
ma_new <- data.frame(na.omit(ma_new))
ma_new <- ma_new %>%
separate(image_a,into=c('database', 'image'), sep = "([\\_])", extra = "merge")
ma_new$image <- lapply(ma_new$image, gsub, pattern='-a_w_outline.jpg', replacement='')
ma_new <- ma_new %>%
mutate(image = as.character(image))
wolfe1_new <- list.files(path = "./Wolfe1_New", pattern = "*.csv", full.names = T, ignore.case = F) %>%
map_df(~read.csv(., colClasses=c("gender..m.f."="character", "a"="character", "tp_a"="character")))
nrow(wolfe1_new %>% distinct(workerId,.keep_all = FALSE))
## [1] 88
wolfe1_new <- wolfe1_new %>%
group_by(workerId) %>%
filter(any(Airplane_resp.keys >= 4) & any(Boat_resp.keys >= 4) & any(Cow_resp.keys >= 4) & any(Garden_resp.keys <= 3))
nrow(wolfe1_new %>% distinct(workerId,.keep_all = FALSE))
## [1] 64
wolfe1_new = subset(wolfe1_new, select = c(user_resp.keys,user_resp.rt,workerId,image_a))
col_idx <- grep("workerId", names(wolfe1_new))
wolfe1_new <- wolfe1_new[, c(col_idx, (1:ncol(wolfe1_new))[-col_idx])]
wolfe1_new <- data.frame(na.omit(wolfe1_new))
wolfe1_new <- wolfe1_new %>%
separate(image_a,into=c('database', 'image'), sep = "([\\_])")
wolfe1_new$image <- lapply(wolfe1_new$image, gsub, pattern='-a', replacement='')
wolfe1_new <- wolfe1_new %>%
mutate(image = as.character(image))
wolfe1_new$database = "wolfe1"
wolfe2_new <- list.files(path = "./Wolfe2_New", pattern = "*.csv", full.names = T, ignore.case = F) %>%
map_df(~read.csv(., colClasses=c("gender..m.f."="character", "a"="character", "tp_a"="character")))
nrow(wolfe2_new %>% distinct(workerId,.keep_all = FALSE))
## [1] 165
wolfe2_new <- wolfe2_new %>%
group_by(workerId) %>%
filter(any(Airplane_resp.keys >= 4) & any(Boat_resp.keys >= 4) & any(Cow_resp.keys >= 4) & any(Garden_resp.keys <= 3))
nrow(wolfe2_new %>% distinct(workerId,.keep_all = FALSE))
## [1] 103
wolfe2_new = subset(wolfe2_new, select = c(user_resp.keys,user_resp.rt,workerId,image_a))
col_idx <- grep("workerId", names(wolfe2_new))
wolfe2_new <- wolfe2_new[, c(col_idx, (1:ncol(wolfe2_new))[-col_idx])]
wolfe2_new <- data.frame(na.omit(wolfe2_new))
wolfe2_new <- wolfe2_new %>%
separate(image_a,into=c('database', 'image'), sep = "([\\_])", extra = "merge")
wolfe2_new$image <- lapply(wolfe2_new$image, gsub, pattern='-a_w_outline.jpg', replacement='')
wolfe2_new <- wolfe2_new %>%
mutate(image = as.character(image))
wolfe2_new$database = "wolfe2"
new_ratings <- rbind(rensink_new, ma_new, wolfe1_new, wolfe2_new)
names(new_ratings)[2] <- "likelihood_rating"
names(new_ratings)[3] <- "likelihood_rt"
names(new_ratings)[4] <- "stim_set"
new_subj_avg <- new_ratings %>%
group_by(workerId,image) %>%
dplyr::summarize(average = mean(likelihood_rating)) %>%
spread(image,average) %>%
mutate(subj_avg = rowMeans(.[-1], na.rm = TRUE))
mean(new_subj_avg$subj_avg)
## [1] 3.032961
new_img_avg <- data.frame(new_img_avg = colMeans(new_subj_avg[,2:483], na.rm = TRUE))
new_img_avg <- tibble::rownames_to_column(new_img_avg, "image")
new_ratings_mod <- left_join(new_ratings, Box_and_change_info, by = "image")
new_ratings_mod <- new_ratings_mod[, -c(6,7,8,9,10,11,12,14,15,17,18,19,20,21,22)]
all_change_type<- read_csv("All_change_type.csv", col_types = cols())
new_ratings_mod <- left_join(new_ratings_mod, all_change_type, by = "image")
new_ratings_mod$group = "new"
return_new <- rbind.fill(tbl_all_mod, new_ratings_mod)
write.csv(return_new, "return_new_data.csv", row.names=FALSE)
nrow(return_new %>% distinct(workerId,.keep_all = FALSE))
## [1] 443
new_avg <- return_new %>%
filter(group == "new") %>%
group_by(image) %>%
summarise_at(vars(likelihood_rating), funs(mean(., na.rm=TRUE)))
names(new_avg)[2] <- "new_avg_likelihood_rating"
return_new <- return_new %>%
filter (group == "return")
return_new <- left_join(return_new, new_avg, by = "image")
fit_return_new_log <- lmer(log_CB_duration ~ likelihood_rating + new_avg_likelihood_rating + (1|workerId) + (1|image) + (1|stim_set), data=return_new)
summary(fit_return_new_log)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: log_CB_duration ~ likelihood_rating + new_avg_likelihood_rating +
## (1 | workerId) + (1 | image) + (1 | stim_set)
## Data: return_new
##
## REML criterion at convergence: -5838.4
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.7768 -0.5502 -0.1432 0.3393 5.2624
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 0.0015754 0.03969
## workerId (Intercept) 0.0118641 0.10892
## stim_set (Intercept) 0.0001133 0.01064
## Residual 0.0157855 0.12564
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 1.023e+00 1.416e-02 3.773e+00 72.280 4.56e-07 ***
## likelihood_rating -3.695e-03 2.098e-03 4.786e+03 -1.761 0.0783 .
## new_avg_likelihood_rating -2.230e-02 3.848e-03 7.300e+02 -5.795 1.02e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) lklhd_
## liklhd_rtng -0.022
## nw_vg_lklh_ -0.601 -0.520
ci(fit_return_new_log)
## Parameter CI CI_low CI_high
## 1 (Intercept) 95 0.995553677 1.0510498059
## 2 likelihood_rating 95 -0.007806063 0.0004167731
## 3 new_avg_likelihood_rating 95 -0.029836948 -0.0147545697
fit_return_new_raw <- lmer(raw_CB_duration ~ likelihood_rating + new_avg_likelihood_rating + (1|workerId) + (1|image) + (1|stim_set), data=return_new)
summary(fit_return_new_raw)
## Linear mixed model fit by REML. t-tests use Satterthwaite's method [
## lmerModLmerTest]
## Formula: raw_CB_duration ~ likelihood_rating + new_avg_likelihood_rating +
## (1 | workerId) + (1 | image) + (1 | stim_set)
## Data: return_new
##
## REML criterion at convergence: 31065.5
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.6800 -0.4243 -0.1330 0.1556 9.1231
##
## Random effects:
## Groups Name Variance Std.Dev.
## image (Intercept) 1.4661 1.2108
## workerId (Intercept) 7.9467 2.8190
## stim_set (Intercept) 0.2186 0.4676
## Residual 19.5709 4.4239
## Number of obs: 5210, groups: image, 480; workerId, 219; stim_set, 4
##
## Fixed effects:
## Estimate Std. Error df t value Pr(>|t|)
## (Intercept) 12.00054 0.46978 6.64059 25.545 7.02e-08 ***
## likelihood_rating -0.14268 0.07222 4909.86913 -1.976 0.0483 *
## new_avg_likelihood_rating -0.63762 0.12821 759.21568 -4.973 8.14e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Correlation of Fixed Effects:
## (Intr) lklhd_
## liklhd_rtng -0.023
## nw_vg_lklh_ -0.589 -0.537
ci(fit_return_new_raw)
## Parameter CI CI_low CI_high
## 1 (Intercept) 95 11.0797891 12.921298316
## 2 likelihood_rating 95 -0.2842312 -0.001123464
## 3 new_avg_likelihood_rating 95 -0.8888971 -0.386340313
return_new_corr <- return_new %>%
group_by(image) %>%
dplyr::summarize(likelihood_rating = mean(likelihood_rating), new_avg_likelihood_rating = mean(new_avg_likelihood_rating))
return_new_corr %>%
ggscatter(y = "likelihood_rating", x = "new_avg_likelihood_rating", ylab = "Return subject rating", xlab = "New subject rating", add = "reg.line", conf.int = TRUE, xlim = c(1, 5), ylim = c(1, 5))
ggsave("fig_18_return_new.jpg")