Skip to content

Commit fb90f9d

Browse files
committed
update figures 4 and 6 to be friendly to black and white print view; slight code clean-up and re-run of all plots
1 parent 15acaef commit fb90f9d

18 files changed

Lines changed: 589 additions & 517 deletions

analysis/analysis_group_advantage/demographics_viz.ipynb

Lines changed: 185 additions & 185 deletions
Large diffs are not rendered by default.

analysis/analysis_group_advantage/models.ipynb

Lines changed: 138 additions & 138 deletions
Large diffs are not rendered by default.

analysis/analysis_group_advantage/raw_data_cleaning.R

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,13 @@ epsilon = 0.000001
3131
z = 1.96 # For 95%CI
3232
outcome_term = "Group Advantage"
3333

34-
# load fonts
35-
font_import(paths = NULL, prompt = FALSE)
36-
loadfonts(device = "all")
34+
# load fonts quietly and only import if needed to avoid noisy warnings
35+
options(extrafont.quiet = TRUE)
36+
fonts_available <- tryCatch(extrafont::fonts(), error = function(e) character())
37+
if (!length(fonts_available)) {
38+
suppressWarnings(suppressMessages(font_import(paths = NULL, prompt = FALSE)))
39+
}
40+
suppressWarnings(suppressMessages(loadfonts(device = "all", quiet = TRUE)))
3741

3842
# --- Resolve project-root anchored paths and ensure output dirs exist ---
3943
script_path <- tryCatch({
@@ -70,8 +74,10 @@ load_CSVs <- function(pattern, rename = TRUE) {
7074
filter(grepl(paste0("Wave [0-9] data.*/", pattern, ".csv"), path))
7175

7276
data <- files |>
73-
mutate(data = purrr::map(path, \(f) read_csv(f, show_col_types = FALSE) |>
74-
mutate(across(matches("(data.score|duplicateCellID)"), as.character))),
77+
mutate(data = purrr::map(path, \(f) suppressWarnings(
78+
read_csv(f, show_col_types = FALSE) |>
79+
mutate(across(matches("(data.score|duplicateCellID)"), as.character))
80+
)),
7581
.keep = "none") |>
7682
unnest(data) |>
7783
distinct()
@@ -257,14 +263,16 @@ conditions <- factors |>
257263
factor_types |>
258264
select(factorTypeId, name) |>
259265
filter(name %in% c("unitsSeed", "unitsIndex", "playerCount")),
260-
by = "factorTypeId"
266+
by = "factorTypeId",
267+
relationship = "many-to-many"
261268
) |>
262269
inner_join(
263270
treatments |>
264271
mutate(factorId = str_split(factorIds, ",")) |>
265272
unnest(cols = c(factorId)) |>
266273
select(treatmentId, factorId),
267-
by = "factorId"
274+
by = "factorId",
275+
relationship = "many-to-many"
268276
) |>
269277
select(-matches("factor")) |>
270278
distinct() |>
@@ -327,7 +335,7 @@ raw_score_data <-
327335
filter(!is.na(complexity)) |>
328336
mutate(
329337
task = sub(" Round.*", "", displayName),
330-
score = as.numeric(if_else(is.na(score), data.score, as.character(score))),
338+
score = suppressWarnings(as.numeric(if_else(is.na(score), data.score, as.character(score)))),
331339
playerCount = ordered(playerCount)
332340
) |>
333341
filter(!is.na(score)) |>
@@ -378,7 +386,8 @@ permutation_synergy = function(input_data, col = "score", individuals_update) {
378386
best_individual = sum(choose(n() - row_number(), playerCount - 1) * !!sym(col)) / best_individual_n,
379387
best_individual_sd = sqrt(sum(
380388
choose(n() - row_number(), playerCount - 1) * (!!sym(col) - best_individual) ^ 2
381-
) / best_individual_n)
389+
) / best_individual_n),
390+
.groups = "drop"
382391
) |>
383392
mutate(playerCount = ordered(playerCount, levels = c(1, 3, 6))) |>
384393
ungroup()
@@ -394,7 +403,7 @@ permutation_synergy = function(input_data, col = "score", individuals_update) {
394403
team_sd = sd(!!sym(col)),
395404
strong_se = strong * sqrt((team_sd ^ 2 / (mean(!!sym(col)) ^ 2 * team_n)) + (first(best_individual_sd) ^ 2 / (first(best_individual) ^ 2 * first(best_individual_n)))),
396405
weak_se = weak * sqrt((team_sd ^ 2 / (mean(!!sym(col)) ^ 2 * team_n)) + (first(random_individual_sd) ^ 2 / (first(random_individual) ^ 2 * first(random_individual_n))))
397-
) |>
406+
, .groups = "drop") |>
398407
ungroup()
399408
}
400409

@@ -413,7 +422,8 @@ permutation_synergy_partial = function(input_data, col = "score", individuals_up
413422
best_individual = sum(choose(n() - row_number(), playerCount - 1) * !!sym(col)) / best_individual_n,
414423
best_individual_sd = sqrt(sum(
415424
choose(n() - row_number(), playerCount - 1) * (!!sym(col) - best_individual) ^ 2
416-
) / best_individual_n)
425+
) / best_individual_n),
426+
.groups = "drop"
417427
) |>
418428
mutate(playerCount = ordered(playerCount, levels = c(1, 3, 6))) |>
419429
ungroup()
@@ -446,7 +456,7 @@ individuals_update = player_conditions |>
446456
filter(!is.na(complexity)) |>
447457
mutate(
448458
task = sub(" Round.*", "", displayName),
449-
score = as.numeric(if_else(is.na(score), data.score, as.character(score))),
459+
score = suppressWarnings(as.numeric(if_else(is.na(score), data.score, as.character(score)))),
450460
average = data.average,
451461
correct_angle = data.corrAngle,
452462
playerCount = ordered(playerCount)
@@ -511,14 +521,14 @@ synergy_summary_data <- synergy_data |>
511521
filter(DV == name) |> select(-name, -se) |>
512522
mutate(
513523
DV = if_else(DV == "weak", paste0("Weak ", outcome_term), paste0("Strong ", outcome_term)),
514-
DV = ordered(DV, levels = c(paste0("Weak ", outcome_term), paste0("Strong ", outcome_term))),
524+
DV = factor(DV, levels = c(paste0("Weak ", outcome_term), paste0("Strong ", outcome_term))),
515525
complexity = paste(complexity, "Complexity"),
516-
complexity = ordered(
526+
complexity = factor(
517527
complexity,
518528
levels = c("Low Complexity", "Medium Complexity", "High Complexity")
519529
),
520530
playerCount = if_else(playerCount == 3, "Small Group", "Large Group"),
521-
playerCount = ordered(playerCount, levels = c("Small Group", "Large Group")),
531+
playerCount = factor(playerCount, levels = c("Small Group", "Large Group")),
522532
grouping = "Task",
523533
group = task
524534
) |>
@@ -532,7 +542,7 @@ aggregated_synergy_summary_data_by_wave = synergy_summary_data |>
532542
summarise(
533543
value = mean(value),
534544
SE = sqrt(sum(SE ^ 2) / length(SE) ^ 2),
535-
.groups = "drop_last"
545+
.groups = "drop"
536546
) |>
537547
mutate(
538548
grouping = case_when(
@@ -560,14 +570,14 @@ synergy_summary_data <- synergy_data |>
560570
filter(DV == name) |> select(-name, -se) |>
561571
mutate(
562572
DV = if_else(DV == "weak", paste0("Weak ",outcome_term), paste0("Strong ",outcome_term)),
563-
DV = ordered(DV, levels = c(paste0("Weak ",outcome_term), paste0("Strong ",outcome_term))),
573+
DV = factor(DV, levels = c(paste0("Weak ",outcome_term), paste0("Strong ",outcome_term))),
564574
complexity = paste(complexity, "Complexity"),
565-
complexity = ordered(
575+
complexity = factor(
566576
complexity,
567577
levels = c("Low Complexity", "Medium Complexity", "High Complexity")
568578
),
569579
playerCount = if_else(playerCount == 3, "Small Group", "Large Group"),
570-
playerCount = ordered(playerCount, levels = c("Small Group", "Large Group")),
580+
playerCount = factor(playerCount, levels = c("Small Group", "Large Group")),
571581
grouping = "Task",
572582
group = task
573583
) |>
@@ -583,7 +593,8 @@ aggregated_synergy_summary_data_by_wave = synergy_summary_data |>
583593
values_to = "group") |>
584594
group_by(grouping, group, DV, wave) |>
585595
summarise(value = mean(value),
586-
SE = sqrt(sum(SE ^ 2) / length(SE) ^ 2)) |>
596+
SE = sqrt(sum(SE ^ 2) / length(SE) ^ 2),
597+
.groups = "drop") |>
587598
mutate(
588599
grouping = case_when(
589600
grouping == "complexity" ~ "Complexity",
@@ -648,6 +659,7 @@ figure_heterogeneity <- aggregated_synergy_summary_data_by_wave |>
648659
value,
649660
group,
650661
shape = playerCount,
662+
linewidth = complexity,
651663
# color = if_else(display,complexity,"none"),
652664
color = complexity,
653665
xmin = value - z * SE ,
@@ -669,13 +681,21 @@ figure_heterogeneity <- aggregated_synergy_summary_data_by_wave |>
669681
),
670682
# guide = "none"
671683
) +
684+
scale_linewidth_manual(
685+
name = "",
686+
values = c(
687+
"Low Complexity" = 0.5,
688+
"Medium Complexity" = 0.9,
689+
"High Complexity" = 1.3
690+
),
691+
guide = "legend"
692+
) +
672693
scale_shape_manual(values = c(21,4)) +
673694
# scale_shape_manual(values = c(21,24)) +
674695
labs(
675696
y = "",
676697
x = "",
677698
color = "",
678-
fill = "",
679699
shape = ""
680700
) + geom_crossbar() +
681701
theme(

0 commit comments

Comments
 (0)