Deformation Fields and Grey Matter vs Grey Matter and White Matter

Deformation Fields and Grey Matter vs Grey Matter and White Matter

Data Loading

suppressWarnings(suppressMessages(library("tidyverse")))
suppressWarnings(suppressMessages(library("ggpubr")))
suppressWarnings(suppressMessages(library("rstatix")))

library(tidyverse)
library(ggpubr)
library(rstatix)


map_abb <- list("df_gm"= "DF+ǴM", "gm_wm"= "GM+WM")

all_results <- c()

df_eval <- list("crossval"= data.frame(), "test"= data.frame())


for (evaluation in names(df_eval)){
    for (mod in names(map_abb)){

      filename <- sprintf("%s_%s.csv", mod, evaluation)
      path_col <- file.path(getwd(), "..", "..", "..", "resources", filename)
      
      df_mod <- read.csv(path_col)
      df_mod$fusion <- map_abb[[mod]]

      df_eval[[evaluation]] <- rbind(df_eval[[evaluation]], df_mod)
    }
}
df_val <- df_eval[["crossval"]]
df_test <- df_eval[["test"]]

Validation data

head(df_val)
A data.frame: 6 × 4
foldr2MAEfusion
<int><dbl><dbl><chr>
100.80264675.740682DF+ǴM
210.74733446.313860DF+ǴM
320.73628755.625505DF+ǴM
430.74568595.830985DF+ǴM
540.79419035.643035DF+ǴM
650.75650525.573205DF+ǴM
aggregate(df_val[,c("r2", "MAE")], list(df_val$fusion), mean)
A data.frame: 2 × 3
Group.1r2MAE
<chr><dbl><dbl>
DF+ǴM0.78846065.548079
GM+WM0.78964365.445226

Test data

head(df_test)
A data.frame: 6 × 5
subjectIDgenderagey_hatfusion
<chr><int><dbl><dbl><chr>
1sub-474134.0140.33901DF+ǴM
2sub-292123.7331.65292DF+ǴM
3sub-382165.9146.45294DF+ǴM
4sub-434167.2456.62014DF+ǴM
5sub-395045.0335.61988DF+ǴM
6sub-306130.1839.87024DF+ǴM
df_test["abs_diff"] <- abs(df_test$y_hat - df_test$age)

result_mean <- aggregate(df_test[,c("age", "y_hat", "abs_diff")], list(df_test$fusion), mean)
result_mean
A data.frame: 2 × 4
Group.1agey_hatabs_diff
<chr><dbl><dbl><dbl>
DF+ǴM42.3730945.597766.896464
GM+WM42.3730939.801277.919839

Statistics

Paired t-test

colors <-c("#AB1111", "#143F6B")

pwc <- df_val %>%
  pairwise_t_test(
    MAE ~ fusion, paired = TRUE, alternative="less"
  )
pwc

options(repr.plot.width = 7, repr.plot.height = 5)

bxp <- ggboxplot(df_val, x = "fusion", y = "MAE", add = "point", fill = colors,
                 xlab = "Fusion", ylab = "MAE") + theme(text = element_text(size=20))


pwc <- pwc %>% add_xy_position(x = "fusion")
bxp <- bxp + 
  stat_pvalue_manual(pwc, label = "p = {p.adj}") +
  labs(
    subtitle = get_test_label(pwc, detailed = TRUE),
  ) + geom_point(data = data.frame(x = factor(result_mean[["Group.1"]]), y = result_mean[["abs_diff"]]),
                   aes(x=x, y=y),
                   color = 'red', shape=8, size=5)

bxp 
A rstatix_test: 1 × 10
.y.group1group2n1n2statisticdfpp.adjp.adj.signif
<chr><chr><chr><int><int><dbl><dbl><dbl><dbl><chr>
1MAEDF+ǴMGM+WM30300.6854774290.7510.751ns
Warning message in if (fill %in% names(data) & is.null(add.params$fill)) add.params$fill <- fill:
“the condition has length > 1 and only the first element will be used”
../../_images/fusion_wm_gm_11_2.png