library(dplyr)
library(ggplot2)
library(tidyr)

# ---- Load data ----
df <- read.csv("MoCA_SPACE_nana_final0905_final_removed_outliers.csv")

# ---- Drop rows with NA in relevant variables ----
df <- df %>%
  drop_na(SPACE_error, Gender, AgeGroup_coded, Supervision)

# ---- Summarise means ± SE by Gender × Supervision × AgeGroup ----
df_se <- df %>%
  group_by(Gender, Supervision, AgeGroup_coded) %>%
  summarise(
    mean_val = mean(SPACE_error, na.rm = TRUE),
    sd_val   = sd(SPACE_error, na.rm = TRUE),
    n        = dplyr::n(),
    se_val   = sd_val / sqrt(n),
    .groups  = "drop"
  )

# ---- Relabel factors (including 61–80) ----
df_se <- df_se %>%
  mutate(
    Supervision = factor(as.character(Supervision),
                         levels = c("0","1"),
                         labels = c("Supervised","Unsupervised")),
    AgeGroup_coded = factor(as.character(AgeGroup_coded),
                            levels = c("0","1","2"),
                            labels = c("20-40","41-60","61-80")),
    Gender = factor(Gender, levels = c("Female","Male"))
  )

# ---- Unified theme: outer frame + horizontal grid only ----
theme_paper <- function(base_size = 20) {
  theme_classic(base_size = base_size) +
    theme(
      panel.border = element_rect(color = "black", fill = NA, linewidth = 0.9),
      panel.grid.major.y = element_line(color = "grey85", linewidth = 0.6),
      panel.grid.minor.y = element_line(color = "grey92", linewidth = 0.4),
      panel.grid.major.x = element_blank(),
      panel.grid.minor.x = element_blank(),
      axis.line = element_line(color = "black", linewidth = 0.6),
      axis.ticks = element_line(color = "black", linewidth = 0.6),
      legend.title = element_blank(),
      legend.key = element_blank(),
      legend.background = element_blank(),
      legend.box.background = element_blank(),
      strip.text = element_text(face = "bold", size = base_size + 2),
      axis.title = element_text(size = base_size + 6),
      axis.text  = element_text(size = base_size + 4),
      legend.text = element_text(size = base_size + 4)
    )
}

# ---- Plot ----
pd <- position_dodge(width = 0.25)

p <- ggplot(df_se, aes(x = Gender, y = mean_val, color = Supervision, group = Supervision)) +
  geom_line(position = pd, linewidth = 1.2) +
  geom_point(size = 3.6, position = pd) +
  geom_errorbar(aes(ymin = mean_val - se_val, ymax = mean_val + se_val),
                width = 0.10, position = pd, alpha = 0.95, linewidth = 0.8) +
  facet_wrap(~ AgeGroup_coded, nrow = 1) +
  labs(x = "Gender", y = "SPACE error") +
  scale_color_manual(values = c("Supervised" = "#46506B",     # pink/coral
                                "Unsupervised" = "#E4B74F")) + # teal
  theme_paper(base_size = 20) +
  theme(legend.position = "right")

print(p)