OSCR

Multimodal phenotypic classification of generalized anxiety and panic using structural MRI data and psychosocial factors: machine learning results from the German National Cohort (NAKO) study.

Code ↔ Paper

3 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 3 matches
  1. [1] § Methods › Machine-learning classification ↔ neuro.R, lines 294–371 · score 0.59 · tuning length, glmnet, resampling, maximize, width, caret
  2. [2] § Results ↔ correlations_and_descriptives.R, lines 437–509 · score 0.51 · lifetime cigarettes, depressive symptoms, PHQ Stress, female sex, childhood trauma, CT
  3. [3] § Methods › Dataset and study population ↔ correlations_and_descriptives.R, lines 437–509 · score 0.51 · lifetime cigarettes, PHQ Stress, emotional, childhood trauma, CT, panic attacks

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

R · 688 lines · 23 KB · no license · 2 matches

  1. library(car)
  2. source("https://raw.githubusercontent.com/Julsten/myFunctions/main/R%20scripts/myFunctions.R")
  3. library(tidyverse)
  4. library(broom)
  5. library(skimr)
  6. library(e1071)
  7. library(rminer)
  8. library(caret)
  9. library(here)
  10. library(ggplot2)
  11. library(doParallel)
  12. library(tictoc)
  13. library(fastDummies)
  14. library(data.table)
  15. library(officer)
  16. library(psych)
  17. chere::i_am("scripts/correlations_and_descriptives.R")
  18. source(here("scripts/helper_functions.R"))
  19. # codebook for meaningful names
  20. code_book <- readxl::read_xls("data/dd_Nako_689.xls")
  21. measure <- "ROC"
  22. seed <- 123
  23. # rad in df_test
  24. df_raw <- read_csv2(here("data/export_baseline.csv"))
  25. atlas_vars <- c(
  26. # juelich
  27. # "ma_n_l_cm", "ma_n_l_if",
  28. # "ma_n_l_lb", "ma_n_l_mf",
  29. # "ma_n_l_sf", "ma_n_l_vtm",
  30. # "ma_n_l_op5", "ma_n_l_op6",
  31. # "ma_n_l_op7", "ma_n_l_op8",
  32. # "ma_n_l_op9", "ma_n_l_fp1",
  33. # "ma_n_l_fp2", "ma_n_l_fg1",
  34. # "ma_n_l_fg2", "ma_n_l_fg3",
  35. # "ma_n_l_fg4", "ma_n_l_ca1",
  36. # "ma_n_l_ca2", "ma_n_l_ca3",
  37. # "ma_n_l_dg", "ma_n_l_hata",
  38. # "ma_n_l_hc_parasub", "ma_n_l_hc_presub",
  39. # "ma_n_l_hc_prosub", "ma_n_l_hc_sub",
  40. # "ma_n_l_hc_transsub", "ma_n_l_ia",
  41. # "ma_n_l_id1", "ma_n_l_id2",
  42. # "ma_n_l_id3", "ma_n_l_id4",
  43. # "ma_n_l_id5", "ma_n_l_id6",
  44. # "ma_n_l_id7", "ma_n_l_ig1",
  45. # "ma_n_l_ig2", "ma_n_l_ig3",
  46. # "ma_n_l_hip1", "ma_n_l_hip2",
  47. # "ma_n_l_hip3", "ma_n_l_hip4",
  48. # "ma_n_l_hip5", "ma_n_l_hip6",
  49. # "ma_n_l_hip7", "ma_n_l_hip8",
  50. # "ma_n_l_fo1", "ma_n_l_fo2",
  51. # "ma_n_l_fo3", "ma_n_l_fo4",
  52. # "ma_n_l_fo5", "ma_n_l_fo6",
  53. # "ma_n_l_fo7", "ma_n_l_op1",
  54. # "ma_n_l_op2", "ma_n_l_op3",
  55. # "ma_n_l_op4", "ma_n_l_s24",
  56. # "ma_n_l_p24ab", "ma_n_l_p24c",
  57. # "ma_n_l_25", "ma_n_l_s32",
  58. # "ma_n_l_p32", "ma_n_l_33",
  59. # "ma_n_r_cm", "ma_n_r_if",
  60. # "ma_n_r_lb", "ma_n_r_mf",
  61. # "ma_n_r_sf", "ma_n_r_vtm",
  62. # "ma_n_r_op5", "ma_n_r_op6",
  63. # "ma_n_r_op7", "ma_n_r_op8",
  64. # "ma_n_r_op9", "ma_n_r_fp1",
  65. # "ma_n_r_fp2", "ma_n_r_fg1",
  66. # "ma_n_r_fg2", "ma_n_r_fg3",
  67. # "ma_n_r_fg4", "ma_n_r_ca1",
  68. # "ma_n_r_ca2", "ma_n_r_ca3",
  69. # "ma_n_r_dg", "ma_n_r_hata",
  70. # "ma_n_r_hc_parasub", "ma_n_r_hc_presub",
  71. # "ma_n_r_hc_prosub", "ma_n_r_hc_sub",
  72. # "ma_n_r_hc_transsub", "ma_n_r_ia",
  73. # "ma_n_r_id1", "ma_n_r_id2",
  74. # "ma_n_r_id3", "ma_n_r_id4",
  75. # "ma_n_r_id5", "ma_n_r_id6",
  76. # "ma_n_r_id7", "ma_n_r_ig1",
  77. # "ma_n_r_ig2", "ma_n_r_ig3",
  78. # "ma_n_r_hip1", "ma_n_r_hip2",
  79. # "ma_n_r_hip3", "ma_n_r_hip4",
  80. # "ma_n_r_hip5", "ma_n_r_hip6",
  81. # "ma_n_r_hip7", "ma_n_r_hip8",
  82. # "ma_n_r_s24", "ma_n_r_p24ab",
  83. # "ma_n_r_p24c", "ma_n_r_25",
  84. # "ma_n_r_s32", "ma_n_r_p32",
  85. # "ma_n_r_33",
  86. #
  87. "ma_n_l_caudacc_ct",
  88. "ma_n_l_isthcing_ct", "ma_n_l_postcing_ct",
  89. "ma_n_l_rostcing_ct", "ma_n_l_caumfron_ct",
  90. "ma_n_l_insula_ct", "ma_n_l_parahipp_ct",
  91. "ma_n_r_caudacc_ct", "ma_n_r_isthcing_ct",
  92. "ma_n_r_postcing_ct", "ma_n_r_rostcing_ct",
  93. "ma_n_r_morbfron_ct", "ma_n_r_insula_ct",
  94. "ma_n_r_parahipp_ct", "ma_n_r_mean_ct",
  95. "ma_n_l_caudacc_vo", "ma_n_l_isthcing_vo",
  96. "ma_n_l_postcing_vo", "ma_n_l_rostcing_vo",
  97. "ma_n_l_morbfron_vo", "ma_n_l_insula_vo",
  98. "ma_n_l_parahipp_vo", "ma_n_r_caudacc_vo",
  99. "ma_n_r_isthcing_vo", "ma_n_r_postcing_vo",
  100. "ma_n_r_rostcing_vo", "ma_n_r_insula_vo",
  101. "ma_n_r_parahipp_vo", "ma_n_l_caudacc_sa",
  102. "ma_n_l_isthcing_sa", "ma_n_l_postcing_sa",
  103. "ma_n_l_rostcing_sa", "ma_n_l_caumfron_sa",
  104. "ma_n_l_insula_sa", "ma_n_l_parahipp_sa",
  105. "ma_n_l_whitesurf_sa", "ma_n_r_caudacc_sa",
  106. "ma_n_r_isthcing_sa", "ma_n_r_postcing_sa",
  107. "ma_n_r_rostcing_sa", "ma_n_r_insula_sa",
  108. "ma_n_r_whitesurf_sa", "lma_n_lh_cortexvol",
  109. "ma_n_cortexvol", "ma_n_rh_cortexvol",
  110. "ma_n_cerebralwm", "ma_n_lh_cerebralwm",
  111. "ma_n_subcortgray", "ma_n_totalgrayvol",
  112. "ma_n_brainstem", "ma_n_lh_accumbens",
  113. "ma_n_lh_amygdala", "ma_n_lh_hippocamp",
  114. "ma_n_lh_thalamus", "ma_n_lh_ventraldc",
  115. "ma_n_rh_accumbens", "ma_n_rh_amygdala",
  116. "ma_n_rh_hippocamp", "ma_n_rh_thalamus",
  117. "ma_n_rh_ventraldc", "ma_n_lh_nonwmhypo",
  118. "ma_n_lh_wmhypo", "ma_n_wmlesion_vol",
  119. "ma_n_ldmn_a_cupcc1", "ma_n_ldmn_a_pfcd1",
  120. "ma_n_ldmn_a_pfcm1", "ma_n_ldmn_b_ipl1",
  121. "ma_n_ldmn_b_pfcd1", "ma_n_ldmn_b_pfcl1",
  122. "ma_n_ldmn_b_pfcv1", "ma_n_ldmn_b_pfcv2",
  123. "ma_n_ldmn_c_phc1", "ma_n_llimn_b_ofc1",
  124. "ma_n_lsvan_a_frm1", "ma_n_lsvan_a_ins1",
  125. "ma_n_lsvan_a_ins2", "ma_n_lsvan_a_parm1",
  126. "ma_n_lsvan_a_paro1", "ma_n_lsvan_b_pfcl1",
  127. "ma_n_lsvan_b_pfcm1", "ma_n_rdmn_a_cupcc1",
  128. "ma_n_rdmn_a_ipl1", "ma_n_rdmn_a_pfcd1",
  129. "ma_n_rdmn_a_pfcm1", "ma_n_rdmn_b_pfcd1",
  130. "ma_n_rdmn_b_pfcv1", "ma_n_rdmn_b_pfcv2",
  131. "ma_n_rdmn_c_phc1", "ma_n_rdmn_c_rsp1",
  132. "ma_n_rlimn_a_temp1", "ma_n_rlimn_b_ofc1",
  133. "ma_n_rsvan_a_frm1", "ma_n_rsvan_a_ins1",
  134. "ma_n_rsvan_a_parm1", "ma_n_rsvan_a_paro1",
  135. "ma_n_rsvan_b_ipl1", "ma_n_rsvan_b_pfcl1",
  136. "ma_n_rsvan_b_pfcm1"
  137. )
  138. atlas_vars <- intersect(atlas_vars, colnames(df_raw))
  139. df <- df_raw %>% select(ID, sex = basis_sex, age = basis_age,
  140. gad = a_emo_gad7_sum,
  141. gad_cat = a_emo_gad7_cut10,
  142. tiv = ma_n_cortexvol, site = basis_uort, trauma = a_emo_cts_sum,
  143. all_of(atlas_vars),
  144. #all_of(juelich),
  145. phq = a_emo_phq9_sum,
  146. phq_cat =a_emo_phq9_cut10,
  147. phq_stress = a_emo_phq_stress,
  148. #panic_cat = a_emo_phq_panik, # phqp_full
  149. d_phqp1_1,
  150. d_phqp1_2,
  151. rauch_life = a_smok_past_cig_d,
  152. d_an_neu_6
  153. ) %>%
  154. mutate(female_sex =sex - 1) %>% select(-sex) %>%
  155. mutate(across(everything(), as.numeric)) %>%
  156. mutate(across(everything(),function(x) na_if(x, 7777))) %>%
  157. mutate(rauch_life = case_when(rauch_life == 7775 ~ 0,
  158. T ~ rauch_life)) %>%
  159. mutate(panic_cat = case_when(
  160. is.na(d_phqp1_2) | d_phqp1_1 == 2 ~ 0,
  161. d_phqp1_2 == 1 ~ 1)) %>%
  162. mutate(site = factor(site)) %>%
  163. mutate(gad_cat = factor(gad_cat, labels = c("healthy", "anxious")),
  164. phq_cat = factor(phq_cat, labels = c("healthy", "depressed")),
  165. panic_cat = factor(panic_cat, labels = c("healthy", "panic")),
  166. # panic_cat = factor(
  167. # case_when(
  168. # d_an_neu_6 == 1 ~ "panic",
  169. # d_an_neu_6 == 2 ~ "healthy",
  170. # TRUE ~ NA_character_
  171. # ))
  172. ) %>%
  173. select(-d_an_neu_6) %>%
  174. select(-d_phqp1_1, -d_phqp1_2) %>%
  175. mutate(gad_panic_cat = factor(as.numeric(gad_cat == "anxious" & panic_cat =="panic"),
  176. labels = c("healthy", "comorbid")))
  177. df <- df %>% mutate(across(everything(), as.numeric)) %>%
  178. mutate(ID =row_number())
  179. df1 <- df
  180. df2 <- df
  181. #atlas <- "juelich"
  182. #atlas_vars <- get_atlas(atlas)
  183. # clean_data(df1, df2, "panic_cat", atlas_vars,
  184. # remove_vars = NULL, confounds = "age")
  185. #### correlate ####
  186. ##### correlate outcomes ####
  187. cor.test(df$gad_cat, df$panic_cat)
  188. # Function to apply cor.test and tidy the result
  189. perform_correlation <- function(df, compare_with) {
  190. df %>%
  191. summarise(across(
  192. setdiff(names(df), compare_with),
  193. ~ tidy(cor.test(.x, get(compare_with), method = "pearson")),
  194. .names = "{.col}_{compare_with}_result"
  195. )) %>%
  196. pivot_longer(
  197. cols = everything(),
  198. names_to = c("variable", ".value"),
  199. names_pattern = "(.*)_(.*)_result"
  200. )
  201. }
  202. #### MASS CORRELATE! ####
  203. for(selected_sex in list(0, 1, c(0, 1))){# 0 = male, 1 = female
  204. ##### correct for age ####
  205. gad_confounds <-c("age", "phq")#c("age", "phq", "panic_cat", "trauma")
  206. panic_confounds <-c("age", "phq")#c("age", "phq", "gad_cat", "trauma")
  207. if(is.null(gad_confounds)){
  208. df_cleaned_gad <- df %>% filter(female_sex %in% selected_sex)
  209. } else {
  210. vars_to_clean <- intersect(colnames(df), atlas_vars)
  211. confound_coefs_train_gad <- get_confound_coefs(data = df, vars_to_clean = vars_to_clean, confounds = gad_confounds)
  212. na_cols <- apply(confound_coefs_train_gad, 2, function(x) any(is.na(x)))
  213. confound_coefs_train_gad[na_cols] <- 0
  214. df_cleaned_gad <- remove_confounds(df %>% filter(female_sex %in% selected_sex), confound_coefs_train_gad, gad_confounds, vars_to_clean)
  215. }
  216. if(is.null(panic_confounds)){
  217. df_cleaned_panic <- df %>% filter(female_sex %in% selected_sex)
  218. } else {
  219. vars_to_clean <- intersect(colnames(df), atlas_vars)
  220. confound_coefs_train_panic <- get_confound_coefs(data = df, vars_to_clean = vars_to_clean, confounds = panic_confounds)
  221. na_cols <- apply(confound_coefs_train_panic, 2, function(x) any(is.na(x)))
  222. confound_coefs_train_panic[na_cols] <- 0
  223. df_cleaned_panic <- remove_confounds(df %>% filter(female_sex %in% selected_sex), confound_coefs_train_panic, panic_confounds, vars_to_clean)
  224. }
  225. ##### Calculating correlations for 'panic' and 'gad' ####
  226. df_num_gad <- df_cleaned_gad %>% mutate(across(everything(), as.numeric)) %>%
  227. select(-phq,
  228. -phq_cat,
  229. -phq_stress,
  230. -trauma,
  231. -female_sex,
  232. -rauch_life,
  233. -age,
  234. -site,
  235. -ID,
  236. -tiv) %>%
  237. mutate(gad_cat = gad_cat - 1) %>%
  238. identity()
  239. df_num_panic <- df_cleaned_panic %>% mutate(across(everything(), as.numeric)) %>%
  240. #filter(female_sex == 1) %>%
  241. select(-phq,
  242. -phq_cat,
  243. -phq_stress,
  244. -trauma,
  245. -female_sex,
  246. -rauch_life,
  247. -age,
  248. -site,
  249. -ID,
  250. -tiv) %>%
  251. mutate(panic_cat = panic_cat - 1) %>%
  252. identity()
  253. results_panic <- df_num_panic %>% select(-gad, -gad_panic_cat, -gad_cat) %>%
  254. perform_correlation(., "panic_cat") %>% unnest %>%
  255. mutate(variable = gsub("_panic", "", variable))
  256. results_gad <- df_num_gad %>%
  257. select(-panic_cat, -gad_panic_cat, -gad) %>%
  258. perform_correlation(., "gad_cat") %>% unnest %>%
  259. mutate(variable = gsub("_gad", "", variable))
  260. ##### Combining results ####
  261. final_results <- results_panic %>%
  262. rename(panic_r = estimate,
  263. panic_p = p.value) %>%
  264. full_join(results_gad %>%
  265. select(variable, gad_r = estimate, gad_p = p.value),
  266. ) %>%
  267. select(
  268. variable,
  269. panic_r,
  270. panic_p,
  271. gad_r,
  272. gad_p
  273. )
  274. # rename final results variables
  275. cor_df <- final_results %>%
  276. left_join(code_book %>% select(Name, Label), by = c("variable" = "Name")) %>%
  277. select(variable, Label, panic_r, panic_p, gad_r, gad_p) %>%
  278. mutate(gad_p_adj = gad_p*sum(!is.na(gad_p)),
  279. panic_p_adj = panic_p*sum(!is.na(panic_p))) %>%
  280. rowwise %>%
  281. mutate(gad_p_adj = min(1, gad_p_adj),
  282. panic_p_adj = min(1, panic_p_adj)) %>%
  283. ungroup %>%
  284. rstatix::add_significance(p.col = "gad_p_adj", output.col = "gad_sig") %>%
  285. rstatix::add_significance(p.col = "panic_p_adj", output.col = "panic_sig")
  286. cor_df_panic <- cor_df %>% select(-starts_with("gad")) %>%
  287. arrange(-abs(panic_r))
  288. cor_df_gad <- cor_df %>% select(-starts_with("panic")) %>%
  289. arrange(-abs(gad_r))
  290. sex_name <- ifelse(all(selected_sex == 1), "_female", ifelse(all(selected_sex == 0), "_male", ""))
  291. openxlsx::write.xlsx(cor_df_panic, paste0("data/output/panic_correlations", sex_name, ".xlsx"))
  292. openxlsx::write.xlsx(cor_df_gad, paste0("data/output/gad_correlations", sex_name, ".xlsx"))
  293. }
  294. #### combine genders ####
  295. file_extension_gad <- ifelse(is.null(gad_confounds), "uncorrected", paste0(c(gad_confounds, "corrected"), sep="", collapse = "_"))
  296. file_extension_panic <- ifelse(is.null(panic_confounds), "uncorrected", paste0(c(panic_confounds, "corrected"), sep="", collapse = "_"))
  297. panic_cor <- openxlsx::read.xlsx("data/output/panic_correlations.xlsx")
  298. panic_cor_female <- openxlsx::read.xlsx("data/output/panic_correlations_female.xlsx")
  299. panic_cor_male <- openxlsx::read.xlsx("data/output/panic_correlations_male.xlsx")
  300. panic_cor_all <- panic_cor %>% left_join(panic_cor_female, by = c("variable", "Label"),
  301. suffix=c("_all", "_female")) %>%
  302. left_join(panic_cor_male, by = c("variable", "Label")) %>%
  303. rename(panic_r_male = panic_r,
  304. panic_p_male = panic_p,
  305. panic_p_adj_male = panic_p_adj,
  306. panic_sig_male = panic_sig) %>%
  307. distinct() %>%
  308. arrange(Label)
  309. openxlsx::write.xlsx(panic_cor_all, here(paste0("data/output/panic_correlations_all_", file_extension_panic, ".xlsx")))
  310. gad_cor <- openxlsx::read.xlsx("data/output/gad_correlations.xlsx")
  311. gad_cor_female <- openxlsx::read.xlsx("data/output/gad_correlations_female.xlsx")
  312. gad_cor_male <- openxlsx::read.xlsx("data/output/gad_correlations_male.xlsx")
  313. gad_cor_all <- gad_cor %>% left_join(gad_cor_female, by = c("variable", "Label"),
  314. suffix=c("_all", "_female")) %>%
  315. left_join(gad_cor_male, by = c("variable", "Label")) %>%
  316. rename(gad_r_male = gad_r,
  317. gad_p_male = gad_p,
  318. gad_p_adj_male = gad_p_adj,
  319. gad_sig_male = gad_sig) %>%
  320. distinct() %>%
  321. arrange(Label)
  322. ##### save all #####
  323. openxlsx::write.xlsx(gad_cor_all, here(paste0("data/output/gad_correlations_all_", file_extension_gad, ".xlsx")))
  324. #### descriptives ####
  325. df_clean <- na.omit(df)
  326. table(df_clean$female_sex) %>% prop.table()
  327. df_clean %>% select(female_sex, age, gad, panic_cat) %>% psych::describe()
  328. prop.table(table(df_clean$gad>10 ))
  329. prop.table(table(df_clean$panic_cat ))
  330. # Load necessary packages
  331. library(crosstable)
  332. df_ct <- df_raw %>% select(ID, sex = basis_sex, age = basis_age,
  333. gad = a_emo_gad7_sum,
  334. gad_cat = a_emo_gad7_cut10,
  335. tiv = ma_n_cortexvol, site = basis_uort,
  336. trauma = a_emo_cts_sum,
  337. a_emo_cts_1_kat,
  338. a_emo_cts_2_kat,
  339. a_emo_cts_3_kat,
  340. a_emo_cts_4_kat,
  341. a_emo_cts_5_kat,
  342. all_of(atlas_vars),
  343. #all_of(juelich),
  344. phq = a_emo_phq9_sum,
  345. phq_cat =a_emo_phq9_cut10,
  346. phq_stress = a_emo_phq_stress,
  347. #panic_cat = a_emo_phq_panik, # phqp_full
  348. d_phqp1_1,
  349. d_phqp1_2,
  350. rauch_life = a_smok_past_cig_d,
  351. d_an_neu_6
  352. ) %>%
  353. mutate(female_sex =sex - 1) %>% select(-sex) %>%
  354. mutate(across(everything(), as.numeric)) %>%
  355. mutate(across(everything(),function(x) na_if(x, 7777))) %>%
  356. mutate(rauch_life = case_when(rauch_life == 7775 ~ 0,
  357. T ~ rauch_life)) %>%
  358. mutate(panic_cat = case_when(
  359. is.na(d_phqp1_2) | d_phqp1_1 == 2 ~ 0,
  360. d_phqp1_2 == 1 ~ 1)) %>%
  361. mutate(site = factor(site)) %>%
  362. mutate(gad_cat = factor(gad_cat, labels = c("healthy", "anxious")),
  363. phq_cat = factor(phq_cat, labels = c("healthy", "depressed")),
  364. panic_cat = factor(panic_cat, labels = c("healthy", "panic")),
  365. # panic_cat = factor(
  366. # case_when(
  367. # d_an_neu_6 == 1 ~ "panic",
  368. # d_an_neu_6 == 2 ~ "healthy",
  369. # TRUE ~ NA_character_
  370. # ))
  371. ) %>%
  372. select(-d_an_neu_6) %>%
  373. select(-d_phqp1_1, -d_phqp1_2) %>%
  374. mutate(gad_panic_cat = factor(as.numeric(gad_cat == "anxious" & panic_cat =="panic"),
  375. labels = c("healthy", "comorbid"))) %>%
  376. mutate(sex = factor(female_sex, levels = c(0, 1), labels = c("Men", "Women"))) %>%
  377. mutate(panic_cat = factor(panic_cat, labels = c("no", "yes")))
  378. df_ct <-na.omit(df_ct)
  379. # Assume your data frame is named df and has the columns: female_sex, age, gad, and panic
  380. # Create age groups
  381. df_clean<- df_clean %>%
  382. mutate(age_group = factor(case_when(
  383. age >= 19 & age <= 40 ~ "<40 years",
  384. age >= 41 & age <= 60 ~ "40-60 years",
  385. age >= 61 ~ ">60 years"
  386. ), levels = c("<40 years", "40-60 years", ">60 years")))
  387. # Create a new column for sex as a factor
  388. df_clean <- df_clean %>%
  389. mutate(sex = factor(female_sex, levels = c(0, 1), labels = c("Men", "Women"))) %>%
  390. mutate(panic_cat = factor(panic_cat, labels = c("no", "yes")))
  391. df_ct <- df_ct %>% mutate(across(starts_with("a_emo_cts"), ~ factor(.x, labels = c("no", "yes")))) %>%
  392. mutate(age_group =
  393. cut(age,
  394. breaks =c(18,29, 39, 49, 59,
  395. max(df$age)),
  396. labels = c("18-29", "30-39", "40-49", "50-59", "60-74")),
  397. n = factor("n"))
  398. # sex differences
  399. doc <- read_docx()
  400. (demo_table <- df_ct %>%
  401. arrange(sex) %>%
  402. crosstable(
  403. cols = c(
  404. "Number of Participants" = n,
  405. "Age" = age,
  406. " " = age_group,
  407. "GAD-7" = gad,
  408. "GAD-7 ≥ 10" = gad_cat,
  409. "Lifetime Panic Attacks" = panic_cat,
  410. "Lifetime Cigarettes" = rauch_life,
  411. "Depressive Symptoms (PHQ-9)" = phq,
  412. "Stress" = phq_stress,
  413. "Childhood Trauma Sum Score (CT-S)" = trauma,
  414. # "Emotional neglect" = a_emo_cts_1_kat,
  415. # "Physical abuse" = a_emo_cts_2_kat,
  416. # "Emotional abuse" = a_emo_cts_3_kat,
  417. # "Sexual abuse" = a_emo_cts_4_kat,
  418. # "Physical neglect" = a_emo_cts_5_kat,
  419. ),
  420. by = c(sex),
  421. showNA = "ifany",
  422. funs = list("mean (SD)" = meansd),
  423. test = F,
  424. test_args = crosstable_test_args(show_method = F, plim = 3),
  425. percent_pattern = "{n} \n ({p_col})",
  426. percent_digits = 1,
  427. total = "row")%>%
  428. mutate(variable = ifelse(variable == "NA", "Missing", variable)) %>%
  429. as_flextable(remove_header_keys = T)
  430. )
  431. doc <- body_add_flextable(doc, value = demo_table)
  432. print(doc, target = here("results/demo_table.docx"))
  433. gad_pa_doc <- read_docx()
  434. # gad & PA comparison
  435. (gad_ct <- df_ct %>%
  436. arrange(gad_cat) %>%
  437. crosstable(
  438. cols = c(
  439. "Number of Participants" = n,
  440. "Sex" = sex,
  441. "Age" = age,
  442. " " = age_group,
  443. "GAD-7" = gad,
  444. "GAD-7 ≥ 10" = gad_cat,
  445. "Lifetime Panic Attacks" = panic_cat,
  446. "Lifetime Cigarettes" = rauch_life,
  447. "Depressive Symptoms (PHQ-9)" = phq,
  448. "Stress" = phq_stress,
  449. "Childhood Trauma Sum Score (CT-S)" = trauma,
  450. # "Emotional neglect" = a_emo_cts_1_kat,
  451. # "Physical abuse" = a_emo_cts_2_kat,
  452. # "Emotional abuse" = a_emo_cts_3_kat,
  453. # "Sexual abuse" = a_emo_cts_4_kat,
  454. # "Physical neglect" = a_emo_cts_5_kat,
  455. ),
  456. by = c(gad_cat),
  457. showNA = "ifany",
  458. funs = list("mean (SD)" = meansd),
  459. test = F,
  460. test_args = crosstable_test_args(show_method = F, plim = 3),
  461. percent_pattern = "{n} \n ({p_col})",
  462. percent_digits = 1,
  463. total = "row")%>%
  464. mutate(variable = ifelse(variable == "NA", "Missing", variable)) %>%
  465. as_flextable(remove_header_keys = T)
  466. )
  467. gad_pa_doc <- body_add_flextable(gad_pa_doc, value = gad_ct)
  468. print(gad_pa_doc, target = here("results/gad_pa_table.docx"))
  469. # panic comparison
  470. (pa_ct <- df_ct %>%
  471. arrange(panic_cat) %>%
  472. crosstable(
  473. cols = c(
  474. "Number of Participants" = n,
  475. "Sex" = sex,
  476. "Age" = age,
  477. " " = age_group,
  478. "GAD-7" = gad,
  479. "GAD-7 ≥ 10" = gad_cat,
  480. "Lifetime Panic Attacks" = panic_cat,
  481. "Lifetime Cigarettes" = rauch_life,
  482. "Depressive Symptoms (PHQ-9)" = phq,
  483. "Stress" = phq_stress,
  484. "Childhood Trauma Sum Score (CT-S)" = trauma,
  485. # "Emotional neglect" = a_emo_cts_1_kat,
  486. # "Physical abuse" = a_emo_cts_2_kat,
  487. # "Emotional abuse" = a_emo_cts_3_kat,
  488. # "Sexual abuse" = a_emo_cts_4_kat,
  489. # "Physical neglect" = a_emo_cts_5_kat,
  490. ),
  491. by = c(panic_cat),
  492. showNA = "ifany",
  493. funs = list("mean (SD)" = meansd),
  494. test = F,
  495. test_args = crosstable_test_args(show_method = F, plim = 3),
  496. percent_pattern = "{n} \n ({p_col})",
  497. percent_digits = 1,
  498. total = "row")%>%
  499. mutate(variable = ifelse(variable == "NA", "Missing", variable)) %>%
  500. as_flextable(remove_header_keys = T)
  501. )
  502. gad_pa_doc <- body_add_flextable(gad_pa_doc, value = pa_ct)
  503. print(gad_pa_doc, target = here("results/gad_pa_table.docx"))
  504. # Calculate summary statistics
  505. summary_table <- df_clean %>%
  506. group_by(sex, age_group) %>%
  507. summarise(
  508. Age = mean(age, na.rm = TRUE),
  509. GAD_Mean = mean(gad, na.rm = TRUE),
  510. Panic_Attacks_Percent = mean(panic_cat, na.rm = TRUE) * 100,
  511. .groups = 'drop'
  512. ) %>%
  513. ungroup() %>%
  514. mutate(age_group = factor(age_group, levels = c("<40 years", "40-60 years", ">60 years"))) %>%
  515. pivot_wider(names_from = age_group, values_from = c(Age, GAD_Mean, Panic_Attacks_Percent)) %>%
  516. adorn_totals("row") %>%
  517. adorn_totals("col", name = "Complete Sample")
  518. # Print the summary table
  519. print(summary_table)
  520. #### simpsons paradox? ####
  521. #ma_n_l_morbfron_vo
  522. df_plot <- df_cleaned_gad %>% mutate(across(everything(), as.numeric)) %>%
  523. select(-phq,
  524. -phq_cat,
  525. -phq_stress,
  526. -trauma,
  527. -rauch_life,
  528. -age,
  529. -site,
  530. -ID,
  531. -tiv) %>%
  532. mutate(gad_cat = gad_cat - 1) %>%
  533. identity()
  534. p <- ggplot(df_plot %>% mutate(female_sex = as.factor(female_sex)), aes(x = ma_n_l_morbfron_vo, y = gad_cat,
  535. fill = female_sex, color = female_sex)) +
  536. geom_jitter(height = 0.1, alpha=.3, size = .3) +
  537. geom_smooth(method = "lm") +
  538. geom_smooth(method = "lm", aes(group = 1, color = "all", fill = "all")) +
  539. theme_bw() +
  540. scale_fill_discrete(name = "Sex", labels = c("male", "female", "all")) +
  541. scale_color_discrete(name = "Sex", labels = c("male", "female", "all")) +
  542. labs(x = "Gray matter volume of the left medial orbitofrontal cortex", y = "GAD-7 (cat, jittered)")+
  543. NULL
  544. p
  545. ggsave(here("plots/simpsons_paradoxon.png"), p)
  546. gad_fem <- df_plot$gad_cat[df$female_sex == 1]
  547. vol_fem <- df_plot$ma_n_ldmn_a_pfcd1[df$female_sex == 1]
  548. cor(gad_fem, vol_fem, use = "complete.obs")
  549. gad_mal <- df_plot$gad_cat[df$female_sex == 0]
  550. vol_mal <- df_plot$ma_n_ldmn_a_pfcd1[df$female_sex == 0]
  551. cor(gad_mal, vol_mal, use = "complete.obs")
  552. cor(df_plot$gad_cat, df_plot$ma_n_ldmn_a_pfcd1, use = "complete.obs")
  553. #ma_n_r_insula_vo
  554. gad_cor_female %>% filter(variable == "ma_n_ldmn_a_pfcd1")
  555. cor_mat = matrix(c(1, -0.3, -0.3, 1), nrow = 2)
  556. outcome <- as.data.frame(MASS::mvrnorm(100, mu = c("a" = 0, "b" =1),
  557. Sigma = cor_mat))
  558. outcome$gender <- "female"
  559. outcome_2 <- as.data.frame(MASS::mvrnorm(100, mu = c("a" = 2, "b" =3),
  560. Sigma = cor_mat))
  561. outcome_2$gender <- "male"
  562. df <- rbind(outcome, outcome_2)
  563. library(tidyverse)
  564. df %>% ggplot(aes(x = a, y = b, color = gender)) + geom_point()+geom_smooth(method = "lm") +
  565. geom_smooth(method = "lm", aes(group = 1, color = "Total"))

correlations_and_descriptives.R, no license · at the source

Overview

Authors: Julian Gutzeit1,2, Martin Weiß1,3, Tierney Kuhn1, Johanna Klinger-König4, Fabian Streit5,6,7,8, Christiane Jockwitz9,10, Berit Brandes11, Marvin N Wright11,12,13, Christoph M Friedrich14,15, Margarethe Woeckel16,17, Rafael Mikolajczyk18,19,20, Thomas Keil21,22,23, Stefanie Castell24, Philine Betker24, Christopher L Schlett25, Till W Bärnighausen26,27,28, Fabian Bamberg25, Matthias Günther29, Jochen G Hirsch29, Tobias Pischon30,31,32
and 13 other authorsThoralf Niendorf33, Michael F Leitzmann34, Patricia Bohmann34,35, Kerstin Wirkner36, Lilian Krist21, Yanding Wang16,37, Klaus Berger38, Sebastian Walther1, Hans J Grabe4,39, Jürgen Deckert1,22, Svenja Caspers9,10, Grit Hein1, Angelika Erhardt-Lehmann1,40
40 affiliations
  1. Department of Psychiatry, Psychosomatic and Psychotherapy, Center of Mental Health, University Hospital Würzburg, Würzburg, Germany
  2. Department of Psychology III, University of Würzburg, Würzburg, Germany
  3. Department of Psychology I, University of Würzburg, Würzburg, Germany
  4. Department of Psychiatry and Psychotherapy, University Medicine Greifswald, Greifswald, Germany
  5. Department of Genetic Epidemiology in Psychiatry, Central Institute of Mental Health, University of Heidelberg, Medical Faculty Mannheim, Mannheim, Germany
  6. Department of Psychiatry and Psychotherapy, Central Institute of Mental Health, Medical Faculty Mannheim, University of Heidelberg, Mannheim, Germany
  7. Hector Institute for Artificial Intelligence in Psychiatry, Central Institute of Mental Health, Medical Faculty Mannheim, University of Heidelberg, Mannheim, Germany
  8. German Center for Mental Health (DZPG), Partner Site Mannheim, Heidelberg - Ulm, Germany
  9. Institute for Anatomy I, Medical Faculty & Hospital Düsseldorf, Heinrich-Heine-University, Düsseldorf, Germany
  10. Institute of Neuroscience and Medicine (INM-1), Research Centre Jülich, Jülich, Germany
  11. Leibniz Institute for Prevention Research and Epidemiology—BIPS, Bremen, Germany
  12. Faculty of Mathematics and Computer Science, University of Bremen, Bremen, Germany
  13. Department of Public Health, University of Copenhagen, Copenhagen, Denmark
  14. University Hospital Essen, Institute for Medical Informatics, Biometry and Epidemiology (IMIBE), Essen, Germany
  15. University of Applied Sciences and Arts Dortmund (FH Dortmund), Department of Computer Science, Dortmund, Germany
  16. Institute of Epidemiology, Helmholtz Zentrum München, German Research Center for Environmental Health (GmbH), Neuherberg, Germany
  17. Department of Psychiatry and Psychotherapy, LMU University Hospital, LMU Munich, Munich, Germany
  18. Institute of Medical Epidemiology, Biometrics and Informatics, Medical Faculty of the Martin-Luther University Halle-Wittenberg, Halle, Wittenberg, Germany
  19. German Center for Mental Health (DZPG), Site Halle-Jena-Magdeburg, Halle (Saale), Germany
  20. Center for Intervention and Research on adaptive and maladaptive brain - Circuits underlying mental health (C-I-R-C), Halle-Jena-Magdeburg, Halle (Saale), Germany
  21. Institute of Social Medicine, Epidemiology and Health Economics, Charité-Universitätsmedizin Berlin, Berlin, Germany
  22. Institute of Clinical Epidemiology and Biometry, University of Würzburg, Würzburg, Germany
  23. State Institute of Health I, Bavarian Health and Food Safety Authority, Erlangen, Germany
  24. Department for Epidemiology, Helmholtz Centre for Infection Research (HZI), Brunswick, Germany
  25. Department of Diagnostic and Interventional Radiology, Medical Center–University of Freiburg, Faculty of Medicine, University of Freiburg, Freiburg, Germany
  26. Heidelberg Institute of Global Health (HIGH), Medical Faculty and University Hospital, Heidelberg University, Heidelberg, Germany
  27. Department of Global Health and Population, Harvard T.H. Chan School of Public Health, Harvard University, Boston, USA
  28. Africa Health Research Institute (AHRI), Somkhele and Durban, Durban, South Africa
  29. Fraunhofer Institute for Digital Medicine MEVIS, Bremen, Germany
  30. Max-Delbrück-Center for Molecular Medicine in the Helmholtz Association (MDC), Molecular Epidemiology Research Group, Berlin, Germany
  31. Max-Delbrück-Center for Molecular Medicine in the Helmholtz Association (MDC) Biobank Technology Platform, Berlin, Germany
  32. Charité – Universitätsmedizin Berlin, corporate member of Freie Universität Berlin and Humboldt-Universität zu Berlin, Berlin, Germany
  33. Berlin Ultrahigh Field Facility (B.U.F.F.), Max Delbrück Center for Molecular Medicine in the Helmholtz Association, Berlin, Germany
  34. Institute for Epidemiology and Preventive Medicine, University of Regensburg, Regensburg, Germany
  35. Department of Neurology, medbo District Hospital and University Hospital of Regensburg, Regensburg, Germany
  36. Leipzig Research Centre for Civilization Diseases, Leipzig University, Leipzig, Germany
  37. Institute for Medical Information Processing, Biometry, and Epidemiology (IBE), Faculty of Medicine, LMU Munich, Pettenkofer School of Public Health, Munich, Germany
  38. Institute of Epidemiology and Social Medicine, University of Münster, Münster, Germany
  39. German Centre for Neurodegenerative Diseases (DZNE), Site Rostock/Greifswald, Greifswald, Germany
  40. Max Planck Institute of Psychiatry, Munich, Germany
Institutions: University of Würzburg (Germany); Universitätsklinikum Würzburg (Germany); Universitätsmedizin Greifswald (Germany); Universität Greifswald (Germany); Heidelberg University (Germany); Central Institute of Mental Health (Germany); Medizinische Fakultät Mannheim; Deutsches Zentrum für Psychische Gesundheit (Germany); Forschungszentrum Jülich (Germany); Düsseldorf University Hospital (Germany); Heinrich Heine University Düsseldorf (Germany); Leibniz Institute for Prevention Research and Epidemiology - BIPS (Germany); University of Copenhagen (Denmark); University of Bremen (Germany); Dortmund University of Applied Sciences and Arts (Germany); Institut für Medizinische Informatik, Biometrie und Epidemiologie (Germany); Essen University Hospital (Germany); Helmholtz Munich (Germany); LMU Klinikum (Germany); Ludwig-Maximilians-Universität München (Germany); Martin Luther University Halle-Wittenberg (Germany); Bayerisches Landesamt für Gesundheit und Lebensmittelsicherheit (Germany); Charité - Universitätsmedizin Berlin (Germany); Helmholtz Centre for Infection Research (Germany); University of Freiburg (Germany); University Medical Center Freiburg (Germany); Harvard University (United States); University Hospital Heidelberg (Germany); Africa Health Research Institute (South Africa); Heidelberg Institute of Global Health (Germany); Fraunhofer Institute for Digital Medicine (Germany); Max Delbrück Center (Germany); Humboldt-Universität zu Berlin (Germany); Freie Universität Berlin (Germany); University of Regensburg (Germany); University Hospital Regensburg (Germany); Leipzig University (Germany); Institut für Medizinische Informationsverarbeitung, Biometrie und Epidemiologie (Germany); University of Münster (Germany); German Center for Neurodegenerative Diseases (Germany); Max Planck Institute of Psychiatry (Germany)
Journal: Translational psychiatry, volume 16, issue 1, article 287
Dates: received 2 October 2025; accepted 19 May 2026; published online 28 May 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1038/s41398-026-04131-1 · PMID 42209472 · PMCID PMC13219414 · OpenAlex W4413990354
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: structural MRI / diffusion (modality), human (organism), other condition (population), clinical / translational (subfield)
Methods: Connectivity, Machine learning, Statistics, Preprocessing, fMRI & imaging
Keywords: Diagnostic markers, Neuroscience, Psychology
MeSH: Anxiety Disorders*, Brain*, Generalized Anxiety Disorder*, Machine Learning*, Magnetic Resonance Imaging*, Panic Disorder*, Adult, Classification Algorithms, Cohort Studies, Female, Germany, Humans, Male, Middle Aged, Neuroimaging, Phenotype (* major topic)
Topic: Anxiety, Depression, Psychometrics, Treatment, Cognitive Processes (Experimental and Cognitive Psychology, Psychology), according to OpenAlex
Funding: Bundesministerium für Bildung und Forschung (01ER1511D, 01ER2301A, 01ER2301 A/B/C, 01ER1301A / B / C, 01ER1801A/B/C/D, 01ER1301A, 01ER1801A, 01EE2303E); Siemens Healthineers; Servier; Neuraxpharm; Hector Stiftung; Hector Stiftung II; Leibniz-Gemeinschaft; Cilag
Citations: not cited yet (Europe PMC); 97 references in the paper

Abstract

Anxiety disorders are common and impairing mental health conditions. Using data from 26,378 adults in the German National Cohort Study (NAKO), we investigated psychosocial and neuroimaging predictors of generalized anxiety disorder (GAD) symptoms and panic attacks. We conducted machine-learning analyses of 246 regions of interest from whole-brain imaging data in combination with psychosocial variables. Neuroimaging data alone showed suboptimal classification performance, whereas psychosocial variables alone - particularly depressive symptoms, stress, and childhood trauma - achieved the strongest discrimination for GAD symptoms and panic attacks. Adding neuroimaging features to psychosocial models modestly improved unbalanced accuracy and specificity by reducing false-positive classifications, indicating a conditional and complementary contribution of neuroanatomical information. Within the multivariate models, features from anxiety-related circuits, including the amygdala and superior parietal lobule, were consistently selected. Overall, these findings suggest that psychosocial factors dominate classification of anxiety outcomes, while structural MRI measures may provide complementary information within multimodal frameworks aimed at refining classification and supporting the development of individualized risk profiles to guide tailored therapeutic and preventive strategies.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 3 matches between paragraphs and lines of code.

OSF wt9yf

License: none: the authors keep all their rights
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Languages: R (6)
Size: 15 files, 6 scripts
Software Heritage: not checked
Found in: “Code availability”
Holds: README
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: tidyverse (6 files), caret (5 files), data.table (5 files), ggplot2 (5 files), psych (4 files), car (2 files), pROC (2 files), broom (1 file), rstatix (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers (HTTP 200)
  • 28 September 2026: the link answers (HTTP 200)
7 files
At the source: osf.io/wt9yf/overview

Code availability

Analysis code is available at https://osf.io/wt9yf/ (https://osf.io/wt9yf/overview).

Reproduced under the paper's license (CC BY), from the paper cited above.

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 6 scripts, each with its path and the digest of its content;
  • 3 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Data availability

The data that support the findings of this study are part of the German National Cohort (NAKO Gesundheitsstudie). NAKO data are subject to the EU / EEA General Data Protection Regulation and to the NAKO Terms of Use. They can therefore not be deposited in a public repository. Qualified researchers affiliated to EU or EEA institutions may apply for access through the NAKO TransferHub (https://transfer.nako.de). Applications are evaluated by the NAKO Use & Access Committee; successful applicants must sign a Data-Use Agreement and cover associated handling fees.

Reproduced under the paper's license (CC BY), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 2, 28 September 2026

  • Funding: added Bundesministerium für Bildung und Forschung: 01ER1511D, 01ER2301A, 01ER2301 A/B/C, 01ER1301A / B / C, 01ER1801A/B/C/D, 01ER1301A, 01ER1801A, 01EE2303E; Siemens Healthineers; Servier; Neuraxpharm; Hector Stiftung; Hector Stiftung II; Leibniz-Gemeinschaft; Cilag

Version 1, 28 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 33 authors, 3 keywords, 16 MeSH terms, 86 references.

Cite

This paper

Gutzeit, J., Weiß, M., Kuhn, T., Klinger-König, J., Streit, F., Jockwitz, C., Brandes, B., Wright, M. N., Friedrich, C. M., Woeckel, M., Mikolajczyk, R., Keil, T., Castell, S., Betker, P., Schlett, C. L., Bärnighausen, T. W., Bamberg, F., Günther, M., Hirsch, J. G., . . . Erhardt-Lehmann, A. (2026). Multimodal phenotypic classification of generalized anxiety and panic using structural MRI data and psychosocial factors: machine learning results from the German National Cohort (NAKO) study. Translational psychiatry, 16(1), 287. https://doi.org/10.1038/s41398-026-04131-1

BibTeX

@article{gutzeit2026multimodal,
author = {Gutzeit, Julian and Weiß, Martin and Kuhn, Tierney and Klinger-König, Johanna and Streit, Fabian and Jockwitz, Christiane and Brandes, Berit and Wright, Marvin N and Friedrich, Christoph M and Woeckel, Margarethe and Mikolajczyk, Rafael and Keil, Thomas and Castell, Stefanie and Betker, Philine and Schlett, Christopher L and Bärnighausen, Till W and Bamberg, Fabian and Günther, Matthias and Hirsch, Jochen G and Pischon, Tobias and Niendorf, Thoralf and Leitzmann, Michael F and Bohmann, Patricia and Wirkner, Kerstin and Krist, Lilian and Wang, Yanding and Berger, Klaus and Walther, Sebastian and Grabe, Hans J and Deckert, Jürgen and Caspers, Svenja and Hein, Grit and Erhardt-Lehmann, Angelika},
title = {{Multimodal phenotypic classification of generalized anxiety and panic using structural MRI data and psychosocial factors: machine learning results from the German National Cohort (NAKO) study}},
journal = {Translational psychiatry},
year = {2026},
month = may,
volume = {16},
number = {1},
pages = {287},
publisher = {Nature Publishing Group},
issn = {2158-3188},
doi = {10.1038/s41398-026-04131-1},
url = {https://doi.org/10.1038/s41398-026-04131-1},
pmid = {42209472},
pmcid = {PMC13219414}
}

RIS

TY - JOUR
AU - Gutzeit, Julian
AU - Weiß, Martin
AU - Kuhn, Tierney
AU - Klinger-König, Johanna
AU - Streit, Fabian
AU - Jockwitz, Christiane
AU - Brandes, Berit
AU - Wright, Marvin N
AU - Friedrich, Christoph M
AU - Woeckel, Margarethe
AU - Mikolajczyk, Rafael
AU - Keil, Thomas
AU - Castell, Stefanie
AU - Betker, Philine
AU - Schlett, Christopher L
AU - Bärnighausen, Till W
AU - Bamberg, Fabian
AU - Günther, Matthias
AU - Hirsch, Jochen G
AU - Pischon, Tobias
AU - Niendorf, Thoralf
AU - Leitzmann, Michael F
AU - Bohmann, Patricia
AU - Wirkner, Kerstin
AU - Krist, Lilian
AU - Wang, Yanding
AU - Berger, Klaus
AU - Walther, Sebastian
AU - Grabe, Hans J
AU - Deckert, Jürgen
AU - Caspers, Svenja
AU - Hein, Grit
AU - Erhardt-Lehmann, Angelika
TI - Multimodal phenotypic classification of generalized anxiety and panic using structural MRI data and psychosocial factors: machine learning results from the German National Cohort (NAKO) study
T2 - Translational psychiatry
J2 - Transl Psychiatry
PY - 2026
DA - 2026/05/28
VL - 16
IS - 1
SP - 287
SN - 2158-3188
PB - Nature Publishing Group
DO - 10.1038/s41398-026-04131-1
UR - https://doi.org/10.1038/s41398-026-04131-1
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s41398-026-04131-1",
"type": "article-journal",
"title": "Multimodal phenotypic classification of generalized anxiety and panic using structural MRI data and psychosocial factors: machine learning results from the German National Cohort (NAKO) study",
"container-title": "Translational psychiatry",
"author": [
{
"family": "Gutzeit",
"given": "Julian"
},
{
"family": "Weiß",
"given": "Martin"
},
{
"family": "Kuhn",
"given": "Tierney"
},
{
"family": "Klinger-König",
"given": "Johanna"
},
{
"family": "Streit",
"given": "Fabian"
},
{
"family": "Jockwitz",
"given": "Christiane"
},
{
"family": "Brandes",
"given": "Berit"
},
{
"family": "Wright",
"given": "Marvin N"
},
{
"family": "Friedrich",
"given": "Christoph M"
},
{
"family": "Woeckel",
"given": "Margarethe"
},
{
"family": "Mikolajczyk",
"given": "Rafael"
},
{
"family": "Keil",
"given": "Thomas"
},
{
"family": "Castell",
"given": "Stefanie"
},
{
"family": "Betker",
"given": "Philine"
},
{
"family": "Schlett",
"given": "Christopher L"
},
{
"family": "Bärnighausen",
"given": "Till W"
},
{
"family": "Bamberg",
"given": "Fabian"
},
{
"family": "Günther",
"given": "Matthias"
},
{
"family": "Hirsch",
"given": "Jochen G"
},
{
"family": "Pischon",
"given": "Tobias"
},
{
"family": "Niendorf",
"given": "Thoralf"
},
{
"family": "Leitzmann",
"given": "Michael F"
},
{
"family": "Bohmann",
"given": "Patricia"
},
{
"family": "Wirkner",
"given": "Kerstin"
},
{
"family": "Krist",
"given": "Lilian"
},
{
"family": "Wang",
"given": "Yanding"
},
{
"family": "Berger",
"given": "Klaus"
},
{
"family": "Walther",
"given": "Sebastian"
},
{
"family": "Grabe",
"given": "Hans J"
},
{
"family": "Deckert",
"given": "Jürgen"
},
{
"family": "Caspers",
"given": "Svenja"
},
{
"family": "Hein",
"given": "Grit"
},
{
"family": "Erhardt-Lehmann",
"given": "Angelika"
}
],
"container-title-short": "Transl Psychiatry",
"volume": "16",
"issue": "1",
"page": "287",
"DOI": "10.1038/s41398-026-04131-1",
"PMID": "42209472",
"PMCID": "PMC13219414",
"ISSN": "2158-3188",
"publisher": "Nature Publishing Group",
"URL": "https://doi.org/10.1038/s41398-026-04131-1",
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
28
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1038/s41380-026-03691-4 [code]
Breaking the norm: population-scale deviations of brain structure in depression and anxiety.
Journal: Molecular psychiatry
In common: structural MRI / diffusion, clinical / translational, other condition, 2 references, 4 authors
[2] doi:10.1126/sciadv.aec9291 [code]
Computational mechanisms of perception in autism revealed using games inspired by rodent operant tasks.
Journal: Science advances
In common: pROC, caret, psych, 6 other tools
[3] doi:10.1093/braincomms/fcag146 [code]
Convergent structural brain alterations in chronic pain: a multi-metric individual participant data meta-analysis.
Journal: Brain communications
In common: pROC, caret, psych, 5 other tools, structural MRI / diffusion
[4] doi:10.1038/s43856-026-01722-3 [code]
Local and global patterns support medical imaging as a biomarker of ageing.
Journal: Communications medicine
In common: clinical / translational, 1 reference, 2 authors
[5] doi:10.1038/s41562-026-02476-7 [code]
Genome-wide meta-analysis of quantitatively measured generalized anxiety symptoms in individuals of European ancestry.
Journal: Nature human behaviour
In common: psych, data.table, tidyverse, clinical / translational, other condition, 1 reference, author Jürgen Deckert
[6] doi:10.1016/j.isci.2026.115657 [code]
Integration of machine learning to develop a disulfidptosis model for predicting glioma prognosis, immunotherapy response, and drug.
Journal: iScience
In common: pROC, psych, car, 4 other tools, clinical / translational, other condition
[7] doi:10.1093/bioinformatics/btag592 [code]
Network-based stratification of allele-specific expression reveals patient subgroups in Huntington's disease.
Journal: Bioinformatics (Oxford, England)
In common: pROC, rstatix, car, 4 other tools, other condition
[8] doi:10.1093/braincomms/fcag272 [code]
Strenuous physical activity is associated with a younger age of amyotrophic lateral sclerosis onset in two independent cohorts.
Journal: Brain communications
In common: pROC, rstatix, car, 3 other tools, clinical / translational, other condition
[9] doi:10.1093/neuonc/noag128 [code]
Spatially-resolved single-cell imaging of melanoma brain metastases identifies localized immune patterns predictive of immune checkpoint blockade response.
Journal: Neuro-oncology
In common: pROC, caret, rstatix, 3 other tools, clinical / translational, other condition
[10] doi:10.1038/s41467-026-73865-9 [code]
Histamine shapes the neurocomputational dynamics of human learning.
Journal: Nature communications
In common: rstatix, car, broom, 3 other tools, 1 reference

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.