library(tidyverse)
library(ggplot2)
library(ggpubr)
library(plyr)
library(magick)
library(rstatix)
library(reshape2)
library(knitr)
library(lme4)
Make sure you’re in the right directory. Set the R working drectory to the main experiment directory, which is where this markdown is saved, along with any supporting material and raw data, which are stored as a subdirectory.
setwd("/Users/adambarnas/Box/MeridianCB")
Read in the individual subject files (saved automatically on the server as csv files).
tbl_all <- list.files(path = "./data_v2/", pattern = "*.csv", full.names = T) %>%
map_df(~read_csv(.))
tbl_all <- data.frame(tbl_all)
Confirm the number of subjects and make sure the sample sizes reflects the number of data files in the data subdirectory.
nrow(tbl_all %>% distinct(workerId,.keep_all = FALSE))
## [1] 88
Next, define trial conditions by breaking apart the name of the image, given by objs_image column.
tbl_all <- tbl_all %>%
separate(objs_image,into=c('rectangle_orientation','cue_loc','change_loc','validity','display_num','change_type'))
For clarity, rename all the variable values that are now given by the validity variable.
tbl_all <- tbl_all %>% mutate(validity=recode_factor(validity, `V`="valid_same", `C`="catch_catch", `IS`="invalid_same", `ID`="invalid_different", `objects`="NA"))
Let’s also assign the trials to bins based on the trial number. The practice trials (the first 4 for each subject) will be labeled “filler” since they are not factored into any analyses.
tbl_all$bin = "filler"
tbl_all[which(tbl_all$trial_number %in% c(5:27)), "bin"] = 1
tbl_all[which(tbl_all$trial_number %in% c(28:50)), "bin"] = 2
tbl_all[which(tbl_all$trial_number %in% c(51:73)), "bin"] = 3
tbl_all[which(tbl_all$trial_number %in% c(74:96)), "bin"] = 4
tbl_all$bin <- as.numeric(tbl_all$bin)
class(tbl_all$bin)
## [1] "numeric"
Before proceding, this table contains the number of trials for each individual. There were 80 target-present trials that were 60% valid (48 trials) and 40% invalid (16 trials for each type). There were also 12 catch trials. The numbers of each trial type were split evenly among the 4 cue locations. The last variable, “sum”, is the total number of trials saved for each participant.
tbl_all_counts <- tbl_all %>%
group_by(workerId,validity) %>%
filter(validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different' | validity=='catch_catch') %>%
dplyr::summarize(counts = n()) %>%
spread(validity,counts)
tbl_all_counts$total_sum = rowSums(tbl_all_counts[,c(-1)], na.rm = TRUE)
kable(tbl_all_counts)
| workerId | valid_same | catch_catch | invalid_same | invalid_different | total_sum |
|---|---|---|---|---|---|
| A101TNXQVR2UPO | 48 | 12 | 16 | 16 | 92 |
| A11Q3D9ADJUKHP | 48 | 12 | 16 | 16 | 92 |
| A11SVF9ZNHO1EW | 48 | 12 | 16 | 16 | 92 |
| A11U9MQRLTBD7S | 48 | 12 | 16 | 16 | 92 |
| A16O7CY4VH5BCP | 48 | 12 | 16 | 16 | 92 |
| A16Z47IWMSXYHP | 48 | 12 | 16 | 16 | 92 |
| A17WT0K0HFTW9U | 48 | 12 | 16 | 16 | 92 |
| A19BZSL0LVFBO2 | 48 | 12 | 16 | 16 | 92 |
| A19L8SNH73AX1Z | 48 | 12 | 16 | 16 | 92 |
| A1BKF0KULCF6Y6 | 48 | 12 | 16 | 16 | 92 |
| A1BVG13MHBM1YD | 48 | 12 | 16 | 16 | 92 |
| A1FYWSPNO7KN1O | 48 | 12 | 16 | 16 | 92 |
| A1L3937MY09J3I | 48 | 12 | 16 | 16 | 92 |
| A1NN3OSYKM7BLG | 48 | 12 | 16 | 16 | 92 |
| A1PUWQYUQRGCO | 48 | 12 | 16 | 16 | 92 |
| A1SISJL5ST2PWH | 48 | 12 | 16 | 16 | 92 |
| A1TARNH07A75CG | 48 | 12 | 16 | 16 | 92 |
| A1TZARLMBLCJ8X | 48 | 12 | 16 | 16 | 92 |
| A1V2H0UF94ATWY | 48 | 12 | 16 | 16 | 92 |
| A1ZE87WEYCA44A | 48 | 12 | 16 | 16 | 92 |
| A2182DBITJFCMZ | 48 | 12 | 16 | 16 | 92 |
| A21D9YDJU8K2QI | 48 | 12 | 16 | 16 | 92 |
| A21TBK48OBJYSX | 48 | 12 | 16 | 16 | 92 |
| A21UA6O7ZFAIQJ | 48 | 12 | 16 | 16 | 92 |
| A220ZCMBT1YMMU | 48 | 12 | 16 | 16 | 92 |
| A222ICMHU5JXLA | 48 | 12 | 16 | 16 | 92 |
| A22JZM6BEETFWF | 48 | 12 | 16 | 16 | 92 |
| A2482SLAY120J2 | 48 | 12 | 16 | 16 | 92 |
| A248QG4DPULP46 | 48 | 12 | 16 | 16 | 92 |
| A26Z8M2VSEWUU4 | 48 | 12 | 16 | 16 | 92 |
| A29YJJRBSB7D8I | 48 | 12 | 16 | 16 | 92 |
| A2APG8MSLJ6G2K | 48 | 12 | 16 | 16 | 92 |
| A2BFHU3EGQES4W | 48 | 12 | 16 | 16 | 92 |
| A2CHD0TNWHFW1R | 48 | 12 | 16 | 16 | 92 |
| A2FGKKWP33DFWS | 48 | 12 | 16 | 16 | 92 |
| A2GOYSTIL3LOV1 | 48 | 12 | 16 | 16 | 92 |
| A2ODH6HV36EP88 | 48 | 12 | 16 | 16 | 92 |
| A2OVMMDZQ524IL | 48 | 12 | 16 | 16 | 92 |
| A2PIFMM4Q2I9ZS | 46 | 12 | 16 | 16 | 90 |
| A2PSR3CMNR1R9X | 48 | 12 | 16 | 16 | 92 |
| A2VLTSW6CXIUMR | 48 | 12 | 16 | 16 | 92 |
| A2VNSNAN1LZBAM | 48 | 12 | 16 | 16 | 92 |
| A2WC2NO555XU3J | 48 | 12 | 16 | 16 | 92 |
| A32S6A9SWM5Z67 | 48 | 12 | 16 | 16 | 92 |
| A36UNYMDBED99W | 48 | 12 | 16 | 16 | 92 |
| A39GADIK8RLMVC | 48 | 12 | 16 | 16 | 92 |
| A3CASN6JG7104 | 48 | 12 | 16 | 16 | 92 |
| A3CL8WUGLQHRP | 48 | 12 | 16 | 16 | 92 |
| A3DWL14MDONAJ | 48 | 12 | 16 | 16 | 92 |
| A3E8NUUS90EWXW | 48 | 12 | 16 | 16 | 92 |
| A3EC3OP6U52JYC | 48 | 12 | 16 | 16 | 92 |
| A3FCZNB9E8K3CX | 48 | 12 | 16 | 16 | 92 |
| A3GK90X2QOFR53 | 48 | 12 | 16 | 16 | 92 |
| A3H32595TVJ34Q | 48 | 12 | 16 | 16 | 92 |
| A3K2ZXAFZCHYZI | 48 | 12 | 16 | 16 | 92 |
| A3K9GTQBOI7O5A | 48 | 12 | 16 | 16 | 92 |
| A3KF6O09H04SP7 | 48 | 12 | 16 | 16 | 92 |
| A3KQXRF52U36P2 | 48 | 12 | 16 | 16 | 92 |
| A3L7IWDL0R3KU9 | 48 | 12 | 16 | 16 | 92 |
| A3OZB09ZZLZEFQ | 48 | 12 | 16 | 16 | 92 |
| A3QRZPJT2CT2IK | 48 | 12 | 16 | 16 | 92 |
| A3R818WN41K12K | 48 | 12 | 16 | 16 | 92 |
| A3S4M1GQAMPFZB | 48 | 12 | 16 | 16 | 92 |
| A3S9VNTRSE21UI | 48 | 12 | 16 | 16 | 92 |
| A3SG9Z3TANEGBG | 48 | 12 | 16 | 16 | 92 |
| A3SYY5R44RAATE | 48 | 12 | 16 | 16 | 92 |
| A3UDUHUVFKD833 | 48 | 12 | 16 | 16 | 92 |
| A4W9APAHFWVLO | 48 | 12 | 16 | 16 | 92 |
| A6EOG99281TB3 | 48 | 12 | 16 | 16 | 92 |
| A6JKKANO7F4KD | 48 | 12 | 16 | 16 | 92 |
| A6X1DYS5VCIL6 | 48 | 12 | 16 | 16 | 92 |
| AAAHLPAGDOA2U | 48 | 12 | 16 | 16 | 92 |
| AECA0YXYZ6A0K | 48 | 12 | 16 | 16 | 92 |
| AJODPUVR2P18Q | 48 | 12 | 16 | 16 | 92 |
| AK3H5QRAROFGP | 48 | 12 | 16 | 16 | 92 |
| AKVDY8OXNMQED | 48 | 12 | 16 | 16 | 92 |
| ALBIU0ZCAUNON | 48 | 12 | 16 | 16 | 92 |
| AM8OWAW9TUVLN | 48 | 12 | 16 | 16 | 92 |
| ANUT13S1G9RWU | 48 | 12 | 16 | 16 | 92 |
| AQP4PHYDXRBPI | 48 | 12 | 16 | 16 | 92 |
| ARCCEMO6PIE44 | 48 | 12 | 16 | 16 | 92 |
| ARLGZWN6W91WD | 48 | 12 | 16 | 16 | 92 |
| ASB6HK1H1EGA2 | 48 | 12 | 16 | 16 | 92 |
| ASI2B6A3Y556Z | 48 | 12 | 16 | 16 | 92 |
| AU5BD5NSSES9H | 48 | 12 | 16 | 16 | 92 |
| AURYD2FH3FUOQ | 48 | 12 | 16 | 16 | 92 |
| AXCIG7A957UO6 | 48 | 12 | 16 | 16 | 92 |
| AXKVHJHF1EOVT | 48 | 12 | 16 | 16 | 92 |
These counts can also be binned over time (based on sequential trial number)
tbl_all_counts_bin <- tbl_all %>%
group_by(workerId,validity,bin) %>%
filter(validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different' | validity=='catch_catch') %>%
dplyr::summarize(counts = n()) %>%
spread(validity,counts)
tbl_all_counts_bin$sum = rowSums(tbl_all_counts_bin[,c(-1:-2)], na.rm = TRUE)
#kable(tbl_all_counts_bin)
Calculate the number of main trials, excuding catch trials.
tbl_all_counts_no_catch <- tbl_all %>%
group_by(workerId,validity) %>%
filter(validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different') %>%
dplyr::summarize(counts = n()) %>%
spread(validity,counts)
tbl_all_counts_no_catch$sum = rowSums(tbl_all_counts_no_catch[,c(-1)], na.rm = TRUE)
#kable(tbl_all_counts_no_catch)
Again, calculate the number of main trials, excuding catch trials, over time
tbl_all_counts_no_catch_bin <- tbl_all %>%
group_by(workerId,validity,bin) %>%
filter(validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different') %>%
dplyr::summarize(counts = n()) %>%
spread(validity,counts)
tbl_all_counts_no_catch_bin$sum = rowSums(tbl_all_counts_no_catch_bin[,c(-1:-2)], na.rm = TRUE)
#kable(tbl_all_counts_no_catch_bin)
The data are loaded. Next, look at the quality of the data by examining the accuracy of the subjects’ clicks on the changing object and whether any RTs are outliers.
The changing object appeared in four possible locations. A sample image is provided below (Note: (1) the thin border around each obect was not visible to participants and is provided for representational purposes, and (2) only one object appeared at a time.). The following X and Y coordinates (in pixels) were obtained from the Octave/PTB script used to generate the stimuli:
UL: xmin = 22, ymin = 22, xmax, 99, ymax, 99
UR: xmin = 424, ymin = 22, xmax = 501, ymax = 99
LL: xmin = 22, ymin = 424, xmax = 99, ymax = 501
LR: xmin = 424, ymin = 424, xmax = 501, ymax = 501
img <- image_read("/Users/adambarnas/Box/MeridianCB/Object_locs.jpg")
img
The coordinates correspond to the upper-left (UL) and lower-right (LR) points of an object [UL X coor (xmin), UL Y coor (ymin), LR X coor (xmax), and LR Y coor (ymax)]. For instance, the object that appeared in the upperleft had coordinates [22, 22, 99, 99]. Note: these ranges correspond to the size of the image file (a 77x77 pixel square).
Trials are labeled 1 if the X and Y coordinate data fell inside the ranges listed above. Trials are labeled 0 if the X and Y coordinate data fell outside these ranges, and are discarded because this indicates that the subject was not accurate (i.e., one or both of their click coordinates was not within the object boundaries).
tbl_all <- tbl_all %>%
filter(change_loc == "UL" | change_loc == "UR" | change_loc == "LL" | change_loc == "LR")
tbl_all$click_ACC = "filler"
for (i in 1:length(tbl_all$workerId)){
if (tbl_all$change_loc[i] == "UL"){
if ((22 <= tbl_all$x[i] & 99 >= tbl_all$x[i]) && (22 <= tbl_all$y[i] & 99 >= tbl_all$y[i])){
tbl_all$click_ACC[i] = 1
} else {
tbl_all$click_ACC[i] = 0
}
} else if (tbl_all$change_loc[i] == "UR"){
if ((424 <= tbl_all$x[i] & 501 >= tbl_all$x[i]) && (22 <= tbl_all$y[i] & 99 >= tbl_all$y[i])){
tbl_all$click_ACC[i] = 1
} else {
tbl_all$click_ACC[i] = 0
}
} else if (tbl_all$change_loc[i] == "LL"){
if ((22 <= tbl_all$x[i] & 99 >= tbl_all$x[i]) && (424 <= tbl_all$y[i] & 501 >= tbl_all$y[i])){
tbl_all$click_ACC[i] = 1
} else {
tbl_all$click_ACC[i] = 0
}
} else if (tbl_all$change_loc[i] == "LR"){
if ((424 <= tbl_all$x[i] & 501 >= tbl_all$x[i]) && (424 <= tbl_all$y[i] & 501 >= tbl_all$y[i])){
tbl_all$click_ACC[i] = 1
} else {
tbl_all$click_ACC[i] = 0
}
}
}
Sum the number of good catch trials (1) to get the total number of accurate catch trials per subject.
tbl_good_catch_acc_all_main_acc_counts <- tbl_all %>%
filter(validity=='catch_catch')
tbl_good_catch_acc_all_main_acc_counts <- tbl_good_catch_acc_all_main_acc_counts %>%
group_by(workerId,click_ACC) %>%
dplyr::summarize(counts = n()) %>%
spread(click_ACC,counts)
tbl_good_catch_acc_all_main_acc_counts$total = rowSums(tbl_good_catch_acc_all_main_acc_counts[,c(-1)], na.rm = TRUE)
colnames(tbl_good_catch_acc_all_main_acc_counts) <- c("workerId", "inacc_catch", "acc_catch", "total_catch")
kable(tbl_good_catch_acc_all_main_acc_counts)
| workerId | inacc_catch | acc_catch | total_catch |
|---|---|---|---|
| A101TNXQVR2UPO | 9 | 3 | 12 |
| A11Q3D9ADJUKHP | 8 | 4 | 12 |
| A11SVF9ZNHO1EW | 3 | 9 | 12 |
| A11U9MQRLTBD7S | 10 | 2 | 12 |
| A16O7CY4VH5BCP | 1 | 11 | 12 |
| A16Z47IWMSXYHP | NA | 12 | 12 |
| A17WT0K0HFTW9U | 1 | 11 | 12 |
| A19BZSL0LVFBO2 | 12 | NA | 12 |
| A19L8SNH73AX1Z | 2 | 10 | 12 |
| A1BKF0KULCF6Y6 | 5 | 7 | 12 |
| A1BVG13MHBM1YD | NA | 12 | 12 |
| A1FYWSPNO7KN1O | NA | 12 | 12 |
| A1L3937MY09J3I | 5 | 7 | 12 |
| A1NN3OSYKM7BLG | 12 | NA | 12 |
| A1PUWQYUQRGCO | 3 | 9 | 12 |
| A1SISJL5ST2PWH | NA | 12 | 12 |
| A1TARNH07A75CG | 4 | 8 | 12 |
| A1TZARLMBLCJ8X | 1 | 11 | 12 |
| A1V2H0UF94ATWY | NA | 12 | 12 |
| A1ZE87WEYCA44A | 1 | 11 | 12 |
| A2182DBITJFCMZ | 4 | 8 | 12 |
| A21D9YDJU8K2QI | 8 | 4 | 12 |
| A21TBK48OBJYSX | NA | 12 | 12 |
| A21UA6O7ZFAIQJ | NA | 12 | 12 |
| A220ZCMBT1YMMU | NA | 12 | 12 |
| A222ICMHU5JXLA | 11 | 1 | 12 |
| A22JZM6BEETFWF | 12 | NA | 12 |
| A2482SLAY120J2 | 1 | 11 | 12 |
| A248QG4DPULP46 | NA | 12 | 12 |
| A26Z8M2VSEWUU4 | 1 | 11 | 12 |
| A29YJJRBSB7D8I | 10 | 2 | 12 |
| A2APG8MSLJ6G2K | NA | 12 | 12 |
| A2BFHU3EGQES4W | 12 | NA | 12 |
| A2CHD0TNWHFW1R | 1 | 11 | 12 |
| A2FGKKWP33DFWS | NA | 12 | 12 |
| A2GOYSTIL3LOV1 | NA | 12 | 12 |
| A2ODH6HV36EP88 | NA | 12 | 12 |
| A2OVMMDZQ524IL | 9 | 3 | 12 |
| A2PIFMM4Q2I9ZS | 8 | 4 | 12 |
| A2PSR3CMNR1R9X | 1 | 11 | 12 |
| A2VLTSW6CXIUMR | NA | 12 | 12 |
| A2VNSNAN1LZBAM | NA | 12 | 12 |
| A2WC2NO555XU3J | NA | 12 | 12 |
| A32S6A9SWM5Z67 | 11 | 1 | 12 |
| A36UNYMDBED99W | NA | 12 | 12 |
| A39GADIK8RLMVC | NA | 12 | 12 |
| A3CASN6JG7104 | NA | 12 | 12 |
| A3CL8WUGLQHRP | 12 | NA | 12 |
| A3DWL14MDONAJ | 12 | NA | 12 |
| A3E8NUUS90EWXW | 3 | 9 | 12 |
| A3EC3OP6U52JYC | 1 | 11 | 12 |
| A3FCZNB9E8K3CX | NA | 12 | 12 |
| A3GK90X2QOFR53 | NA | 12 | 12 |
| A3H32595TVJ34Q | NA | 12 | 12 |
| A3K2ZXAFZCHYZI | 1 | 11 | 12 |
| A3K9GTQBOI7O5A | 1 | 11 | 12 |
| A3KF6O09H04SP7 | 1 | 11 | 12 |
| A3KQXRF52U36P2 | 8 | 4 | 12 |
| A3L7IWDL0R3KU9 | 1 | 11 | 12 |
| A3OZB09ZZLZEFQ | 12 | NA | 12 |
| A3QRZPJT2CT2IK | 1 | 11 | 12 |
| A3R818WN41K12K | NA | 12 | 12 |
| A3S4M1GQAMPFZB | 2 | 10 | 12 |
| A3S9VNTRSE21UI | 12 | NA | 12 |
| A3SG9Z3TANEGBG | 11 | 1 | 12 |
| A3SYY5R44RAATE | 2 | 10 | 12 |
| A3UDUHUVFKD833 | NA | 12 | 12 |
| A4W9APAHFWVLO | NA | 12 | 12 |
| A6EOG99281TB3 | 12 | NA | 12 |
| A6JKKANO7F4KD | NA | 12 | 12 |
| A6X1DYS5VCIL6 | 12 | NA | 12 |
| AAAHLPAGDOA2U | 1 | 11 | 12 |
| AECA0YXYZ6A0K | 7 | 5 | 12 |
| AJODPUVR2P18Q | 12 | NA | 12 |
| AK3H5QRAROFGP | NA | 12 | 12 |
| AKVDY8OXNMQED | NA | 12 | 12 |
| ALBIU0ZCAUNON | 1 | 11 | 12 |
| AM8OWAW9TUVLN | NA | 12 | 12 |
| ANUT13S1G9RWU | NA | 12 | 12 |
| AQP4PHYDXRBPI | 1 | 11 | 12 |
| ARCCEMO6PIE44 | NA | 12 | 12 |
| ARLGZWN6W91WD | NA | 12 | 12 |
| ASB6HK1H1EGA2 | 9 | 3 | 12 |
| ASI2B6A3Y556Z | 1 | 11 | 12 |
| AU5BD5NSSES9H | 9 | 3 | 12 |
| AURYD2FH3FUOQ | NA | 12 | 12 |
| AXCIG7A957UO6 | 12 | NA | 12 |
| AXKVHJHF1EOVT | NA | 12 | 12 |
Divide the number of accurate catch trials (1) by the number of total catch trials for each participant. The resulting value will be the subjects catch trial rate. Again, subjects with a rate less than 75% (or, .75) will be discarded.
tbl_good_catch_acc_all_main_acc_counts[is.na(tbl_good_catch_acc_all_main_acc_counts)] <- 0
tbl_all_catch_acc_rate <- (tbl_good_catch_acc_all_main_acc_counts$acc_catch / tbl_good_catch_acc_all_main_acc_counts$total_catch)
tbl_all_catch_acc_rate <- cbind.data.frame(tbl_good_catch_acc_all_main_acc_counts[,1], tbl_all_catch_acc_rate)
colnames(tbl_all_catch_acc_rate) <- c("workerId", "catch_rate")
kable(tbl_all_catch_acc_rate)
| workerId | catch_rate |
|---|---|
| A101TNXQVR2UPO | 0.2500000 |
| A11Q3D9ADJUKHP | 0.3333333 |
| A11SVF9ZNHO1EW | 0.7500000 |
| A11U9MQRLTBD7S | 0.1666667 |
| A16O7CY4VH5BCP | 0.9166667 |
| A16Z47IWMSXYHP | 1.0000000 |
| A17WT0K0HFTW9U | 0.9166667 |
| A19BZSL0LVFBO2 | 0.0000000 |
| A19L8SNH73AX1Z | 0.8333333 |
| A1BKF0KULCF6Y6 | 0.5833333 |
| A1BVG13MHBM1YD | 1.0000000 |
| A1FYWSPNO7KN1O | 1.0000000 |
| A1L3937MY09J3I | 0.5833333 |
| A1NN3OSYKM7BLG | 0.0000000 |
| A1PUWQYUQRGCO | 0.7500000 |
| A1SISJL5ST2PWH | 1.0000000 |
| A1TARNH07A75CG | 0.6666667 |
| A1TZARLMBLCJ8X | 0.9166667 |
| A1V2H0UF94ATWY | 1.0000000 |
| A1ZE87WEYCA44A | 0.9166667 |
| A2182DBITJFCMZ | 0.6666667 |
| A21D9YDJU8K2QI | 0.3333333 |
| A21TBK48OBJYSX | 1.0000000 |
| A21UA6O7ZFAIQJ | 1.0000000 |
| A220ZCMBT1YMMU | 1.0000000 |
| A222ICMHU5JXLA | 0.0833333 |
| A22JZM6BEETFWF | 0.0000000 |
| A2482SLAY120J2 | 0.9166667 |
| A248QG4DPULP46 | 1.0000000 |
| A26Z8M2VSEWUU4 | 0.9166667 |
| A29YJJRBSB7D8I | 0.1666667 |
| A2APG8MSLJ6G2K | 1.0000000 |
| A2BFHU3EGQES4W | 0.0000000 |
| A2CHD0TNWHFW1R | 0.9166667 |
| A2FGKKWP33DFWS | 1.0000000 |
| A2GOYSTIL3LOV1 | 1.0000000 |
| A2ODH6HV36EP88 | 1.0000000 |
| A2OVMMDZQ524IL | 0.2500000 |
| A2PIFMM4Q2I9ZS | 0.3333333 |
| A2PSR3CMNR1R9X | 0.9166667 |
| A2VLTSW6CXIUMR | 1.0000000 |
| A2VNSNAN1LZBAM | 1.0000000 |
| A2WC2NO555XU3J | 1.0000000 |
| A32S6A9SWM5Z67 | 0.0833333 |
| A36UNYMDBED99W | 1.0000000 |
| A39GADIK8RLMVC | 1.0000000 |
| A3CASN6JG7104 | 1.0000000 |
| A3CL8WUGLQHRP | 0.0000000 |
| A3DWL14MDONAJ | 0.0000000 |
| A3E8NUUS90EWXW | 0.7500000 |
| A3EC3OP6U52JYC | 0.9166667 |
| A3FCZNB9E8K3CX | 1.0000000 |
| A3GK90X2QOFR53 | 1.0000000 |
| A3H32595TVJ34Q | 1.0000000 |
| A3K2ZXAFZCHYZI | 0.9166667 |
| A3K9GTQBOI7O5A | 0.9166667 |
| A3KF6O09H04SP7 | 0.9166667 |
| A3KQXRF52U36P2 | 0.3333333 |
| A3L7IWDL0R3KU9 | 0.9166667 |
| A3OZB09ZZLZEFQ | 0.0000000 |
| A3QRZPJT2CT2IK | 0.9166667 |
| A3R818WN41K12K | 1.0000000 |
| A3S4M1GQAMPFZB | 0.8333333 |
| A3S9VNTRSE21UI | 0.0000000 |
| A3SG9Z3TANEGBG | 0.0833333 |
| A3SYY5R44RAATE | 0.8333333 |
| A3UDUHUVFKD833 | 1.0000000 |
| A4W9APAHFWVLO | 1.0000000 |
| A6EOG99281TB3 | 0.0000000 |
| A6JKKANO7F4KD | 1.0000000 |
| A6X1DYS5VCIL6 | 0.0000000 |
| AAAHLPAGDOA2U | 0.9166667 |
| AECA0YXYZ6A0K | 0.4166667 |
| AJODPUVR2P18Q | 0.0000000 |
| AK3H5QRAROFGP | 1.0000000 |
| AKVDY8OXNMQED | 1.0000000 |
| ALBIU0ZCAUNON | 0.9166667 |
| AM8OWAW9TUVLN | 1.0000000 |
| ANUT13S1G9RWU | 1.0000000 |
| AQP4PHYDXRBPI | 0.9166667 |
| ARCCEMO6PIE44 | 1.0000000 |
| ARLGZWN6W91WD | 1.0000000 |
| ASB6HK1H1EGA2 | 0.2500000 |
| ASI2B6A3Y556Z | 0.9166667 |
| AU5BD5NSSES9H | 0.2500000 |
| AURYD2FH3FUOQ | 1.0000000 |
| AXCIG7A957UO6 | 0.0000000 |
| AXKVHJHF1EOVT | 1.0000000 |
Plot the group’s overall accuracy on the catch trials.
tbl_all_catch_acc_rate %>%
ggbarplot(y = "catch_rate", ylab = "Accuracy", fill = "#f7a800", color = "#f7a800", add = "mean_se", ylim = c(0, 1), xlab = "Group", width = 0.5, label = TRUE, lab.nb.digits = 2, lab.vjust = -2.2, title = "All Catch Accuracy")
Let’s also take a look at each individual subject’s catch trial performance rate.
tbl_all_catch_acc_rate %>%
ggbarplot(x = "workerId", y = "catch_rate", ylab = "Accuracy", fill = "#f7a800", color = "#f7a800", ylim = c(0, 1), title = "Individual Catch Accuracy", sort.val = c("asc"), font.xtickslab = 6) + rotate_x_text() + geom_hline(yintercept = .75, linetype = 2)
This chunk will categorize subjects with “good” or “bad” catch rates and will create two new dataframes: one for good subjects with a catch rate greater than or equal to .75 and one for bad subjects with a catch rate less than .75. This chunk will also plot the catch rates for both groups.
tbl_all_catch_acc_rate$cat = "filler"
for (i in 1:length(tbl_all_catch_acc_rate$workerId)){
if (tbl_all_catch_acc_rate$catch_rate[i] >= 0.75){
tbl_all_catch_acc_rate$cat[i] = "Good"
} else {
tbl_all_catch_acc_rate$cat[i] = "Bad"
}
}
tbl_good_catch_acc_rate <- tbl_all_catch_acc_rate %>%
filter(catch_rate >= 0.75)
tbl_bad_catch_acc_rate <- tbl_all_catch_acc_rate %>%
filter(catch_rate < 0.75)
tbl_all_catch_acc_rate %>%
ggbarplot(x = "cat", y = "catch_rate", ylab = "Accuracy", xlab = "Accuracy Group", add = "mean_se", fill = "#f7a800", color = "#f7a800", ylim = c(0, 1), label = TRUE, lab.nb.digits = 2, lab.vjust = c(-2, -1.2), title = "Catch Trial Accuracy for Bad and Good Subjects", sort.val = c("asc"))
tbl_all_catch_acc_rate %>%
with(t.test(catch_rate ~ cat, var.equal = TRUE))
##
## Two Sample t-test
##
## data: catch_rate by cat
## t = -24.375, df = 86, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.8199736 -0.6963099
## sample estimates:
## mean in group Bad mean in group Good
## 0.1944444 0.9525862
For the rest of the analyses, focus on the participants with good catch rate performance. Select the subjects with good catch trial rates from the original tbl_all.
tbl_good_catch_acc_all_main_acc <- tbl_all[(tbl_all$workerId %in% tbl_good_catch_acc_rate$workerId),]
Verify subject count.
nrow(tbl_good_catch_acc_all_main_acc %>% distinct(workerId,.keep_all = FALSE))
## [1] 58
Here, now, is table containing the number of trials for each individual after excluding main trials based on accuracy. Again, there were 80 target-present trials that were 60% valid (48 trials) and 40% invalid (16 trials for each type).
tbl_good_catch_acc_all_main_acc_counts <- tbl_good_catch_acc_all_main_acc %>%
group_by(workerId,validity) %>%
filter((validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different') & click_ACC == 1) %>%
dplyr::summarize(counts = n()) %>%
spread(validity,counts)
tbl_good_catch_acc_all_main_acc_counts$sum = rowSums(tbl_good_catch_acc_all_main_acc_counts[,c(-1)], na.rm = TRUE)
kable(tbl_good_catch_acc_all_main_acc_counts)
| workerId | valid_same | invalid_same | invalid_different | sum |
|---|---|---|---|---|
| A11SVF9ZNHO1EW | 45 | 14 | 16 | 75 |
| A16O7CY4VH5BCP | 45 | 13 | 15 | 73 |
| A16Z47IWMSXYHP | 46 | 16 | 15 | 77 |
| A17WT0K0HFTW9U | 46 | 13 | 15 | 74 |
| A19L8SNH73AX1Z | 45 | 16 | 12 | 73 |
| A1BVG13MHBM1YD | 41 | 15 | 15 | 71 |
| A1FYWSPNO7KN1O | 48 | 16 | 16 | 80 |
| A1PUWQYUQRGCO | 21 | 7 | 6 | 34 |
| A1SISJL5ST2PWH | 46 | 15 | 16 | 77 |
| A1TZARLMBLCJ8X | 47 | 16 | 16 | 79 |
| A1V2H0UF94ATWY | 48 | 16 | 15 | 79 |
| A1ZE87WEYCA44A | 42 | 13 | 14 | 69 |
| A21TBK48OBJYSX | 48 | 15 | 16 | 79 |
| A21UA6O7ZFAIQJ | 47 | 16 | 16 | 79 |
| A220ZCMBT1YMMU | 47 | 15 | 15 | 77 |
| A2482SLAY120J2 | 41 | 11 | 14 | 66 |
| A248QG4DPULP46 | 47 | 15 | 16 | 78 |
| A26Z8M2VSEWUU4 | 46 | 16 | 15 | 77 |
| A2APG8MSLJ6G2K | 47 | 14 | 14 | 75 |
| A2CHD0TNWHFW1R | 15 | 1 | 2 | 18 |
| A2FGKKWP33DFWS | 44 | 13 | 15 | 72 |
| A2GOYSTIL3LOV1 | 48 | 15 | 16 | 79 |
| A2ODH6HV36EP88 | 46 | 16 | 15 | 77 |
| A2PSR3CMNR1R9X | 47 | 12 | 14 | 73 |
| A2VLTSW6CXIUMR | 44 | 14 | 15 | 73 |
| A2VNSNAN1LZBAM | 47 | 15 | 15 | 77 |
| A2WC2NO555XU3J | 46 | 16 | 16 | 78 |
| A36UNYMDBED99W | 47 | 16 | 16 | 79 |
| A39GADIK8RLMVC | 48 | 16 | 16 | 80 |
| A3CASN6JG7104 | 14 | 7 | 7 | 28 |
| A3E8NUUS90EWXW | 41 | 5 | 5 | 51 |
| A3EC3OP6U52JYC | 44 | 13 | 12 | 69 |
| A3FCZNB9E8K3CX | 48 | 14 | 14 | 76 |
| A3GK90X2QOFR53 | 44 | 12 | 10 | 66 |
| A3H32595TVJ34Q | 47 | 15 | 15 | 77 |
| A3K2ZXAFZCHYZI | 40 | 9 | 9 | 58 |
| A3K9GTQBOI7O5A | 48 | 15 | 15 | 78 |
| A3KF6O09H04SP7 | 47 | 16 | 14 | 77 |
| A3L7IWDL0R3KU9 | 43 | 15 | 13 | 71 |
| A3QRZPJT2CT2IK | 46 | 15 | 16 | 77 |
| A3R818WN41K12K | 48 | 16 | 15 | 79 |
| A3S4M1GQAMPFZB | 32 | 7 | 9 | 48 |
| A3SYY5R44RAATE | 20 | 8 | 8 | 36 |
| A3UDUHUVFKD833 | 48 | 15 | 15 | 78 |
| A4W9APAHFWVLO | 33 | 14 | 12 | 59 |
| A6JKKANO7F4KD | 48 | 16 | 16 | 80 |
| AAAHLPAGDOA2U | 48 | 16 | 16 | 80 |
| AK3H5QRAROFGP | 46 | 16 | 14 | 76 |
| AKVDY8OXNMQED | 44 | 14 | 16 | 74 |
| ALBIU0ZCAUNON | 47 | 16 | 15 | 78 |
| AM8OWAW9TUVLN | 45 | 15 | 16 | 76 |
| ANUT13S1G9RWU | 48 | 16 | 16 | 80 |
| AQP4PHYDXRBPI | 46 | 13 | 13 | 72 |
| ARCCEMO6PIE44 | 45 | 14 | 15 | 74 |
| ARLGZWN6W91WD | 45 | 16 | 15 | 76 |
| ASI2B6A3Y556Z | 47 | 15 | 15 | 77 |
| AURYD2FH3FUOQ | 48 | 16 | 16 | 80 |
| AXKVHJHF1EOVT | 43 | 16 | 13 | 72 |
Same table, but binned.
tbl_good_catch_acc_all_main_acc_counts_bin <- tbl_good_catch_acc_all_main_acc %>%
group_by(workerId,validity,bin) %>%
filter((validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different') & click_ACC == 1) %>%
dplyr::summarize(counts = n()) %>%
spread(validity,counts)
tbl_good_catch_acc_all_main_acc_counts_bin$sum = rowSums(tbl_good_catch_acc_all_main_acc_counts_bin[,c(-1:-2)], na.rm = TRUE)
Some subjects may have no surviving data for a particular condition. These subjects should be tossed because they have an unequal number of conditions compared to the other subjects.
tbl_good_catch_acc_all_main_acc_NA_conditions_removed <- tbl_good_catch_acc_all_main_acc_counts %>%
filter(valid_same!="NA" & invalid_same!="NA" & invalid_different!="NA")
Same table, but binned.
tbl_good_catch_acc_all_main_acc_NA_conditions_removed_bin <- tbl_good_catch_acc_all_main_acc_counts_bin[(tbl_good_catch_acc_all_main_acc_counts_bin$workerId %in% tbl_good_catch_acc_all_main_acc_NA_conditions_removed$workerId),]
Now, let’s get rid of any subjects with NA from tbl_good_catch_acc_all_main_acc.
tbl_good_catch_acc_all_main_acc_NA_subjs_removed <- tbl_good_catch_acc_all_main_acc[(tbl_good_catch_acc_all_main_acc$workerId %in% tbl_good_catch_acc_all_main_acc_NA_conditions_removed$workerId),]
And let’s check the number of subjects we are now working with.
nrow(tbl_good_catch_acc_all_main_acc_NA_subjs_removed %>% distinct(workerId,.keep_all = FALSE))
## [1] 58
After dropping subjects based on catch trial performance and for accuracy on the main trials (dropping any additional subjects with unequal conditions), get the original number of trials for the relevant subjects.
tbl_good_catch_acc_all_main_acc_counts <- tbl_all_counts_no_catch[(tbl_all_counts_no_catch$workerId %in% tbl_good_catch_acc_all_main_acc_NA_conditions_removed$workerId),]
kable(tbl_good_catch_acc_all_main_acc_counts)
| workerId | valid_same | invalid_same | invalid_different | sum |
|---|---|---|---|---|
| A11SVF9ZNHO1EW | 48 | 16 | 16 | 80 |
| A16O7CY4VH5BCP | 48 | 16 | 16 | 80 |
| A16Z47IWMSXYHP | 48 | 16 | 16 | 80 |
| A17WT0K0HFTW9U | 48 | 16 | 16 | 80 |
| A19L8SNH73AX1Z | 48 | 16 | 16 | 80 |
| A1BVG13MHBM1YD | 48 | 16 | 16 | 80 |
| A1FYWSPNO7KN1O | 48 | 16 | 16 | 80 |
| A1PUWQYUQRGCO | 48 | 16 | 16 | 80 |
| A1SISJL5ST2PWH | 48 | 16 | 16 | 80 |
| A1TZARLMBLCJ8X | 48 | 16 | 16 | 80 |
| A1V2H0UF94ATWY | 48 | 16 | 16 | 80 |
| A1ZE87WEYCA44A | 48 | 16 | 16 | 80 |
| A21TBK48OBJYSX | 48 | 16 | 16 | 80 |
| A21UA6O7ZFAIQJ | 48 | 16 | 16 | 80 |
| A220ZCMBT1YMMU | 48 | 16 | 16 | 80 |
| A2482SLAY120J2 | 48 | 16 | 16 | 80 |
| A248QG4DPULP46 | 48 | 16 | 16 | 80 |
| A26Z8M2VSEWUU4 | 48 | 16 | 16 | 80 |
| A2APG8MSLJ6G2K | 48 | 16 | 16 | 80 |
| A2CHD0TNWHFW1R | 48 | 16 | 16 | 80 |
| A2FGKKWP33DFWS | 48 | 16 | 16 | 80 |
| A2GOYSTIL3LOV1 | 48 | 16 | 16 | 80 |
| A2ODH6HV36EP88 | 48 | 16 | 16 | 80 |
| A2PSR3CMNR1R9X | 48 | 16 | 16 | 80 |
| A2VLTSW6CXIUMR | 48 | 16 | 16 | 80 |
| A2VNSNAN1LZBAM | 48 | 16 | 16 | 80 |
| A2WC2NO555XU3J | 48 | 16 | 16 | 80 |
| A36UNYMDBED99W | 48 | 16 | 16 | 80 |
| A39GADIK8RLMVC | 48 | 16 | 16 | 80 |
| A3CASN6JG7104 | 48 | 16 | 16 | 80 |
| A3E8NUUS90EWXW | 48 | 16 | 16 | 80 |
| A3EC3OP6U52JYC | 48 | 16 | 16 | 80 |
| A3FCZNB9E8K3CX | 48 | 16 | 16 | 80 |
| A3GK90X2QOFR53 | 48 | 16 | 16 | 80 |
| A3H32595TVJ34Q | 48 | 16 | 16 | 80 |
| A3K2ZXAFZCHYZI | 48 | 16 | 16 | 80 |
| A3K9GTQBOI7O5A | 48 | 16 | 16 | 80 |
| A3KF6O09H04SP7 | 48 | 16 | 16 | 80 |
| A3L7IWDL0R3KU9 | 48 | 16 | 16 | 80 |
| A3QRZPJT2CT2IK | 48 | 16 | 16 | 80 |
| A3R818WN41K12K | 48 | 16 | 16 | 80 |
| A3S4M1GQAMPFZB | 48 | 16 | 16 | 80 |
| A3SYY5R44RAATE | 48 | 16 | 16 | 80 |
| A3UDUHUVFKD833 | 48 | 16 | 16 | 80 |
| A4W9APAHFWVLO | 48 | 16 | 16 | 80 |
| A6JKKANO7F4KD | 48 | 16 | 16 | 80 |
| AAAHLPAGDOA2U | 48 | 16 | 16 | 80 |
| AK3H5QRAROFGP | 48 | 16 | 16 | 80 |
| AKVDY8OXNMQED | 48 | 16 | 16 | 80 |
| ALBIU0ZCAUNON | 48 | 16 | 16 | 80 |
| AM8OWAW9TUVLN | 48 | 16 | 16 | 80 |
| ANUT13S1G9RWU | 48 | 16 | 16 | 80 |
| AQP4PHYDXRBPI | 48 | 16 | 16 | 80 |
| ARCCEMO6PIE44 | 48 | 16 | 16 | 80 |
| ARLGZWN6W91WD | 48 | 16 | 16 | 80 |
| ASI2B6A3Y556Z | 48 | 16 | 16 | 80 |
| AURYD2FH3FUOQ | 48 | 16 | 16 | 80 |
| AXKVHJHF1EOVT | 48 | 16 | 16 | 80 |
Plot the overall accuracy at the group level (collasped across workerId and condition).
tbl_overall_good_acc <- (tbl_good_catch_acc_all_main_acc_NA_conditions_removed$sum / tbl_good_catch_acc_all_main_acc_counts$sum)
tbl_overall_good_acc <- cbind.data.frame(tbl_good_catch_acc_all_main_acc_counts[,1], tbl_overall_good_acc)
colnames(tbl_overall_good_acc) <- c("workerId", "main_rate")
kable(tbl_overall_good_acc)
| workerId | main_rate |
|---|---|
| A11SVF9ZNHO1EW | 0.9375 |
| A16O7CY4VH5BCP | 0.9125 |
| A16Z47IWMSXYHP | 0.9625 |
| A17WT0K0HFTW9U | 0.9250 |
| A19L8SNH73AX1Z | 0.9125 |
| A1BVG13MHBM1YD | 0.8875 |
| A1FYWSPNO7KN1O | 1.0000 |
| A1PUWQYUQRGCO | 0.4250 |
| A1SISJL5ST2PWH | 0.9625 |
| A1TZARLMBLCJ8X | 0.9875 |
| A1V2H0UF94ATWY | 0.9875 |
| A1ZE87WEYCA44A | 0.8625 |
| A21TBK48OBJYSX | 0.9875 |
| A21UA6O7ZFAIQJ | 0.9875 |
| A220ZCMBT1YMMU | 0.9625 |
| A2482SLAY120J2 | 0.8250 |
| A248QG4DPULP46 | 0.9750 |
| A26Z8M2VSEWUU4 | 0.9625 |
| A2APG8MSLJ6G2K | 0.9375 |
| A2CHD0TNWHFW1R | 0.2250 |
| A2FGKKWP33DFWS | 0.9000 |
| A2GOYSTIL3LOV1 | 0.9875 |
| A2ODH6HV36EP88 | 0.9625 |
| A2PSR3CMNR1R9X | 0.9125 |
| A2VLTSW6CXIUMR | 0.9125 |
| A2VNSNAN1LZBAM | 0.9625 |
| A2WC2NO555XU3J | 0.9750 |
| A36UNYMDBED99W | 0.9875 |
| A39GADIK8RLMVC | 1.0000 |
| A3CASN6JG7104 | 0.3500 |
| A3E8NUUS90EWXW | 0.6375 |
| A3EC3OP6U52JYC | 0.8625 |
| A3FCZNB9E8K3CX | 0.9500 |
| A3GK90X2QOFR53 | 0.8250 |
| A3H32595TVJ34Q | 0.9625 |
| A3K2ZXAFZCHYZI | 0.7250 |
| A3K9GTQBOI7O5A | 0.9750 |
| A3KF6O09H04SP7 | 0.9625 |
| A3L7IWDL0R3KU9 | 0.8875 |
| A3QRZPJT2CT2IK | 0.9625 |
| A3R818WN41K12K | 0.9875 |
| A3S4M1GQAMPFZB | 0.6000 |
| A3SYY5R44RAATE | 0.4500 |
| A3UDUHUVFKD833 | 0.9750 |
| A4W9APAHFWVLO | 0.7375 |
| A6JKKANO7F4KD | 1.0000 |
| AAAHLPAGDOA2U | 1.0000 |
| AK3H5QRAROFGP | 0.9500 |
| AKVDY8OXNMQED | 0.9250 |
| ALBIU0ZCAUNON | 0.9750 |
| AM8OWAW9TUVLN | 0.9500 |
| ANUT13S1G9RWU | 1.0000 |
| AQP4PHYDXRBPI | 0.9000 |
| ARCCEMO6PIE44 | 0.9250 |
| ARLGZWN6W91WD | 0.9500 |
| ASI2B6A3Y556Z | 0.9625 |
| AURYD2FH3FUOQ | 1.0000 |
| AXKVHJHF1EOVT | 0.9000 |
tbl_overall_good_acc %>%
ggbarplot(y = "main_rate", ylab = "Accuracy", fill = "#f7a800", color = "#f7a800", add = "mean_se", ylim = c(0, 1), xlab = "Group", width = 0.5, label = TRUE, lab.nb.digits = 2, lab.vjust = -1.4, title = "Main Trial Accuracy")
Look at the overall accuracy at the group level (collasped across workerId and condition) over time.
tbl_good_no_NA_bin <- tbl_good_catch_acc_all_main_acc_NA_subjs_removed %>%
group_by(workerId,validity,bin) %>%
filter(validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different') %>%
dplyr::summarize(counts = n()) %>%
spread(validity,counts)
tbl_good_no_NA_bin$sum = rowSums(tbl_good_no_NA_bin[,c(-1:-2)], na.rm = TRUE)
#head(tbl_good_no_NA_bin,10)
tbl_overall_good_acc_bin <- (tbl_good_catch_acc_all_main_acc_NA_conditions_removed_bin$sum / tbl_good_no_NA_bin$sum)
tbl_overall_good_acc_bin <- cbind.data.frame(tbl_good_no_NA_bin[,1:2], tbl_overall_good_acc_bin)
colnames(tbl_overall_good_acc_bin) <- c("workerId", "bin", "ACC")
tbl_overall_good_acc_bin %>%
ggline(y = "ACC", x = "bin", ylab = "Accuracy", fill = "#f7a800", color = "#f7a800", add = "mean_se", ylim = c(0, 1), xlab = " Bin", title = "Main Trial Accuracy Over Time", na.rm = TRUE)
Here are some descriptive and inferential statistics (repeated measures ANOVA and post-hoc t-tests) for the effect of accuracy over time.
aov_acc_time <- aov(ACC ~ bin + Error(factor(workerId)/bin), tbl_overall_good_acc_bin)
summary(aov_acc_time)
##
## Error: factor(workerId)
## Df Sum Sq Mean Sq F value Pr(>F)
## Residuals 57 6.337 0.1112
##
## Error: factor(workerId):bin
## Df Sum Sq Mean Sq F value Pr(>F)
## bin 1 0.0178 0.01778 1.034 0.313
## Residuals 57 0.9799 0.01719
##
## Error: Within
## Df Sum Sq Mean Sq F value Pr(>F)
## Residuals 116 0.4365 0.003763
pwc_acc_time <- tbl_overall_good_acc_bin %>%
pairwise_t_test(
ACC ~ bin, paired = TRUE,
p.adjust.method = "bonferroni"
)
pwc_acc_time
## # A tibble: 6 x 10
## .y. group1 group2 n1 n2 statistic df p p.adj p.adj.signif
## * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 ACC 1 2 58 58 0.771 57 0.444 1 ns
## 2 ACC 1 3 58 58 0.742 57 0.461 1 ns
## 3 ACC 1 4 58 58 1.05 57 0.296 1 ns
## 4 ACC 2 3 58 58 0.260 57 0.796 1 ns
## 5 ACC 2 4 58 58 0.917 57 0.363 1 ns
## 6 ACC 3 4 58 58 0.870 57 0.388 1 ns
Look at the overall accuracy for the group by validity (valid, invalid-same etc.).
tbl_overall_good_acc_cond <- (tbl_good_catch_acc_all_main_acc_NA_conditions_removed[-1] / tbl_good_catch_acc_all_main_acc_counts[-1])
tbl_overall_good_acc_cond <- cbind.data.frame(tbl_good_catch_acc_all_main_acc_counts[,1], tbl_overall_good_acc_cond)
tbl_overall_good_acc_cond <- gather(tbl_overall_good_acc_cond, validity, acc, valid_same:invalid_different, factor_key=TRUE)
tbl_overall_good_acc_cond %>%
ggbarplot(x = "validity", y = "acc", ylab = "Accuracy", fill = "validity" , color = "validity", palette = c("#0d2240", "#00a8e1", "#f7a800", "#E31818", "#dfdddc"), add = "mean_se", ylim = c(0, 1), na.rm = TRUE, label = TRUE, lab.nb.digits = 2, lab.vjust = c(-1.6, -1.6, -1.6), title = "Main Trial Accuracy By Validity", xlab = "Validity")
Here are some descriptive and inferential statistics (repeated measures ANOVA and post-hoc t-tests) for the effect of accuracy by validty.
Two one-way repeated-measures ANOVAs were conducted using anova_test and aov. Both produce the same result with these data. However, there are differences between these functions that must be taken into account as the design of the ANOVA becomes more complex. See this tutorial for more info. To summarize, though, anova_test computes type III sum of squares (marginal; similar to SPSS), whereas aov computes type I sum of squares (sequential). See this page for differences between type III and type I sum of squares. In general, aov is not suited for designs with more than one factor because the order of the factors in the design matters. Therefore, it is not suitable for factorial (two- or three-way repeated measures) designs. In anova_test, however, the effect of each factor is evaluated after all other factors have been accounted for. Therefore, the result for a factor is equivalent to what is obtained with type I analysis when the factor enters the model as the last one. So, if there were data for vertically-oriented rectangles, anova_test would be the appropriate function for the analysis.
In the identify_outliers function:
Detects outliers using boxplot methods.
Values above Q3 + 1.5xIQR or below Q1 -1.5xIQR are considered as outliers.
Values above Q3 + 3xIQR or below Q1 - 3xIQR are considered extreme outliers.
Q1 and Q3 are the first and third quartile, respectively. IQR is the interquartile range (IQR = Q3 - Q1).
Note: Outliers identified in this chunk are not removed.
tbl_overall_good_acc_cond %>%
group_by(validity) %>%
get_summary_stats(acc, type = "mean_sd")
## # A tibble: 3 x 5
## validity variable n mean sd
## <fct> <chr> <dbl> <dbl> <dbl>
## 1 valid_same acc 58 0.904 0.163
## 2 invalid_same acc 58 0.863 0.199
## 3 invalid_different acc 58 0.864 0.193
tbl_overall_good_acc_cond %>%
group_by(validity) %>%
identify_outliers(acc)
## # A tibble: 20 x 6
## validity workerId sum acc is.outlier is.extreme
## <fct> <chr> <dbl> <dbl> <lgl> <lgl>
## 1 valid_same A1PUWQYUQRGCO 0.425 0.438 TRUE TRUE
## 2 valid_same A2CHD0TNWHFW1R 0.225 0.312 TRUE TRUE
## 3 valid_same A3CASN6JG7104 0.35 0.292 TRUE TRUE
## 4 valid_same A3S4M1GQAMPFZB 0.6 0.667 TRUE TRUE
## 5 valid_same A3SYY5R44RAATE 0.45 0.417 TRUE TRUE
## 6 valid_same A4W9APAHFWVLO 0.738 0.688 TRUE TRUE
## 7 invalid_same A1PUWQYUQRGCO 0.425 0.438 TRUE FALSE
## 8 invalid_same A2CHD0TNWHFW1R 0.225 0.0625 TRUE TRUE
## 9 invalid_same A3CASN6JG7104 0.35 0.438 TRUE FALSE
## 10 invalid_same A3E8NUUS90EWXW 0.638 0.312 TRUE FALSE
## 11 invalid_same A3S4M1GQAMPFZB 0.6 0.438 TRUE FALSE
## 12 invalid_same A3SYY5R44RAATE 0.45 0.5 TRUE FALSE
## 13 invalid_different A1PUWQYUQRGCO 0.425 0.375 TRUE TRUE
## 14 invalid_different A2CHD0TNWHFW1R 0.225 0.125 TRUE TRUE
## 15 invalid_different A3CASN6JG7104 0.35 0.438 TRUE TRUE
## 16 invalid_different A3E8NUUS90EWXW 0.638 0.312 TRUE TRUE
## 17 invalid_different A3GK90X2QOFR53 0.825 0.625 TRUE FALSE
## 18 invalid_different A3K2ZXAFZCHYZI 0.725 0.562 TRUE FALSE
## 19 invalid_different A3S4M1GQAMPFZB 0.6 0.562 TRUE FALSE
## 20 invalid_different A3SYY5R44RAATE 0.45 0.5 TRUE FALSE
anova_test_acc_validity <- anova_test(data = tbl_overall_good_acc_cond, dv = acc, wid = workerId, within = validity)
get_anova_table(anova_test_acc_validity, correction = "none")
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 validity 2 114 6.168 0.003 * 0.011
aov_acc_validity <- aov(acc ~ validity + Error(factor(workerId)/validity), tbl_overall_good_acc_cond)
summary(aov_acc_validity)
##
## Error: factor(workerId)
## Df Sum Sq Mean Sq F value Pr(>F)
## Residuals 57 5.304 0.09305
##
## Error: factor(workerId):validity
## Df Sum Sq Mean Sq F value Pr(>F)
## validity 2 0.0643 0.03215 6.168 0.00286 **
## Residuals 114 0.5943 0.00521
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
pwc_acc_validity <- tbl_overall_good_acc_cond %>%
pairwise_t_test(
acc ~ validity, paired = TRUE,
p.adjust.method = "bonferroni"
)
pwc_acc_validity
## # A tibble: 3 x 10
## .y. group1 group2 n1 n2 statistic df p p.adj p.adj.signif
## * <chr> <chr> <chr> <int> <int> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 acc valid_sa… invalid_… 58 58 2.76 57 0.008 0.023 *
## 2 acc valid_sa… invalid_… 58 58 2.87 57 0.006 0.017 *
## 3 acc invalid_… invalid_… 58 58 -0.0987 57 0.922 1 ns
Third, we can look at the accuracy for each individual subject.
tbl_overall_good_acc %>%
ggbarplot(x = "workerId", y = "main_rate", ylab = "Accuracy", fill = "#f7a800", color = "#f7a800", ylim = c(0, 1), title = "Individual Accuracy", sort.val = c("asc"), font.xtickslab = 8) + rotate_x_text() + geom_hline(yintercept = .75, linetype = 2)
#tbl_overall_good_acc_rate <- tbl_overall_good_acc %>%
# filter(ACC >= 0.75)
#tbl_overall_bad_acc_rate <- tbl_overall_good_acc %>%
# filter(ACC < 0.75)
#
#tbl_good_catch_acc_all_main_acc_NA_subjs_removed <- #tbl_good_catch_acc_all_main_acc_NA_subjs_removed[(tbl_good_catch_acc_all_main_acc_NA_subjs_removed$workerId %in% #tbl_overall_good_acc_rate$workerId),]
#
#nrow(data.frame(tbl_good_catch_acc_all_main_acc_NA_subjs_removed %>% distinct(workerId,.keep_all = FALSE)))
Next, data are inspected for RT outliers. RTs that are more than 3 SDs from the subject mean will be removed.
tbl_good_catch_acc_all_main_acc_NA_subjs_removed <- tbl_good_catch_acc_all_main_acc_NA_subjs_removed %>%
filter(validity!='catch_catch')
This bit of code will process RTs by coding them as outliers (again, by more than 3 SDs). Two additional columns are added to the data table. First, an “outliers” column is added that labels an RT as an outlier or not (0 = not an outlier, 1 = an outlier that is great than -3 SDs from the mean, 2 = an outlier that is greater than +3 SDs from the mean). Second, a “removed_RT” column is added that contains non-outlier RTs.
Note: code can be changed to allow for replacement of outliers with the cutoff values.
correct.trials <- tbl_good_catch_acc_all_main_acc_NA_subjs_removed[tbl_good_catch_acc_all_main_acc_NA_subjs_removed$click_ACC == 1,]
tbl_good_catch_acc_all_main_acc_NA_subjs_removed <- ddply(correct.trials, .(workerId), function(x){
m <- mean(x$rt)
s <- sd(x$rt)
upper <- m + 3*s #change 3 with another number to increase or decrease cutoff criteria
lower <- m - 3*s #change 3 with another number to increase or decrease cutoff criteria
x$outliers <- 0
x$outliers[x$rt > upper] <- 2
x$outliers[x$rt < lower] <- 1
x$removed_RT <- x$rt
x$removed_RT[x$rt > upper]<- NA #change NA with upper to replace an outlier with the upper cutoff
x$removed_RT[x$rt < lower]<- NA #change NA with lower to replace an outlier with the lower cutoff
x
})
Get trial counts.
tbl_good_catch_acc_all_main_acc_counts <- tbl_good_catch_acc_all_main_acc_NA_subjs_removed %>%
group_by(workerId,validity) %>%
filter(validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different') %>%
dplyr::summarize(counts = n()) %>%
spread(validity,counts)
tbl_good_catch_acc_all_main_acc_counts$sum = rowSums(tbl_good_catch_acc_all_main_acc_counts[,c(-1)], na.rm = TRUE)
Next, let’s completely toss out the outlier trials.
tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed <- tbl_good_catch_acc_all_main_acc_NA_subjs_removed[!is.na(tbl_good_catch_acc_all_main_acc_NA_subjs_removed$removed_RT),]
Here is another table containing the number of trials for each individual after excluding trials based on accuracy AND outlier RTs. Again, there were 80 target-present trials that were 60% valid (48 trials) and 20% invalid (16 trials for each type).
tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed_counts <- tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed %>%
group_by(workerId,validity) %>%
filter(validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different') %>%
dplyr::summarize(counts = n()) %>%
spread(validity,counts)
tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed_counts$sum = rowSums(tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed_counts[,c(-1)], na.rm = TRUE)
kable(tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed_counts)
| workerId | valid_same | invalid_same | invalid_different | sum |
|---|---|---|---|---|
| A11SVF9ZNHO1EW | 44 | 14 | 16 | 74 |
| A16O7CY4VH5BCP | 44 | 12 | 15 | 71 |
| A16Z47IWMSXYHP | 45 | 16 | 14 | 75 |
| A17WT0K0HFTW9U | 45 | 13 | 15 | 73 |
| A19L8SNH73AX1Z | 44 | 16 | 12 | 72 |
| A1BVG13MHBM1YD | 41 | 14 | 14 | 69 |
| A1FYWSPNO7KN1O | 48 | 15 | 15 | 78 |
| A1PUWQYUQRGCO | 20 | 7 | 6 | 33 |
| A1SISJL5ST2PWH | 46 | 15 | 15 | 76 |
| A1TZARLMBLCJ8X | 47 | 16 | 15 | 78 |
| A1V2H0UF94ATWY | 48 | 16 | 14 | 78 |
| A1ZE87WEYCA44A | 41 | 12 | 14 | 67 |
| A21TBK48OBJYSX | 47 | 15 | 16 | 78 |
| A21UA6O7ZFAIQJ | 47 | 16 | 16 | 79 |
| A220ZCMBT1YMMU | 45 | 15 | 15 | 75 |
| A2482SLAY120J2 | 41 | 11 | 14 | 66 |
| A248QG4DPULP46 | 47 | 15 | 16 | 78 |
| A26Z8M2VSEWUU4 | 45 | 16 | 15 | 76 |
| A2APG8MSLJ6G2K | 47 | 13 | 14 | 74 |
| A2CHD0TNWHFW1R | 14 | 1 | 2 | 17 |
| A2FGKKWP33DFWS | 44 | 13 | 13 | 70 |
| A2GOYSTIL3LOV1 | 48 | 14 | 16 | 78 |
| A2ODH6HV36EP88 | 45 | 16 | 15 | 76 |
| A2PSR3CMNR1R9X | 46 | 12 | 14 | 72 |
| A2VLTSW6CXIUMR | 44 | 14 | 15 | 73 |
| A2VNSNAN1LZBAM | 46 | 13 | 15 | 74 |
| A2WC2NO555XU3J | 44 | 16 | 16 | 76 |
| A36UNYMDBED99W | 46 | 15 | 16 | 77 |
| A39GADIK8RLMVC | 48 | 15 | 16 | 79 |
| A3CASN6JG7104 | 14 | 6 | 7 | 27 |
| A3E8NUUS90EWXW | 40 | 5 | 4 | 49 |
| A3EC3OP6U52JYC | 44 | 13 | 11 | 68 |
| A3FCZNB9E8K3CX | 47 | 13 | 14 | 74 |
| A3GK90X2QOFR53 | 44 | 12 | 9 | 65 |
| A3H32595TVJ34Q | 46 | 14 | 15 | 75 |
| A3K2ZXAFZCHYZI | 39 | 8 | 9 | 56 |
| A3K9GTQBOI7O5A | 48 | 15 | 14 | 77 |
| A3KF6O09H04SP7 | 47 | 15 | 14 | 76 |
| A3L7IWDL0R3KU9 | 43 | 15 | 13 | 71 |
| A3QRZPJT2CT2IK | 46 | 15 | 15 | 76 |
| A3R818WN41K12K | 48 | 15 | 15 | 78 |
| A3S4M1GQAMPFZB | 31 | 7 | 8 | 46 |
| A3SYY5R44RAATE | 20 | 8 | 8 | 36 |
| A3UDUHUVFKD833 | 47 | 15 | 15 | 77 |
| A4W9APAHFWVLO | 32 | 14 | 12 | 58 |
| A6JKKANO7F4KD | 48 | 15 | 16 | 79 |
| AAAHLPAGDOA2U | 47 | 16 | 16 | 79 |
| AK3H5QRAROFGP | 45 | 16 | 14 | 75 |
| AKVDY8OXNMQED | 44 | 14 | 16 | 74 |
| ALBIU0ZCAUNON | 47 | 16 | 14 | 77 |
| AM8OWAW9TUVLN | 45 | 14 | 16 | 75 |
| ANUT13S1G9RWU | 48 | 16 | 15 | 79 |
| AQP4PHYDXRBPI | 44 | 13 | 13 | 70 |
| ARCCEMO6PIE44 | 43 | 14 | 15 | 72 |
| ARLGZWN6W91WD | 45 | 15 | 15 | 75 |
| ASI2B6A3Y556Z | 47 | 14 | 15 | 76 |
| AURYD2FH3FUOQ | 47 | 15 | 16 | 78 |
| AXKVHJHF1EOVT | 42 | 15 | 12 | 69 |
What was the percentage of outlier RTs that were removed?
tbl_rts_removed_count <- tbl_good_catch_acc_all_main_acc_counts[-1] - tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed_counts[-1]
per_RTs_removed <- (sum(tbl_rts_removed_count$sum) / sum(tbl_good_catch_acc_all_main_acc_counts$sum)) * 100
per_RTs_removed
## [1] 1.747149
Confirm subject count.
nrow(data.frame(tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed %>% distinct(workerId,.keep_all = FALSE)))
## [1] 58
good_subjs <- data.frame(tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed %>% distinct(workerId,.keep_all = FALSE))
write.csv(good_subjs,'good_subjs.csv', row.names=FALSE)
Get RTs to look for space-based and object-based change blindness effects.
tbl_final <- tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed %>%
group_by(workerId,validity) %>%
filter(validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different') %>%
dplyr::summarize(mean_rt = mean(removed_RT, na.rm=TRUE))
tbl_final <- data.frame(tbl_final)
kable(tbl_final)
| workerId | validity | mean_rt |
|---|---|---|
| A11SVF9ZNHO1EW | valid_same | 4730.545 |
| A11SVF9ZNHO1EW | invalid_same | 5621.214 |
| A11SVF9ZNHO1EW | invalid_different | 5870.750 |
| A16O7CY4VH5BCP | valid_same | 5767.545 |
| A16O7CY4VH5BCP | invalid_same | 6120.417 |
| A16O7CY4VH5BCP | invalid_different | 5934.600 |
| A16Z47IWMSXYHP | valid_same | 8329.867 |
| A16Z47IWMSXYHP | invalid_same | 10943.062 |
| A16Z47IWMSXYHP | invalid_different | 7242.643 |
| A17WT0K0HFTW9U | valid_same | 4862.267 |
| A17WT0K0HFTW9U | invalid_same | 6137.846 |
| A17WT0K0HFTW9U | invalid_different | 6429.400 |
| A19L8SNH73AX1Z | valid_same | 5782.500 |
| A19L8SNH73AX1Z | invalid_same | 5710.500 |
| A19L8SNH73AX1Z | invalid_different | 6757.000 |
| A1BVG13MHBM1YD | valid_same | 5379.146 |
| A1BVG13MHBM1YD | invalid_same | 4863.714 |
| A1BVG13MHBM1YD | invalid_different | 4781.143 |
| A1FYWSPNO7KN1O | valid_same | 4735.062 |
| A1FYWSPNO7KN1O | invalid_same | 5068.600 |
| A1FYWSPNO7KN1O | invalid_different | 4885.600 |
| A1PUWQYUQRGCO | valid_same | 8558.550 |
| A1PUWQYUQRGCO | invalid_same | 8422.571 |
| A1PUWQYUQRGCO | invalid_different | 8041.667 |
| A1SISJL5ST2PWH | valid_same | 4116.935 |
| A1SISJL5ST2PWH | invalid_same | 4161.133 |
| A1SISJL5ST2PWH | invalid_different | 4124.200 |
| A1TZARLMBLCJ8X | valid_same | 5186.234 |
| A1TZARLMBLCJ8X | invalid_same | 5771.625 |
| A1TZARLMBLCJ8X | invalid_different | 5870.200 |
| A1V2H0UF94ATWY | valid_same | 4744.312 |
| A1V2H0UF94ATWY | invalid_same | 6172.375 |
| A1V2H0UF94ATWY | invalid_different | 6925.929 |
| A1ZE87WEYCA44A | valid_same | 4833.195 |
| A1ZE87WEYCA44A | invalid_same | 5777.917 |
| A1ZE87WEYCA44A | invalid_different | 5301.786 |
| A21TBK48OBJYSX | valid_same | 5052.085 |
| A21TBK48OBJYSX | invalid_same | 6296.467 |
| A21TBK48OBJYSX | invalid_different | 6090.375 |
| A21UA6O7ZFAIQJ | valid_same | 4782.447 |
| A21UA6O7ZFAIQJ | invalid_same | 5081.062 |
| A21UA6O7ZFAIQJ | invalid_different | 5146.062 |
| A220ZCMBT1YMMU | valid_same | 7288.889 |
| A220ZCMBT1YMMU | invalid_same | 7153.267 |
| A220ZCMBT1YMMU | invalid_different | 7975.400 |
| A2482SLAY120J2 | valid_same | 4829.341 |
| A2482SLAY120J2 | invalid_same | 4886.636 |
| A2482SLAY120J2 | invalid_different | 5146.643 |
| A248QG4DPULP46 | valid_same | 4366.106 |
| A248QG4DPULP46 | invalid_same | 5210.467 |
| A248QG4DPULP46 | invalid_different | 5661.938 |
| A26Z8M2VSEWUU4 | valid_same | 4625.267 |
| A26Z8M2VSEWUU4 | invalid_same | 4845.438 |
| A26Z8M2VSEWUU4 | invalid_different | 4769.200 |
| A2APG8MSLJ6G2K | valid_same | 4543.170 |
| A2APG8MSLJ6G2K | invalid_same | 4992.231 |
| A2APG8MSLJ6G2K | invalid_different | 5535.500 |
| A2CHD0TNWHFW1R | valid_same | 4167.786 |
| A2CHD0TNWHFW1R | invalid_same | 5305.000 |
| A2CHD0TNWHFW1R | invalid_different | 5401.500 |
| A2FGKKWP33DFWS | valid_same | 6499.295 |
| A2FGKKWP33DFWS | invalid_same | 6278.769 |
| A2FGKKWP33DFWS | invalid_different | 6564.692 |
| A2GOYSTIL3LOV1 | valid_same | 4408.271 |
| A2GOYSTIL3LOV1 | invalid_same | 4678.143 |
| A2GOYSTIL3LOV1 | invalid_different | 4859.938 |
| A2ODH6HV36EP88 | valid_same | 4685.444 |
| A2ODH6HV36EP88 | invalid_same | 4799.750 |
| A2ODH6HV36EP88 | invalid_different | 4802.000 |
| A2PSR3CMNR1R9X | valid_same | 4245.391 |
| A2PSR3CMNR1R9X | invalid_same | 5139.250 |
| A2PSR3CMNR1R9X | invalid_different | 4883.857 |
| A2VLTSW6CXIUMR | valid_same | 5063.750 |
| A2VLTSW6CXIUMR | invalid_same | 6015.500 |
| A2VLTSW6CXIUMR | invalid_different | 5826.800 |
| A2VNSNAN1LZBAM | valid_same | 5402.739 |
| A2VNSNAN1LZBAM | invalid_same | 5536.077 |
| A2VNSNAN1LZBAM | invalid_different | 5520.267 |
| A2WC2NO555XU3J | valid_same | 4488.182 |
| A2WC2NO555XU3J | invalid_same | 5198.188 |
| A2WC2NO555XU3J | invalid_different | 5120.812 |
| A36UNYMDBED99W | valid_same | 4396.565 |
| A36UNYMDBED99W | invalid_same | 5748.400 |
| A36UNYMDBED99W | invalid_different | 5847.688 |
| A39GADIK8RLMVC | valid_same | 4491.625 |
| A39GADIK8RLMVC | invalid_same | 5175.067 |
| A39GADIK8RLMVC | invalid_different | 5152.438 |
| A3CASN6JG7104 | valid_same | 10258.286 |
| A3CASN6JG7104 | invalid_same | 9596.333 |
| A3CASN6JG7104 | invalid_different | 9450.714 |
| A3E8NUUS90EWXW | valid_same | 7079.075 |
| A3E8NUUS90EWXW | invalid_same | 8657.800 |
| A3E8NUUS90EWXW | invalid_different | 8386.750 |
| A3EC3OP6U52JYC | valid_same | 4435.227 |
| A3EC3OP6U52JYC | invalid_same | 4725.231 |
| A3EC3OP6U52JYC | invalid_different | 4675.545 |
| A3FCZNB9E8K3CX | valid_same | 4442.085 |
| A3FCZNB9E8K3CX | invalid_same | 4940.308 |
| A3FCZNB9E8K3CX | invalid_different | 4695.357 |
| A3GK90X2QOFR53 | valid_same | 4352.977 |
| A3GK90X2QOFR53 | invalid_same | 4628.750 |
| A3GK90X2QOFR53 | invalid_different | 4648.889 |
| A3H32595TVJ34Q | valid_same | 5274.848 |
| A3H32595TVJ34Q | invalid_same | 5212.571 |
| A3H32595TVJ34Q | invalid_different | 5394.333 |
| A3K2ZXAFZCHYZI | valid_same | 4150.179 |
| A3K2ZXAFZCHYZI | invalid_same | 4955.500 |
| A3K2ZXAFZCHYZI | invalid_different | 4826.333 |
| A3K9GTQBOI7O5A | valid_same | 5038.438 |
| A3K9GTQBOI7O5A | invalid_same | 5616.000 |
| A3K9GTQBOI7O5A | invalid_different | 4985.571 |
| A3KF6O09H04SP7 | valid_same | 4575.468 |
| A3KF6O09H04SP7 | invalid_same | 4657.933 |
| A3KF6O09H04SP7 | invalid_different | 4668.143 |
| A3L7IWDL0R3KU9 | valid_same | 5090.116 |
| A3L7IWDL0R3KU9 | invalid_same | 5416.867 |
| A3L7IWDL0R3KU9 | invalid_different | 5387.923 |
| A3QRZPJT2CT2IK | valid_same | 5161.457 |
| A3QRZPJT2CT2IK | invalid_same | 5624.067 |
| A3QRZPJT2CT2IK | invalid_different | 6084.000 |
| A3R818WN41K12K | valid_same | 6562.646 |
| A3R818WN41K12K | invalid_same | 6739.400 |
| A3R818WN41K12K | invalid_different | 6755.867 |
| A3S4M1GQAMPFZB | valid_same | 6808.000 |
| A3S4M1GQAMPFZB | invalid_same | 6932.000 |
| A3S4M1GQAMPFZB | invalid_different | 7001.875 |
| A3SYY5R44RAATE | valid_same | 7047.900 |
| A3SYY5R44RAATE | invalid_same | 7313.125 |
| A3SYY5R44RAATE | invalid_different | 7760.250 |
| A3UDUHUVFKD833 | valid_same | 4668.064 |
| A3UDUHUVFKD833 | invalid_same | 5348.133 |
| A3UDUHUVFKD833 | invalid_different | 5642.000 |
| A4W9APAHFWVLO | valid_same | 4307.812 |
| A4W9APAHFWVLO | invalid_same | 4684.357 |
| A4W9APAHFWVLO | invalid_different | 5023.000 |
| A6JKKANO7F4KD | valid_same | 4912.938 |
| A6JKKANO7F4KD | invalid_same | 5637.267 |
| A6JKKANO7F4KD | invalid_different | 5926.625 |
| AAAHLPAGDOA2U | valid_same | 5179.979 |
| AAAHLPAGDOA2U | invalid_same | 5135.625 |
| AAAHLPAGDOA2U | invalid_different | 5301.312 |
| AK3H5QRAROFGP | valid_same | 4344.044 |
| AK3H5QRAROFGP | invalid_same | 5375.188 |
| AK3H5QRAROFGP | invalid_different | 6295.714 |
| AKVDY8OXNMQED | valid_same | 6038.841 |
| AKVDY8OXNMQED | invalid_same | 5443.000 |
| AKVDY8OXNMQED | invalid_different | 6001.125 |
| ALBIU0ZCAUNON | valid_same | 4663.511 |
| ALBIU0ZCAUNON | invalid_same | 5568.250 |
| ALBIU0ZCAUNON | invalid_different | 5800.786 |
| AM8OWAW9TUVLN | valid_same | 4649.622 |
| AM8OWAW9TUVLN | invalid_same | 5092.643 |
| AM8OWAW9TUVLN | invalid_different | 5056.312 |
| ANUT13S1G9RWU | valid_same | 4942.354 |
| ANUT13S1G9RWU | invalid_same | 5168.250 |
| ANUT13S1G9RWU | invalid_different | 5196.200 |
| AQP4PHYDXRBPI | valid_same | 5383.455 |
| AQP4PHYDXRBPI | invalid_same | 5911.846 |
| AQP4PHYDXRBPI | invalid_different | 5777.538 |
| ARCCEMO6PIE44 | valid_same | 4227.093 |
| ARCCEMO6PIE44 | invalid_same | 4374.071 |
| ARCCEMO6PIE44 | invalid_different | 4243.333 |
| ARLGZWN6W91WD | valid_same | 4696.844 |
| ARLGZWN6W91WD | invalid_same | 5596.667 |
| ARLGZWN6W91WD | invalid_different | 5040.067 |
| ASI2B6A3Y556Z | valid_same | 4579.319 |
| ASI2B6A3Y556Z | invalid_same | 5898.429 |
| ASI2B6A3Y556Z | invalid_different | 5891.533 |
| AURYD2FH3FUOQ | valid_same | 5305.170 |
| AURYD2FH3FUOQ | invalid_same | 5942.867 |
| AURYD2FH3FUOQ | invalid_different | 6151.812 |
| AXKVHJHF1EOVT | valid_same | 5674.071 |
| AXKVHJHF1EOVT | invalid_same | 5488.733 |
| AXKVHJHF1EOVT | invalid_different | 5383.583 |
tbl_final %>%
ggbarplot(x = "validity", y = "mean_rt", ylab = "Mean RT (ms)", fill = "validity" , color = "validity", palette = c("#0d2240", "#00a8e1", "#f7a800"), add = "mean_se", ylim = c(0, 7000))
tbl_final %>%
group_by(validity) %>%
get_summary_stats(mean_rt, type = "mean_sd")
## # A tibble: 3 x 5
## validity variable n mean sd
## <fct> <chr> <dbl> <dbl> <dbl>
## 1 valid_same mean_rt 58 5245. 1197.
## 2 invalid_same mean_rt 58 5738. 1223.
## 3 invalid_different mean_rt 58 5757. 1064.
tbl_final %>%
group_by(validity) %>%
identify_outliers(mean_rt)
## # A tibble: 17 x 5
## validity workerId mean_rt is.outlier is.extreme
## <fct> <chr> <dbl> <lgl> <lgl>
## 1 valid_same A16Z47IWMSXYHP 8330. TRUE TRUE
## 2 valid_same A1PUWQYUQRGCO 8559. TRUE TRUE
## 3 valid_same A220ZCMBT1YMMU 7289. TRUE FALSE
## 4 valid_same A3CASN6JG7104 10258. TRUE TRUE
## 5 valid_same A3E8NUUS90EWXW 7079. TRUE FALSE
## 6 valid_same A3S4M1GQAMPFZB 6808 TRUE FALSE
## 7 valid_same A3SYY5R44RAATE 7048. TRUE FALSE
## 8 invalid_same A16Z47IWMSXYHP 10943. TRUE TRUE
## 9 invalid_same A1PUWQYUQRGCO 8423. TRUE FALSE
## 10 invalid_same A3CASN6JG7104 9596. TRUE TRUE
## 11 invalid_same A3E8NUUS90EWXW 8658. TRUE TRUE
## 12 invalid_same A3SYY5R44RAATE 7313. TRUE FALSE
## 13 invalid_different A1PUWQYUQRGCO 8042. TRUE FALSE
## 14 invalid_different A220ZCMBT1YMMU 7975. TRUE FALSE
## 15 invalid_different A3CASN6JG7104 9451. TRUE TRUE
## 16 invalid_different A3E8NUUS90EWXW 8387. TRUE FALSE
## 17 invalid_different A3SYY5R44RAATE 7760. TRUE FALSE
res.aov <- anova_test(data = tbl_final, dv = mean_rt, wid = workerId, within = validity)
get_anova_table(res.aov, correction = "none")
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 validity 2 114 27.047 2.44e-10 * 0.041
The analysis of space-based attentional selection is first; the analysis of object-based attentional selection is second.
tbl_final %>%
filter(validity == "valid_same" | validity == "invalid_same") %>%
with(t.test(mean_rt~validity,paired=TRUE))
##
## Paired t-test
##
## data: mean_rt by validity
## t = -6.4633, df = 57, p-value = 2.481e-08
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -645.4167 -340.0854
## sample estimates:
## mean of the differences
## -492.7511
tbl_final %>%
filter(validity == "invalid_different" | validity == "invalid_same") %>%
with(t.test(mean_rt~validity,paired=TRUE))
##
## Paired t-test
##
## data: mean_rt by validity
## t = -0.24801, df = 57, p-value = 0.805
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -176.8892 137.9021
## sample estimates:
## mean of the differences
## -19.49352
Two chunks will perform linear modeling on RT data as a function of validity. The two chunks differ based on what is the reference group. In the first model, “valid” is the reference group and is contrasted with invalid-same (space-based effect) and invalid different. In the second model, “invalid-same” is the reference group and is contrasted with valid (space-based effect) and invalid-different (object-based effect). Moving forward, subsequent linear models will be strucuted like Model #2 (invalid-same as reference group)
model = lm(removed_RT ~ validity, data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
summary(model)
##
## Call:
## lm(formula = removed_RT ~ validity, data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1908.1 -866.8 -445.3 346.2 19943.7
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5132.80 30.59 167.766 < 2e-16 ***
## validityinvalid_same 505.51 62.63 8.072 9.05e-16 ***
## validityinvalid_different 521.30 62.44 8.348 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1525 on 4046 degrees of freedom
## Multiple R-squared: 0.02619, Adjusted R-squared: 0.02571
## F-statistic: 54.41 on 2 and 4046 DF, p-value: < 2.2e-16
model_ISref = lm(removed_RT ~ relevel(validity, ref = "invalid_same"), data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
summary(model_ISref)
##
## Call:
## lm(formula = removed_RT ~ relevel(validity, ref = "invalid_same"),
## data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1908.1 -866.8 -445.3 346.2 19943.7
##
## Coefficients:
## Estimate Std. Error
## (Intercept) 5638.31 54.64
## relevel(validity, ref = "invalid_same")valid_same -505.51 62.63
## relevel(validity, ref = "invalid_same")invalid_different 15.79 77.13
## t value Pr(>|t|)
## (Intercept) 103.182 < 2e-16 ***
## relevel(validity, ref = "invalid_same")valid_same -8.072 9.05e-16 ***
## relevel(validity, ref = "invalid_same")invalid_different 0.205 0.838
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1525 on 4046 degrees of freedom
## Multiple R-squared: 0.02619, Adjusted R-squared: 0.02571
## F-statistic: 54.41 on 2 and 4046 DF, p-value: < 2.2e-16
Get subject count and RTs.
tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed$log_RT = log(tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed$removed_RT)
tbl_final_log <- tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed %>%
group_by(workerId,validity) %>%
filter(validity=='valid_same' | validity=='invalid_same' | validity=='invalid_different') %>%
dplyr::summarize(mean_log_rt = mean(log_RT, na.rm=TRUE))
tbl_final_log <- data.frame(tbl_final_log)
kable(tbl_final_log)
| workerId | validity | mean_log_rt |
|---|---|---|
| A11SVF9ZNHO1EW | valid_same | 8.456109 |
| A11SVF9ZNHO1EW | invalid_same | 8.602598 |
| A11SVF9ZNHO1EW | invalid_different | 8.648993 |
| A16O7CY4VH5BCP | valid_same | 8.649287 |
| A16O7CY4VH5BCP | invalid_same | 8.706293 |
| A16O7CY4VH5BCP | invalid_different | 8.674030 |
| A16Z47IWMSXYHP | valid_same | 8.929764 |
| A16Z47IWMSXYHP | invalid_same | 9.197162 |
| A16Z47IWMSXYHP | invalid_different | 8.839295 |
| A17WT0K0HFTW9U | valid_same | 8.478851 |
| A17WT0K0HFTW9U | invalid_same | 8.709705 |
| A17WT0K0HFTW9U | invalid_different | 8.751275 |
| A19L8SNH73AX1Z | valid_same | 8.644607 |
| A19L8SNH73AX1Z | invalid_same | 8.620685 |
| A19L8SNH73AX1Z | invalid_different | 8.790361 |
| A1BVG13MHBM1YD | valid_same | 8.539863 |
| A1BVG13MHBM1YD | invalid_same | 8.486502 |
| A1BVG13MHBM1YD | invalid_different | 8.470549 |
| A1FYWSPNO7KN1O | valid_same | 8.458960 |
| A1FYWSPNO7KN1O | invalid_same | 8.527599 |
| A1FYWSPNO7KN1O | invalid_different | 8.491943 |
| A1PUWQYUQRGCO | valid_same | 8.998045 |
| A1PUWQYUQRGCO | invalid_same | 8.965420 |
| A1PUWQYUQRGCO | invalid_different | 8.957675 |
| A1SISJL5ST2PWH | valid_same | 8.322482 |
| A1SISJL5ST2PWH | invalid_same | 8.332808 |
| A1SISJL5ST2PWH | invalid_different | 8.323938 |
| A1TZARLMBLCJ8X | valid_same | 8.545970 |
| A1TZARLMBLCJ8X | invalid_same | 8.649315 |
| A1TZARLMBLCJ8X | invalid_different | 8.670051 |
| A1V2H0UF94ATWY | valid_same | 8.448347 |
| A1V2H0UF94ATWY | invalid_same | 8.706847 |
| A1V2H0UF94ATWY | invalid_different | 8.832090 |
| A1ZE87WEYCA44A | valid_same | 8.466280 |
| A1ZE87WEYCA44A | invalid_same | 8.644571 |
| A1ZE87WEYCA44A | invalid_different | 8.563437 |
| A21TBK48OBJYSX | valid_same | 8.522532 |
| A21TBK48OBJYSX | invalid_same | 8.739526 |
| A21TBK48OBJYSX | invalid_different | 8.708159 |
| A21UA6O7ZFAIQJ | valid_same | 8.468815 |
| A21UA6O7ZFAIQJ | invalid_same | 8.529539 |
| A21UA6O7ZFAIQJ | invalid_different | 8.541617 |
| A220ZCMBT1YMMU | valid_same | 8.841044 |
| A220ZCMBT1YMMU | invalid_same | 8.838572 |
| A220ZCMBT1YMMU | invalid_different | 8.932768 |
| A2482SLAY120J2 | valid_same | 8.476759 |
| A2482SLAY120J2 | invalid_same | 8.490232 |
| A2482SLAY120J2 | invalid_different | 8.541896 |
| A248QG4DPULP46 | valid_same | 8.377319 |
| A248QG4DPULP46 | invalid_same | 8.553648 |
| A248QG4DPULP46 | invalid_different | 8.633710 |
| A26Z8M2VSEWUU4 | valid_same | 8.433100 |
| A26Z8M2VSEWUU4 | invalid_same | 8.480079 |
| A26Z8M2VSEWUU4 | invalid_different | 8.465024 |
| A2APG8MSLJ6G2K | valid_same | 8.414124 |
| A2APG8MSLJ6G2K | invalid_same | 8.512980 |
| A2APG8MSLJ6G2K | invalid_different | 8.611116 |
| A2CHD0TNWHFW1R | valid_same | 8.332373 |
| A2CHD0TNWHFW1R | invalid_same | 8.576405 |
| A2CHD0TNWHFW1R | invalid_different | 8.572918 |
| A2FGKKWP33DFWS | valid_same | 8.751278 |
| A2FGKKWP33DFWS | invalid_same | 8.731869 |
| A2FGKKWP33DFWS | invalid_different | 8.774744 |
| A2GOYSTIL3LOV1 | valid_same | 8.389103 |
| A2GOYSTIL3LOV1 | invalid_same | 8.448631 |
| A2GOYSTIL3LOV1 | invalid_different | 8.487213 |
| A2ODH6HV36EP88 | valid_same | 8.446214 |
| A2ODH6HV36EP88 | invalid_same | 8.472285 |
| A2ODH6HV36EP88 | invalid_different | 8.472303 |
| A2PSR3CMNR1R9X | valid_same | 8.348904 |
| A2PSR3CMNR1R9X | invalid_same | 8.538455 |
| A2PSR3CMNR1R9X | invalid_different | 8.488500 |
| A2VLTSW6CXIUMR | valid_same | 8.518279 |
| A2VLTSW6CXIUMR | invalid_same | 8.689178 |
| A2VLTSW6CXIUMR | invalid_different | 8.661116 |
| A2VNSNAN1LZBAM | valid_same | 8.588548 |
| A2VNSNAN1LZBAM | invalid_same | 8.605652 |
| A2VNSNAN1LZBAM | invalid_different | 8.605833 |
| A2WC2NO555XU3J | valid_same | 8.408541 |
| A2WC2NO555XU3J | invalid_same | 8.551902 |
| A2WC2NO555XU3J | invalid_different | 8.537892 |
| A36UNYMDBED99W | valid_same | 8.382208 |
| A36UNYMDBED99W | invalid_same | 8.648616 |
| A36UNYMDBED99W | invalid_different | 8.665875 |
| A39GADIK8RLMVC | valid_same | 8.406123 |
| A39GADIK8RLMVC | invalid_same | 8.546174 |
| A39GADIK8RLMVC | invalid_different | 8.544483 |
| A3CASN6JG7104 | valid_same | 9.161832 |
| A3CASN6JG7104 | invalid_same | 9.148440 |
| A3CASN6JG7104 | invalid_different | 9.114296 |
| A3E8NUUS90EWXW | valid_same | 8.830148 |
| A3E8NUUS90EWXW | invalid_same | 9.034069 |
| A3E8NUUS90EWXW | invalid_different | 9.022016 |
| A3EC3OP6U52JYC | valid_same | 8.393816 |
| A3EC3OP6U52JYC | invalid_same | 8.455376 |
| A3EC3OP6U52JYC | invalid_different | 8.445761 |
| A3FCZNB9E8K3CX | valid_same | 8.396722 |
| A3FCZNB9E8K3CX | invalid_same | 8.499780 |
| A3FCZNB9E8K3CX | invalid_different | 8.451881 |
| A3GK90X2QOFR53 | valid_same | 8.377574 |
| A3GK90X2QOFR53 | invalid_same | 8.438258 |
| A3GK90X2QOFR53 | invalid_different | 8.441393 |
| A3H32595TVJ34Q | valid_same | 8.553053 |
| A3H32595TVJ34Q | invalid_same | 8.554043 |
| A3H32595TVJ34Q | invalid_different | 8.586245 |
| A3K2ZXAFZCHYZI | valid_same | 8.325395 |
| A3K2ZXAFZCHYZI | invalid_same | 8.504777 |
| A3K2ZXAFZCHYZI | invalid_different | 8.471056 |
| A3K9GTQBOI7O5A | valid_same | 8.513049 |
| A3K9GTQBOI7O5A | invalid_same | 8.620528 |
| A3K9GTQBOI7O5A | invalid_different | 8.509867 |
| A3KF6O09H04SP7 | valid_same | 8.427044 |
| A3KF6O09H04SP7 | invalid_same | 8.444898 |
| A3KF6O09H04SP7 | invalid_different | 8.447040 |
| A3L7IWDL0R3KU9 | valid_same | 8.523349 |
| A3L7IWDL0R3KU9 | invalid_same | 8.588035 |
| A3L7IWDL0R3KU9 | invalid_different | 8.578304 |
| A3QRZPJT2CT2IK | valid_same | 8.534204 |
| A3QRZPJT2CT2IK | invalid_same | 8.623755 |
| A3QRZPJT2CT2IK | invalid_different | 8.700921 |
| A3R818WN41K12K | valid_same | 8.780663 |
| A3R818WN41K12K | invalid_same | 8.808247 |
| A3R818WN41K12K | invalid_different | 8.813387 |
| A3S4M1GQAMPFZB | valid_same | 8.770761 |
| A3S4M1GQAMPFZB | invalid_same | 8.826467 |
| A3S4M1GQAMPFZB | invalid_different | 8.784759 |
| A3SYY5R44RAATE | valid_same | 8.791925 |
| A3SYY5R44RAATE | invalid_same | 8.865266 |
| A3SYY5R44RAATE | invalid_different | 8.935530 |
| A3UDUHUVFKD833 | valid_same | 8.436538 |
| A3UDUHUVFKD833 | invalid_same | 8.568842 |
| A3UDUHUVFKD833 | invalid_different | 8.628770 |
| A4W9APAHFWVLO | valid_same | 8.365902 |
| A4W9APAHFWVLO | invalid_same | 8.447798 |
| A4W9APAHFWVLO | invalid_different | 8.514369 |
| A6JKKANO7F4KD | valid_same | 8.492934 |
| A6JKKANO7F4KD | invalid_same | 8.626756 |
| A6JKKANO7F4KD | invalid_different | 8.675268 |
| AAAHLPAGDOA2U | valid_same | 8.547024 |
| AAAHLPAGDOA2U | invalid_same | 8.539426 |
| AAAHLPAGDOA2U | invalid_different | 8.569416 |
| AK3H5QRAROFGP | valid_same | 8.372745 |
| AK3H5QRAROFGP | invalid_same | 8.579777 |
| AK3H5QRAROFGP | invalid_different | 8.742136 |
| AKVDY8OXNMQED | valid_same | 8.679495 |
| AKVDY8OXNMQED | invalid_same | 8.588871 |
| AKVDY8OXNMQED | invalid_different | 8.684359 |
| ALBIU0ZCAUNON | valid_same | 8.436212 |
| ALBIU0ZCAUNON | invalid_same | 8.605067 |
| ALBIU0ZCAUNON | invalid_different | 8.653322 |
| AM8OWAW9TUVLN | valid_same | 8.436816 |
| AM8OWAW9TUVLN | invalid_same | 8.521489 |
| AM8OWAW9TUVLN | invalid_different | 8.520011 |
| ANUT13S1G9RWU | valid_same | 8.499569 |
| ANUT13S1G9RWU | invalid_same | 8.544304 |
| ANUT13S1G9RWU | invalid_different | 8.550411 |
| AQP4PHYDXRBPI | valid_same | 8.573309 |
| AQP4PHYDXRBPI | invalid_same | 8.676882 |
| AQP4PHYDXRBPI | invalid_different | 8.644967 |
| ARCCEMO6PIE44 | valid_same | 8.348785 |
| ARCCEMO6PIE44 | invalid_same | 8.381960 |
| ARCCEMO6PIE44 | invalid_different | 8.352390 |
| ARLGZWN6W91WD | valid_same | 8.443314 |
| ARLGZWN6W91WD | invalid_same | 8.619507 |
| ARLGZWN6W91WD | invalid_different | 8.516193 |
| ASI2B6A3Y556Z | valid_same | 8.420604 |
| ASI2B6A3Y556Z | invalid_same | 8.674450 |
| ASI2B6A3Y556Z | invalid_different | 8.674343 |
| AURYD2FH3FUOQ | valid_same | 8.558470 |
| AURYD2FH3FUOQ | invalid_same | 8.677293 |
| AURYD2FH3FUOQ | invalid_different | 8.708656 |
| AXKVHJHF1EOVT | valid_same | 8.626881 |
| AXKVHJHF1EOVT | invalid_same | 8.590170 |
| AXKVHJHF1EOVT | invalid_different | 8.586375 |
tbl_final_log %>%
ggbarplot(x = "validity", y = "mean_log_rt", ylab = "Mean RT (ms)", fill = "validity" , color = "validity", palette = c("#0d2240", "#00a8e1", "#f7a800"), add = "mean_se", ylim = c(8, 9))
tbl_final_log %>%
group_by(validity) %>%
get_summary_stats(mean_log_rt, type = "mean_sd")
## # A tibble: 3 x 5
## validity variable n mean sd
## <fct> <chr> <dbl> <dbl> <dbl>
## 1 valid_same mean_log_rt 58 8.53 0.177
## 2 invalid_same mean_log_rt 58 8.62 0.169
## 3 invalid_different mean_log_rt 58 8.63 0.162
tbl_final_log %>%
group_by(validity) %>%
identify_outliers(mean_log_rt)
## # A tibble: 11 x 5
## validity workerId mean_log_rt is.outlier is.extreme
## <fct> <chr> <dbl> <lgl> <lgl>
## 1 valid_same A16Z47IWMSXYHP 8.93 TRUE FALSE
## 2 valid_same A1PUWQYUQRGCO 9.00 TRUE FALSE
## 3 valid_same A220ZCMBT1YMMU 8.84 TRUE FALSE
## 4 valid_same A3CASN6JG7104 9.16 TRUE TRUE
## 5 valid_same A3E8NUUS90EWXW 8.83 TRUE FALSE
## 6 invalid_same A16Z47IWMSXYHP 9.20 TRUE TRUE
## 7 invalid_same A1PUWQYUQRGCO 8.97 TRUE FALSE
## 8 invalid_same A3CASN6JG7104 9.15 TRUE TRUE
## 9 invalid_same A3E8NUUS90EWXW 9.03 TRUE FALSE
## 10 invalid_different A3CASN6JG7104 9.11 TRUE FALSE
## 11 invalid_different A3E8NUUS90EWXW 9.02 TRUE FALSE
res.aov <- anova_test(data = tbl_final_log, dv = mean_log_rt, wid = workerId, within = validity)
get_anova_table(res.aov, correction = "none")
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 validity 2 114 46.496 1.71e-15 * 0.071
tbl_final_log %>%
filter(validity == "valid_same" | validity == "invalid_same") %>%
with(t.test(mean_log_rt~validity,paired=TRUE))
##
## Paired t-test
##
## data: mean_log_rt by validity
## t = -8.0229, df = 57, p-value = 6.296e-11
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.11840566 -0.07110505
## sample estimates:
## mean of the differences
## -0.09475535
tbl_final_log %>%
filter(validity == "invalid_different" | validity == "invalid_same") %>%
with(t.test(mean_log_rt~validity,paired=TRUE))
##
## Paired t-test
##
## data: mean_log_rt by validity
## t = -0.75253, df = 57, p-value = 0.4548
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.02679233 0.01215560
## sample estimates:
## mean of the differences
## -0.007318365
model_ISref_log = lm(log_RT ~ relevel(validity, ref = "invalid_same"), data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
summary(model_ISref_log)
##
## Call:
## lm(formula = log_RT ~ relevel(validity, ref = "invalid_same"),
## data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.39483 -0.15112 -0.06016 0.09079 1.54060
##
## Coefficients:
## Estimate Std. Error
## (Intercept) 8.609047 0.007821
## relevel(validity, ref = "invalid_same")valid_same -0.094819 0.008963
## relevel(validity, ref = "invalid_same")invalid_different 0.007915 0.011039
## t value Pr(>|t|)
## (Intercept) 1100.807 <2e-16 ***
## relevel(validity, ref = "invalid_same")valid_same -10.579 <2e-16 ***
## relevel(validity, ref = "invalid_same")invalid_different 0.717 0.473
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2183 on 4046 degrees of freedom
## Multiple R-squared: 0.04646, Adjusted R-squared: 0.04599
## F-statistic: 98.57 on 2 and 4046 DF, p-value: < 2.2e-16
tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed <- tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed %>%
filter(workerId != "A16Z47IWMSXYHP")
tbl_final_subj_removed <- tbl_final %>%
filter(workerId != "A16Z47IWMSXYHP")
#tbl_final_subj_removed %>% head
tbl_final_subj_removed %>%
ggbarplot(x = "validity", y = "mean_rt", ylab = "Mean RT (ms)", fill = "validity" , color = "validity", palette = c("#0d2240", "#00a8e1", "#f7a800"), add = "mean_se", ylim = c(0, 7000))
tbl_final_subj_removed %>%
group_by(validity) %>%
get_summary_stats(mean_rt, type = "mean_sd")
## # A tibble: 3 x 5
## validity variable n mean sd
## <fct> <chr> <dbl> <dbl> <dbl>
## 1 valid_same mean_rt 57 5191. 1134.
## 2 invalid_same mean_rt 57 5646. 1015.
## 3 invalid_different mean_rt 57 5731. 1055.
tbl_final_subj_removed %>%
group_by(validity) %>%
identify_outliers(mean_rt)
## # A tibble: 15 x 5
## validity workerId mean_rt is.outlier is.extreme
## <fct> <chr> <dbl> <lgl> <lgl>
## 1 valid_same A1PUWQYUQRGCO 8559. TRUE TRUE
## 2 valid_same A220ZCMBT1YMMU 7289. TRUE FALSE
## 3 valid_same A3CASN6JG7104 10258. TRUE TRUE
## 4 valid_same A3E8NUUS90EWXW 7079. TRUE FALSE
## 5 valid_same A3S4M1GQAMPFZB 6808 TRUE FALSE
## 6 valid_same A3SYY5R44RAATE 7048. TRUE FALSE
## 7 invalid_same A1PUWQYUQRGCO 8423. TRUE FALSE
## 8 invalid_same A3CASN6JG7104 9596. TRUE TRUE
## 9 invalid_same A3E8NUUS90EWXW 8658. TRUE TRUE
## 10 invalid_same A3SYY5R44RAATE 7313. TRUE FALSE
## 11 invalid_different A1PUWQYUQRGCO 8042. TRUE FALSE
## 12 invalid_different A220ZCMBT1YMMU 7975. TRUE FALSE
## 13 invalid_different A3CASN6JG7104 9451. TRUE TRUE
## 14 invalid_different A3E8NUUS90EWXW 8387. TRUE FALSE
## 15 invalid_different A3SYY5R44RAATE 7760. TRUE FALSE
res.aov <- anova_test(data = tbl_final_subj_removed, dv = mean_rt, wid = workerId, within = validity)
get_anova_table(res.aov, correction = "none")
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 validity 2 112 39.892 8.29e-14 * 0.048
tbl_final_subj_removed %>%
filter(validity == "valid_same" | validity == "invalid_same") %>%
with(t.test(mean_rt~validity,paired=TRUE))
##
## Paired t-test
##
## data: mean_rt by validity
## t = -6.7265, df = 56, p-value = 9.787e-09
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -591.2189 -319.8816
## sample estimates:
## mean of the differences
## -455.5503
tbl_final_subj_removed %>%
filter(validity == "invalid_different" | validity == "invalid_same") %>%
with(t.test(mean_rt~validity,paired=TRUE))
##
## Paired t-test
##
## data: mean_rt by validity
## t = -1.9011, df = 56, p-value = 0.06244
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -174.063776 4.553476
## sample estimates:
## mean of the differences
## -84.75515
model_ISref = lm(removed_RT ~ relevel(validity, ref = "invalid_same"), data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
summary(model_ISref)
##
## Call:
## lm(formula = removed_RT ~ relevel(validity, ref = "invalid_same"),
## data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1879.3 -807.2 -401.8 373.4 16344.2
##
## Coefficients:
## Estimate Std. Error
## (Intercept) 5527.07 48.53
## relevel(validity, ref = "invalid_same")valid_same -453.23 55.60
## relevel(validity, ref = "invalid_same")invalid_different 98.19 68.45
## t value Pr(>|t|)
## (Intercept) 113.900 < 2e-16 ***
## relevel(validity, ref = "invalid_same")valid_same -8.152 4.75e-16 ***
## relevel(validity, ref = "invalid_same")invalid_different 1.434 0.152
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1340 on 3971 degrees of freedom
## Multiple R-squared: 0.03275, Adjusted R-squared: 0.03227
## F-statistic: 67.24 on 2 and 3971 DF, p-value: < 2.2e-16
Get subject count and RTs.
tbl_final_log_subj_removed <- tbl_final_log %>%
filter(workerId != "A16Z47IWMSXYHP")
tbl_final_log_subj_removed %>%
ggbarplot(x = "validity", y = "mean_log_rt", ylab = "Mean RT (ms)", fill = "validity" , color = "validity", palette = c("#0d2240", "#00a8e1", "#f7a800"), add = "mean_se", ylim = c(8, 9))
tbl_final_log_subj_removed %>%
group_by(validity) %>%
get_summary_stats(mean_log_rt, type = "mean_sd")
## # A tibble: 3 x 5
## validity variable n mean sd
## <fct> <chr> <dbl> <dbl> <dbl>
## 1 valid_same mean_log_rt 57 8.52 0.17
## 2 invalid_same mean_log_rt 57 8.61 0.152
## 3 invalid_different mean_log_rt 57 8.63 0.162
tbl_final_log_subj_removed %>%
group_by(validity) %>%
identify_outliers(mean_log_rt)
## # A tibble: 10 x 5
## validity workerId mean_log_rt is.outlier is.extreme
## <fct> <chr> <dbl> <lgl> <lgl>
## 1 valid_same A1PUWQYUQRGCO 9.00 TRUE FALSE
## 2 valid_same A220ZCMBT1YMMU 8.84 TRUE FALSE
## 3 valid_same A3CASN6JG7104 9.16 TRUE TRUE
## 4 valid_same A3E8NUUS90EWXW 8.83 TRUE FALSE
## 5 valid_same A3SYY5R44RAATE 8.79 TRUE FALSE
## 6 invalid_same A1PUWQYUQRGCO 8.97 TRUE FALSE
## 7 invalid_same A3CASN6JG7104 9.15 TRUE TRUE
## 8 invalid_same A3E8NUUS90EWXW 9.03 TRUE FALSE
## 9 invalid_different A3CASN6JG7104 9.11 TRUE FALSE
## 10 invalid_different A3E8NUUS90EWXW 9.02 TRUE FALSE
res.aov <- anova_test(data = tbl_final_log_subj_removed, dv = mean_log_rt, wid = workerId, within = validity)
get_anova_table(res.aov, correction = "none")
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 validity 2 112 53.383 5.22e-17 * 0.079
tbl_final_log_subj_removed %>%
filter(validity == "valid_same" | validity == "invalid_same") %>%
with(t.test(mean_log_rt~validity,paired=TRUE))
##
## Paired t-test
##
## data: mean_log_rt by validity
## t = -7.8954, df = 56, p-value = 1.149e-10
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.11499955 -0.06845353
## sample estimates:
## mean of the differences
## -0.09172654
tbl_final_log_subj_removed %>%
filter(validity == "invalid_different" | validity == "invalid_same") %>%
with(t.test(mean_log_rt~validity,paired=TRUE))
##
## Paired t-test
##
## data: mean_log_rt by validity
## t = -1.8433, df = 56, p-value = 0.07058
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.02864094 0.00119067
## sample estimates:
## mean of the differences
## -0.01372514
model_ISref = lm(log_RT ~ relevel(validity, ref = "invalid_same"), data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
summary(model_ISref)
##
## Call:
## lm(formula = log_RT ~ relevel(validity, ref = "invalid_same"),
## data = tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.38717 -0.14404 -0.05594 0.09101 1.46542
##
## Coefficients:
## Estimate Std. Error
## (Intercept) 8.596714 0.007406
## relevel(validity, ref = "invalid_same")valid_same -0.090149 0.008486
## relevel(validity, ref = "invalid_same")invalid_different 0.016211 0.010447
## t value Pr(>|t|)
## (Intercept) 1160.701 <2e-16 ***
## relevel(validity, ref = "invalid_same")valid_same -10.623 <2e-16 ***
## relevel(validity, ref = "invalid_same")invalid_different 1.552 0.121
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2046 on 3971 degrees of freedom
## Multiple R-squared: 0.05246, Adjusted R-squared: 0.05198
## F-statistic: 109.9 on 2 and 3971 DF, p-value: < 2.2e-16
write.csv(tbl_good_catch_acc_all_main_acc_NA_subjs_removed_3_SDs_removed,'tbl_for_bootstrap.csv', row.names=FALSE)