3.2.2 Main trials
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 %>%
ggbarplot(y = "ACC", x = "bin", ylab = "Accuracy", fill = "#f7a800", color = "#f7a800", add = "mean_se", ylim = c(0, 1), xlab = " Bin", width = 0.5, label = TRUE, lab.nb.digits = 2, lab.vjust = c(-1.4, -1.4, -1.4, -1.6), title = "Main Trial Accuracy Over Time", na.rm = TRUE)
Here are some descriptive and inferential statistics for the effect of accuracy over time.
For 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).
Outliers identified in this chunk are not removed.
tbl_overall_good_acc_bin %>%
group_by(bin) %>%
get_summary_stats(ACC, type = "mean_se")
## # A tibble: 4 x 5
## bin variable n mean se
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 1 ACC 58 0.902 0.018
## 2 2 ACC 58 0.889 0.023
## 3 3 ACC 58 0.886 0.026
## 4 4 ACC 58 0.877 0.028
tbl_overall_good_acc_bin %>%
group_by(bin) %>%
identify_outliers(ACC)
## # A tibble: 26 x 5
## bin workerId ACC is.outlier is.extreme
## <chr> <chr> <dbl> <lgl> <lgl>
## 1 1 A1PUWQYUQRGCO 0.429 TRUE FALSE
## 2 1 A2CHD0TNWHFW1R 0.211 TRUE TRUE
## 3 2 A1PUWQYUQRGCO 0.4 TRUE TRUE
## 4 2 A2CHD0TNWHFW1R 0.25 TRUE TRUE
## 5 2 A3CASN6JG7104 0.182 TRUE TRUE
## 6 2 A3E8NUUS90EWXW 0.7 TRUE FALSE
## 7 2 A3GK90X2QOFR53 0.75 TRUE FALSE
## 8 2 A3K2ZXAFZCHYZI 0.667 TRUE FALSE
## 9 2 A3S4M1GQAMPFZB 0.682 TRUE FALSE
## 10 2 A3SYY5R44RAATE 0.588 TRUE TRUE
## # … with 16 more rows
res.aov <- anova_test(data = tbl_overall_good_acc_bin, dv = ACC, wid = workerId, within = bin)
get_anova_table(res.aov, correction = "none")
## ANOVA Table (type III tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 bin 3 171 0.757 0.52 0.002
pwc <- tbl_overall_good_acc_bin %>%
pairwise_t_test(
ACC ~ bin, paired = TRUE,
p.adjust.method = "bonferroni"
)
pwc
## # 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 for the effect of accuracy by validity.
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
res.aov <- anova_test(data = tbl_overall_good_acc_cond, dv = acc, 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 6.168 0.003 * 0.011
pwc <- tbl_overall_good_acc_cond %>%
pairwise_t_test(
acc ~ validity, paired = TRUE,
p.adjust.method = "bonferroni"
)
pwc
## # 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)))