OSCR

Alterations in resting-state functional connectivity relate to psychopathology trajectories during emerging adolescence.

Code ↔ Paper

7 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 7 matches · 2 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
  1. [1] § METHODS AND MATERIALS › Statistical analyses › Longitudinal multilevel modeling ↔ rsfc_p_JCPPA_analyses.R, lines 1–50 · score 0.75 · sensorimotor mouth, sensorimotor hand, cingulo parietal, auditory, retrosplenial, ABCD
  2. [2] § RESULTS › Within‐ and between‐network RSFC relations with p‐factor trajectories ↔ rsfc_p_JCPPA_analyses.R, lines 1–50 · score 0.72 · cingulo opercular, ventral attention, dorsal attention, DMN VAN, frontoparietal, salience
  3. [3] § METHODS AND MATERIALS › Resting‐state functional connectivity (RSFC) ↔ rsfc_p_JCPPA_df.R, the whole file · a weak match · score 0.57 · resting state scans, transformed, FD, frames, motion, RSFC
  4. [4] § RESULTS › Within‐ and between‐network RSFC relations with p‐factor trajectories ↔ rsfc_p_JCPPA_analyses.R, lines 1282–1339 · score 0.57 · FDR correction, VAN CON, DMN CON, DMN DAN, Exploratory, factor scores
  5. [5] § RESULTS › Unconditional linear and non‐linear growth models ↔ rsfc_p_JCPPA_analyses.R, lines 405–449 · score 0.56 · growth models, quadratic model, unconditional, fit, linear, trajectory
  6. [6] § RESULTS › Within‐ and between‐network RSFC relations with p‐factor trajectories ↔ rsfc_p_JCPPA_analyses.R, lines 52–100 · score 0.55 · ventral attention network, dorsal attention network, salience network, cingulo, FPN, Connectivity
  7. [7] § METHODS AND MATERIALS › Statistical analyses › Longitudinal multilevel modeling ↔ rsfc_p_JCPPA_df.R, the whole file · a weak match · score 0.54 · scanner dummies, MRI, FD, factor scores, intercept, baseline

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 · 1,815 lines · 92 KB · no license · 5 matches

  1. #####Title: Alterations in resting-state functional connectivity relate to psychopathology trajectories during emerging adolescence
  2. #####Author: Jenna Jones Devine
  3. #####Date: 09-10-2025
  4. # read in libraries
  5. library(dplyr)
  6. library(lme4)
  7. library(lmerTest)
  8. library(performance) # for ICC
  9. library(broom.mixed) # tidy model outputs into dataframes
  10. library(tidyverse)
  11. library(ggplot2)
  12. library(emmeans)
  13. library(patchwork)
  14. library(interactions)
  15. library(psych)
  16. library(circlize)
  17. # setwd
  18. dir = "C:/Users/jjonesdevine/OneDrive - Virginia Tech/rsfc_p_abcd/data"
  19. setwd(dir)
  20. ## read in longform data (failed QA + site22 participants removed)
  21. pfactor <- read.csv("rsfc_p_jcppa_long_FINAL.csv", header = TRUE)
  22. ##### RENAME AND RECODE VARIABLES #####
  23. ## recode wave from values of 1,2,3 to 0,1,2
  24. pfactor$wave <- pfactor$wave - 1
  25. ## rename site id variable
  26. pfactor <- rename(pfactor, site_id = site_id_l)
  27. ## change site id variable to factor
  28. pfactor$site_id <- as.factor(pfactor$site_id)
  29. ## rename rsfc variables
  30. # dmn connectivity
  31. pfactor$dmn_dmn <- pfactor$rsfmri_c_ngd_dt_ngd_dt #dmn dmn
  32. pfactor$dmn_fpn <- pfactor$rsfmri_c_ngd_dt_ngd_fo #dmn frontoparietal
  33. pfactor$dmn_sa <- pfactor$rsfmri_c_ngd_dt_ngd_sa #dmn salience
  34. pfactor$dmn_van <- pfactor$rsfmri_c_ngd_dt_ngd_vta #dmn ventral attention
  35. pfactor$dmn_dan <- pfactor$rsfmri_c_ngd_dt_ngd_dla #dmn dorsal attention
  36. pfactor$dmn_con <- pfactor$rsfmri_c_ngd_dt_ngd_cgc #dmn cingulo-opercular
  37. pfactor$dmn_ad <- pfactor$rsfmri_c_ngd_dt_ngd_ad #dmn auditory
  38. pfactor$dmn_ca <- pfactor$rsfmri_c_ngd_dt_ngd_ca #dmn cingulo-parietal
  39. pfactor$dmn_n <- pfactor$rsfmri_c_ngd_dt_ngd_n #dmn none
  40. pfactor$dmn_rspltp <- pfactor$rsfmri_c_ngd_dt_ngd_rspltp #dmn retrosplenial temoral
  41. pfactor$dmn_smh <- pfactor$rsfmri_c_ngd_dt_ngd_smh #dmn sensorimotor hand
  42. pfactor$dmn_smm <- pfactor$rsfmri_c_ngd_dt_ngd_smm #dmn sensorimotor mouth
  43. pfactor$dmn_vs <- pfactor$rsfmri_c_ngd_dt_ngd_vs #dmn visual
  44. # fpn connectivity
  45. pfactor$fpn_fpn <- pfactor$rsfmri_c_ngd_fo_ngd_fo #fpn fpn
  46. pfactor$fpn_sa <- pfactor$rsfmri_c_ngd_fo_ngd_sa #fpn salience
  47. pfactor$fpn_van <- pfactor$rsfmri_c_ngd_fo_ngd_vta #fpn van
  48. pfactor$fpn_dan <- pfactor$rsfmri_c_ngd_fo_ngd_dla #fpn dan
  49. pfactor$fpn_con <- pfactor$rsfmri_c_ngd_fo_ngd_cgc #fpn con
  50. pfactor$fpn_ad <- pfactor$rsfmri_c_ngd_fo_ngd_ad #fpn auditory
  51. pfactor$fpn_ca <- pfactor$rsfmri_c_ngd_fo_ngd_ca #fpn cingulo parietal
  52. pfactor$fpn_n <- pfactor$rsfmri_c_ngd_fo_ngd_n #fpn none
  53. pfactor$fpn_rspltp <- pfactor$rsfmri_c_ngd_fo_ngd_rspltp #fpn retrosplenial temporal
  54. pfactor$fpn_smh <- pfactor$rsfmri_c_ngd_fo_ngd_smh #fpn senosrimotor hand
  55. pfactor$fpn_smm <- pfactor$rsfmri_c_ngd_fo_ngd_smm #fpn senosrimotor mouth
  56. pfactor$fpn_vs <- pfactor$rsfmri_c_ngd_fo_ngd_vs #fpn visual
  57. # salience network connectivity
  58. pfactor$sa_sa <- pfactor$rsfmri_c_ngd_sa_ngd_sa #sa salience
  59. pfactor$sa_van <- pfactor$rsfmri_c_ngd_sa_ngd_vta #sa van
  60. pfactor$sa_dan <- pfactor$rsfmri_c_ngd_sa_ngd_dla #sa dan
  61. pfactor$sa_con <- pfactor$rsfmri_c_ngd_sa_ngd_cgc #sa CON
  62. pfactor$sa_ad <- pfactor$rsfmri_c_ngd_sa_ngd_ad #sa auditory
  63. pfactor$sa_ca <- pfactor$rsfmri_c_ngd_sa_ngd_ca #sa cinuglo parietal
  64. pfactor$sa_n <- pfactor$rsfmri_c_ngd_sa_ngd_n #sa none
  65. pfactor$sa_rspltp <- pfactor$rsfmri_c_ngd_sa_ngd_rspltp #sa rspltp
  66. pfactor$sa_smh <- pfactor$rsfmri_c_ngd_sa_ngd_smh #sa hand
  67. pfactor$sa_smm <- pfactor$rsfmri_c_ngd_sa_ngd_smm #sa mouth
  68. pfactor$sa_vs <- pfactor$rsfmri_c_ngd_sa_ngd_vs #sa visual
  69. # ventral attention network connectivity
  70. pfactor$van_van <- pfactor$rsfmri_c_ngd_vta_ngd_vta #van van
  71. pfactor$van_dan <- pfactor$rsfmri_c_ngd_vta_ngd_dla #van dan
  72. pfactor$van_con <- pfactor$rsfmri_c_ngd_vta_ngd_cgc #van con
  73. pfactor$van_ad <- pfactor$rsfmri_c_ngd_vta_ngd_ad #van auditory
  74. pfactor$van_ca <- pfactor$rsfmri_c_ngd_vta_ngd_ca #van cinula parietal
  75. pfactor$van_n <- pfactor$rsfmri_c_ngd_vta_ngd_n #van none
  76. pfactor$van_rspltp <- pfactor$rsfmri_c_ngd_vta_ngd_rspltp #van rspltp
  77. pfactor$van_smh <- pfactor$rsfmri_c_ngd_vta_ngd_smh #van hand
  78. pfactor$van_smm <- pfactor$rsfmri_c_ngd_vta_ngd_smm #van mouth
  79. pfactor$van_vs <- pfactor$rsfmri_c_ngd_vta_ngd_vs #van visual
  80. # dorsal attention network connectivity
  81. pfactor$dan_dan <- pfactor$rsfmri_c_ngd_dla_ngd_dla #dan dan
  82. pfactor$dan_con <- pfactor$rsfmri_c_ngd_dla_ngd_cgc #dan con
  83. pfactor$dan_ad <- pfactor$rsfmri_c_ngd_dla_ngd_ad #dan auditory
  84. pfactor$dan_ca <- pfactor$rsfmri_c_ngd_dla_ngd_ca #dan cingulo parietal
  85. pfactor$dan_n <- pfactor$rsfmri_c_ngd_dla_ngd_n #dan none
  86. pfactor$dan_rspltp <- pfactor$rsfmri_c_ngd_dla_ngd_rspltp #dan rspltp
  87. pfactor$dan_smh <- pfactor$rsfmri_c_ngd_dla_ngd_smh #dan hand
  88. pfactor$dan_smm <- pfactor$rsfmri_c_ngd_dla_ngd_smm #dan mouth
  89. pfactor$dan_vs <- pfactor$rsfmri_c_ngd_dla_ngd_vs #dan visual
  90. # cingulo oprecular network connectivity
  91. pfactor$con_con <- pfactor$rsfmri_c_ngd_cgc_ngd_cgc #con con
  92. pfactor$con_ad <- pfactor$rsfmri_c_ngd_cgc_ngd_ad #con auditory
  93. pfactor$con_ca <- pfactor$rsfmri_c_ngd_cgc_ngd_ca #con cingulo parietal
  94. pfactor$con_n <- pfactor$rsfmri_c_ngd_cgc_ngd_n #con none
  95. pfactor$con_rspltp <- pfactor$rsfmri_c_ngd_cgc_ngd_rspltp #con rspltp
  96. pfactor$con_smh <- pfactor$rsfmri_c_ngd_cgc_ngd_smh #con hand
  97. pfactor$con_smm <- pfactor$rsfmri_c_ngd_cgc_ngd_smm #con mouth
  98. pfactor$con_vs <- pfactor$rsfmri_c_ngd_cgc_ngd_vs #con visual
  99. # auditory network connectivity
  100. pfactor$ad_ad <- pfactor$rsfmri_c_ngd_ad_ngd_ad #ad auditory
  101. pfactor$ad_ca <- pfactor$rsfmri_c_ngd_ad_ngd_ca #ad cingulo parietal
  102. pfactor$ad_n <- pfactor$rsfmri_c_ngd_ad_ngd_n #ad none
  103. pfactor$ad_rspltp <- pfactor$rsfmri_c_ngd_ad_ngd_rspltp #ad rspltp
  104. pfactor$ad_smh <- pfactor$rsfmri_c_ngd_ad_ngd_smh #ad hand
  105. pfactor$ad_smm <- pfactor$rsfmri_c_ngd_ad_ngd_smm #ad mouth
  106. pfactor$ad_vs <- pfactor$rsfmri_c_ngd_ad_ngd_vs #ad visual
  107. # cingulo parietal network connectivity
  108. pfactor$ca_ca <- pfactor$rsfmri_c_ngd_ca_ngd_ca #ca cingulo parietal
  109. pfactor$ca_n <- pfactor$rsfmri_c_ngd_ca_ngd_n #ca none
  110. pfactor$ca_rspltp <- pfactor$rsfmri_c_ngd_ca_ngd_rspltp #ca rspltp
  111. pfactor$ca_smh <- pfactor$rsfmri_c_ngd_ca_ngd_smh #ca hand
  112. pfactor$ca_smm <- pfactor$rsfmri_c_ngd_ca_ngd_smm #ca mouth
  113. pfactor$ca_vs <- pfactor$rsfmri_c_ngd_ca_ngd_vs #ca visual
  114. # none network connectivity
  115. pfactor$n_n <- pfactor$rsfmri_c_ngd_n_ngd_n #n none
  116. pfactor$n_rspltp <- pfactor$rsfmri_c_ngd_n_ngd_rspltp #n rspltp
  117. pfactor$n_smh <- pfactor$rsfmri_c_ngd_n_ngd_smh #n hand
  118. pfactor$n_smm <- pfactor$rsfmri_c_ngd_n_ngd_smm #n mouth
  119. pfactor$n_vs <- pfactor$rsfmri_c_ngd_n_ngd_vs #n visual
  120. # retrosplenial temporal network connectivity
  121. pfactor$rspltp_rspltp <- pfactor$rsfmri_c_ngd_rspltp_ngd_rspltp #rspltp rspltp
  122. pfactor$rspltp_smh <- pfactor$rsfmri_c_ngd_rspltp_ngd_smh #rspltp hand
  123. pfactor$rspltp_smm <- pfactor$rsfmri_c_ngd_rspltp_ngd_smm #rspltp mouth
  124. pfactor$rspltp_vs <- pfactor$rsfmri_c_ngd_rspltp_ngd_vs #rspltp visual
  125. # sensorimotor hand network connectivity
  126. pfactor$smh_smh <- pfactor$rsfmri_c_ngd_smh_ngd_smh #smh sensorimotor hand
  127. pfactor$smh_smm <- pfactor$rsfmri_c_ngd_smh_ngd_smm #smh sensorimotor mouth
  128. pfactor$smh_vs <- pfactor$rsfmri_c_ngd_smh_ngd_vs #smh visual
  129. # sensorimotor mouth network connectivity
  130. pfactor$smm_smm <- pfactor$rsfmri_c_ngd_smm_ngd_smm #smm sensorimotor mouth
  131. pfactor$smm_vs <- pfactor$rsfmri_c_ngd_smm_ngd_vs #smm visual
  132. # visual network connectivity
  133. pfactor$vs_vs <- pfactor$rsfmri_c_ngd_vs_ngd_vs #smm visual
  134. ##### MEAN CENTER AND RESCALE VARIABLES #####
  135. ## Center rsfc variables by subject
  136. # dmn
  137. pfactor$subj_dmn_dmn_cent <- pfactor$dmn_dmn - mean(pfactor$dmn_dmn, na.rm = TRUE)
  138. pfactor$subj_dmn_fpn_cent <- pfactor$dmn_fpn - mean(pfactor$dmn_fpn, na.rm = TRUE)
  139. pfactor$subj_dmn_sa_cent <- pfactor$dmn_sa - mean(pfactor$dmn_sa, na.rm = TRUE)
  140. pfactor$subj_dmn_van_cent <- pfactor$dmn_van - mean(pfactor$dmn_van, na.rm = TRUE)
  141. pfactor$subj_dmn_dan_cent <- pfactor$dmn_dan - mean(pfactor$dmn_dan, na.rm = TRUE)
  142. pfactor$subj_dmn_con_cent <- pfactor$dmn_con - mean(pfactor$dmn_con, na.rm = TRUE)
  143. pfactor$subj_dmn_ad_cent <- pfactor$dmn_ad - mean(pfactor$dmn_ad, na.rm = TRUE)
  144. pfactor$subj_dmn_ca_cent <- pfactor$dmn_ca - mean(pfactor$dmn_ca, na.rm = TRUE)
  145. pfactor$subj_dmn_n_cent <- pfactor$dmn_n - mean(pfactor$dmn_n, na.rm = TRUE)
  146. pfactor$subj_dmn_rspltp_cent <- pfactor$dmn_rspltp - mean(pfactor$dmn_rspltp, na.rm = TRUE)
  147. pfactor$subj_dmn_smh_cent <- pfactor$dmn_smh - mean(pfactor$dmn_smh, na.rm = TRUE)
  148. pfactor$subj_dmn_smm_cent <- pfactor$dmn_smm - mean(pfactor$dmn_smm, na.rm = TRUE)
  149. pfactor$subj_dmn_vs_cent <- pfactor$dmn_vs - mean(pfactor$dmn_vs, na.rm = TRUE)
  150. # fpn
  151. pfactor$subj_fpn_fpn_cent <- pfactor$fpn_fpn - mean(pfactor$fpn_fpn, na.rm = TRUE)
  152. pfactor$subj_fpn_sa_cent <- pfactor$fpn_sa - mean(pfactor$fpn_sa, na.rm = TRUE)
  153. pfactor$subj_fpn_van_cent <- pfactor$fpn_van - mean(pfactor$fpn_van, na.rm = TRUE)
  154. pfactor$subj_fpn_dan_cent <- pfactor$fpn_dan - mean(pfactor$fpn_dan, na.rm = TRUE)
  155. pfactor$subj_fpn_con_cent <- pfactor$fpn_con - mean(pfactor$fpn_con, na.rm = TRUE)
  156. pfactor$subj_fpn_ad_cent <- pfactor$fpn_ad - mean(pfactor$fpn_ad, na.rm = TRUE)
  157. pfactor$subj_fpn_ca_cent <- pfactor$fpn_ca - mean(pfactor$fpn_ca, na.rm = TRUE)
  158. pfactor$subj_fpn_n_cent <- pfactor$fpn_n - mean(pfactor$fpn_n, na.rm = TRUE)
  159. pfactor$subj_fpn_rspltp_cent <- pfactor$fpn_rspltp - mean(pfactor$fpn_rspltp, na.rm = TRUE)
  160. pfactor$subj_fpn_smh_cent <- pfactor$fpn_smh - mean(pfactor$fpn_smh, na.rm = TRUE)
  161. pfactor$subj_fpn_smm_cent <- pfactor$fpn_smm - mean(pfactor$fpn_smm, na.rm = TRUE)
  162. pfactor$subj_fpn_vs_cent <- pfactor$fpn_vs - mean(pfactor$fpn_vs, na.rm = TRUE)
  163. # sa
  164. pfactor$subj_sa_sa_cent <- pfactor$sa_sa - mean(pfactor$sa_sa, na.rm = TRUE)
  165. pfactor$subj_sa_van_cent <- pfactor$sa_van - mean(pfactor$sa_van, na.rm = TRUE)
  166. pfactor$subj_sa_dan_cent <- pfactor$sa_dan - mean(pfactor$sa_dan, na.rm = TRUE)
  167. pfactor$subj_sa_con_cent <- pfactor$sa_con - mean(pfactor$sa_con, na.rm = TRUE)
  168. pfactor$subj_sa_ad_cent <- pfactor$sa_ad - mean(pfactor$sa_ad, na.rm = TRUE)
  169. pfactor$subj_sa_ca_cent <- pfactor$sa_ca - mean(pfactor$sa_ca, na.rm = TRUE)
  170. pfactor$subj_sa_n_cent <- pfactor$sa_n - mean(pfactor$sa_n, na.rm = TRUE)
  171. pfactor$subj_sa_rspltp_cent <- pfactor$sa_rspltp - mean(pfactor$sa_rspltp, na.rm = TRUE)
  172. pfactor$subj_sa_smh_cent <- pfactor$sa_smh - mean(pfactor$sa_smh, na.rm = TRUE)
  173. pfactor$subj_sa_smm_cent <- pfactor$sa_smm - mean(pfactor$sa_smm, na.rm = TRUE)
  174. pfactor$subj_sa_vs_cent <- pfactor$sa_vs - mean(pfactor$sa_vs, na.rm = TRUE)
  175. # van
  176. pfactor$subj_van_van_cent <- pfactor$van_van - mean(pfactor$van_van, na.rm = TRUE)
  177. pfactor$subj_van_dan_cent <- pfactor$van_dan - mean(pfactor$van_dan, na.rm = TRUE)
  178. pfactor$subj_van_con_cent <- pfactor$van_con - mean(pfactor$van_con, na.rm = TRUE)
  179. pfactor$subj_van_ad_cent <- pfactor$van_ad - mean(pfactor$van_ad, na.rm = TRUE)
  180. pfactor$subj_van_ca_cent <- pfactor$van_ca - mean(pfactor$van_ca, na.rm = TRUE)
  181. pfactor$subj_van_n_cent <- pfactor$van_n - mean(pfactor$van_n, na.rm = TRUE)
  182. pfactor$subj_van_rspltp_cent <- pfactor$van_rspltp - mean(pfactor$van_rspltp, na.rm = TRUE)
  183. pfactor$subj_van_smh_cent <- pfactor$van_smh - mean(pfactor$van_smh, na.rm = TRUE)
  184. pfactor$subj_van_smm_cent <- pfactor$van_smm - mean(pfactor$van_smm, na.rm = TRUE)
  185. pfactor$subj_van_vs_cent <- pfactor$van_vs - mean(pfactor$van_vs, na.rm = TRUE)
  186. # dan
  187. pfactor$subj_dan_dan_cent <- pfactor$dan_dan - mean(pfactor$dan_dan, na.rm = TRUE)
  188. pfactor$subj_dan_con_cent <- pfactor$dan_con - mean(pfactor$dan_con, na.rm = TRUE)
  189. pfactor$subj_dan_ad_cent <- pfactor$dan_ad - mean(pfactor$dan_ad, na.rm = TRUE)
  190. pfactor$subj_dan_ca_cent <- pfactor$dan_ca - mean(pfactor$dan_ca, na.rm = TRUE)
  191. pfactor$subj_dan_n_cent <- pfactor$dan_n - mean(pfactor$dan_n, na.rm = TRUE)
  192. pfactor$subj_dan_rspltp_cent <- pfactor$dan_rspltp - mean(pfactor$dan_rspltp, na.rm = TRUE)
  193. pfactor$subj_dan_smh_cent <- pfactor$dan_smh - mean(pfactor$dan_smh, na.rm = TRUE)
  194. pfactor$subj_dan_smm_cent <- pfactor$dan_smm - mean(pfactor$dan_smm, na.rm = TRUE)
  195. pfactor$subj_dan_vs_cent <- pfactor$dan_vs - mean(pfactor$dan_vs, na.rm = TRUE)
  196. # con
  197. pfactor$subj_con_con_cent <- pfactor$con_con - mean(pfactor$con_con, na.rm = TRUE)
  198. pfactor$subj_con_ad_cent <- pfactor$con_ad - mean(pfactor$con_ad, na.rm = TRUE)
  199. pfactor$subj_con_ca_cent <- pfactor$con_ca - mean(pfactor$con_ca, na.rm = TRUE)
  200. pfactor$subj_con_n_cent <- pfactor$con_n - mean(pfactor$con_n, na.rm = TRUE)
  201. pfactor$subj_con_rspltp_cent <- pfactor$con_rspltp - mean(pfactor$con_rspltp, na.rm = TRUE)
  202. pfactor$subj_con_smh_cent <- pfactor$con_smh - mean(pfactor$con_smh, na.rm = TRUE)
  203. pfactor$subj_con_smm_cent <- pfactor$con_smm - mean(pfactor$con_smm, na.rm = TRUE)
  204. pfactor$subj_con_vs_cent <- pfactor$con_vs - mean(pfactor$con_vs, na.rm = TRUE)
  205. # ad
  206. pfactor$subj_ad_ad_cent <- pfactor$ad_ad - mean(pfactor$ad_ad, na.rm = TRUE)
  207. pfactor$subj_ad_ca_cent <- pfactor$ad_ca - mean(pfactor$ad_ca, na.rm = TRUE)
  208. pfactor$subj_ad_n_cent <- pfactor$ad_n - mean(pfactor$ad_n, na.rm = TRUE)
  209. pfactor$subj_ad_rspltp_cent <- pfactor$ad_rspltp - mean(pfactor$ad_rspltp, na.rm = TRUE)
  210. pfactor$subj_ad_smh_cent <- pfactor$ad_smh - mean(pfactor$ad_smh, na.rm = TRUE)
  211. pfactor$subj_ad_smm_cent <- pfactor$ad_smm - mean(pfactor$ad_smm, na.rm = TRUE)
  212. pfactor$subj_ad_vs_cent <- pfactor$ad_vs - mean(pfactor$ad_vs, na.rm = TRUE)
  213. # ca
  214. pfactor$subj_ca_ca_cent <- pfactor$ca_ca - mean(pfactor$ca_ca, na.rm = TRUE)
  215. pfactor$subj_ca_n_cent <- pfactor$ca_n - mean(pfactor$ca_n, na.rm = TRUE)
  216. pfactor$subj_ca_rspltp_cent <- pfactor$ca_rspltp - mean(pfactor$ca_rspltp, na.rm = TRUE)
  217. pfactor$subj_ca_smh_cent <- pfactor$ca_smh - mean(pfactor$ca_smh, na.rm = TRUE)
  218. pfactor$subj_ca_smm_cent <- pfactor$ca_smm - mean(pfactor$ca_smm, na.rm = TRUE)
  219. pfactor$subj_ca_vs_cent <- pfactor$ca_vs - mean(pfactor$ca_vs, na.rm = TRUE)
  220. # n
  221. pfactor$subj_n_n_cent <- pfactor$n_n - mean(pfactor$n_n, na.rm = TRUE)
  222. pfactor$subj_n_rspltp_cent <- pfactor$n_rspltp - mean(pfactor$n_rspltp, na.rm = TRUE)
  223. pfactor$subj_n_smh_cent <- pfactor$n_smh - mean(pfactor$n_smh, na.rm = TRUE)
  224. pfactor$subj_n_smm_cent <- pfactor$n_smm - mean(pfactor$n_smm, na.rm = TRUE)
  225. pfactor$subj_n_vs_cent <- pfactor$n_vs - mean(pfactor$n_vs, na.rm = TRUE)
  226. # rspltp
  227. pfactor$subj_rspltp_rspltp_cent <- pfactor$rspltp_rspltp - mean(pfactor$rspltp_rspltp, na.rm = TRUE)
  228. pfactor$subj_rspltp_smh_cent <- pfactor$rspltp_smh - mean(pfactor$rspltp_smh, na.rm = TRUE)
  229. pfactor$subj_rspltp_smm_cent <- pfactor$rspltp_smm - mean(pfactor$rspltp_smm, na.rm = TRUE)
  230. pfactor$subj_rspltp_vs_cent <- pfactor$rspltp_vs - mean(pfactor$rspltp_vs, na.rm = TRUE)
  231. # smh
  232. pfactor$subj_smh_smh_cent <- pfactor$smh_smh - mean(pfactor$smh_smh, na.rm = TRUE)
  233. pfactor$subj_smh_smm_cent <- pfactor$smh_smm - mean(pfactor$smh_smm, na.rm = TRUE)
  234. pfactor$subj_smh_vs_cent <- pfactor$smh_vs - mean(pfactor$smh_vs, na.rm = TRUE)
  235. # smm
  236. pfactor$subj_smm_smm_cent <- pfactor$smm_smm - mean(pfactor$smm_smm, na.rm = TRUE)
  237. pfactor$subj_smm_vs_cent <- pfactor$smm_vs - mean(pfactor$smm_vs, na.rm = TRUE)
  238. #vs
  239. pfactor$subj_vs_vs_cent <- pfactor$vs_vs - mean(pfactor$vs_vs, na.rm = TRUE)
  240. ## rescale variables
  241. #dmn scale
  242. pfactor$scale_subj_dmn_dmn_cent <- scale(pfactor$subj_dmn_dmn_cent)
  243. pfactor$scale_subj_dmn_fpn_cent <- scale(pfactor$subj_dmn_fpn_cent)
  244. pfactor$scale_subj_dmn_sa_cent <- scale(pfactor$subj_dmn_sa_cent)
  245. pfactor$scale_subj_dmn_van_cent <- scale(pfactor$subj_dmn_van_cent)
  246. pfactor$scale_subj_dmn_dan_cent <- scale(pfactor$subj_dmn_dan_cent)
  247. pfactor$scale_subj_dmn_con_cent <- scale(pfactor$subj_dmn_con_cent)
  248. pfactor$scale_subj_dmn_ad_cent <- scale(pfactor$subj_dmn_ad_cent)
  249. pfactor$scale_subj_dmn_ca_cent <- scale(pfactor$subj_dmn_ca_cent)
  250. pfactor$scale_subj_dmn_n_cent <- scale(pfactor$subj_dmn_n_cent)
  251. pfactor$scale_subj_dmn_rspltp_cent <- scale(pfactor$subj_dmn_rspltp_cent)
  252. pfactor$scale_subj_dmn_smh_cent <- scale(pfactor$subj_dmn_smh_cent)
  253. pfactor$scale_subj_dmn_smm_cent <- scale(pfactor$subj_dmn_smm_cent)
  254. pfactor$scale_subj_dmn_vs_cent <- scale(pfactor$subj_dmn_vs_cent)
  255. #fpn scale
  256. pfactor$scale_subj_fpn_fpn_cent <- scale(pfactor$subj_fpn_fpn_cent)
  257. pfactor$scale_subj_fpn_sa_cent <- scale(pfactor$subj_fpn_sa_cent)
  258. pfactor$scale_subj_fpn_van_cent <- scale(pfactor$subj_fpn_van_cent)
  259. pfactor$scale_subj_fpn_dan_cent <- scale(pfactor$subj_fpn_dan_cent)
  260. pfactor$scale_subj_fpn_con_cent <- scale(pfactor$subj_fpn_con_cent)
  261. pfactor$scale_subj_fpn_ad_cent <- scale(pfactor$subj_fpn_ad_cent)
  262. pfactor$scale_subj_fpn_ca_cent <- scale(pfactor$subj_fpn_ca_cent)
  263. pfactor$scale_subj_fpn_n_cent <- scale(pfactor$subj_fpn_n_cent)
  264. pfactor$scale_subj_fpn_rspltp_cent <- scale(pfactor$subj_fpn_rspltp_cent)
  265. pfactor$scale_subj_fpn_smh_cent <- scale(pfactor$subj_fpn_smh_cent)
  266. pfactor$scale_subj_fpn_smm_cent <- scale(pfactor$subj_fpn_smm_cent)
  267. pfactor$scale_subj_fpn_vs_cent <- scale(pfactor$subj_fpn_vs_cent)
  268. #sa scale
  269. pfactor$scale_subj_sa_sa_cent <- scale(pfactor$subj_sa_sa_cent)
  270. pfactor$scale_subj_sa_van_cent <- scale(pfactor$subj_sa_van_cent)
  271. pfactor$scale_subj_sa_dan_cent <- scale(pfactor$subj_sa_dan_cent)
  272. pfactor$scale_subj_sa_con_cent <- scale(pfactor$subj_sa_con_cent)
  273. pfactor$scale_subj_sa_ad_cent <- scale(pfactor$subj_sa_ad_cent)
  274. pfactor$scale_subj_sa_ca_cent <- scale(pfactor$subj_sa_ca_cent)
  275. pfactor$scale_subj_sa_n_cent <- scale(pfactor$subj_sa_n_cent)
  276. pfactor$scale_subj_sa_rspltp_cent <- scale(pfactor$subj_sa_rspltp_cent)
  277. pfactor$scale_subj_sa_smh_cent <- scale(pfactor$subj_sa_smh_cent)
  278. pfactor$scale_subj_sa_smm_cent <- scale(pfactor$subj_sa_smm_cent)
  279. pfactor$scale_subj_sa_vs_cent <- scale(pfactor$subj_sa_vs_cent)
  280. #van scale
  281. pfactor$scale_subj_van_van_cent <- scale(pfactor$subj_van_van_cent)
  282. pfactor$scale_subj_van_dan_cent <- scale(pfactor$subj_van_dan_cent)
  283. pfactor$scale_subj_van_con_cent <- scale(pfactor$subj_van_con_cent)
  284. pfactor$scale_subj_van_ad_cent <- scale(pfactor$subj_van_ad_cent)
  285. pfactor$scale_subj_van_ca_cent <- scale(pfactor$subj_van_ca_cent)
  286. pfactor$scale_subj_van_n_cent <- scale(pfactor$subj_van_n_cent)
  287. pfactor$scale_subj_van_rspltp_cent <- scale(pfactor$subj_van_rspltp_cent)
  288. pfactor$scale_subj_van_smh_cent <- scale(pfactor$subj_van_smh_cent)
  289. pfactor$scale_subj_van_smm_cent <- scale(pfactor$subj_van_smm_cent)
  290. pfactor$scale_subj_van_vs_cent <- scale(pfactor$subj_van_vs_cent)
  291. #dan scale
  292. pfactor$scale_subj_dan_dan_cent <- scale(pfactor$subj_dan_dan_cent)
  293. pfactor$scale_subj_dan_con_cent <- scale(pfactor$subj_dan_con_cent)
  294. pfactor$scale_subj_dan_ad_cent <- scale(pfactor$subj_dan_ad_cent)
  295. pfactor$scale_subj_dan_ca_cent <- scale(pfactor$subj_dan_ca_cent)
  296. pfactor$scale_subj_dan_n_cent <- scale(pfactor$subj_dan_n_cent)
  297. pfactor$scale_subj_dan_rspltp_cent <- scale(pfactor$subj_dan_rspltp_cent)
  298. pfactor$scale_subj_dan_smh_cent <- scale(pfactor$subj_dan_smh_cent)
  299. pfactor$scale_subj_dan_smm_cent <- scale(pfactor$subj_dan_smm_cent)
  300. pfactor$scale_subj_dan_vs_cent <- scale(pfactor$subj_dan_vs_cent)
  301. #con scale
  302. pfactor$scale_subj_con_con_cent <- scale(pfactor$subj_con_con_cent)
  303. pfactor$scale_subj_con_ad_cent <- scale(pfactor$subj_con_ad_cent)
  304. pfactor$scale_subj_con_ca_cent <- scale(pfactor$subj_con_ca_cent)
  305. pfactor$scale_subj_con_n_cent <- scale(pfactor$subj_con_n_cent)
  306. pfactor$scale_subj_con_rspltp_cent <- scale(pfactor$subj_con_rspltp_cent)
  307. pfactor$scale_subj_con_smh_cent <- scale(pfactor$subj_con_smh_cent)
  308. pfactor$scale_subj_con_smm_cent <- scale(pfactor$subj_con_smm_cent)
  309. pfactor$scale_subj_con_vs_cent <- scale(pfactor$subj_con_vs_cent)
  310. #ad scale
  311. pfactor$scale_subj_ad_ad_cent <- scale(pfactor$subj_ad_ad_cent)
  312. pfactor$scale_subj_ad_ca_cent <- scale(pfactor$subj_ad_ca_cent)
  313. pfactor$scale_subj_ad_n_cent <- scale(pfactor$subj_ad_n_cent)
  314. pfactor$scale_subj_ad_rspltp_cent <- scale(pfactor$subj_ad_rspltp_cent)
  315. pfactor$scale_subj_ad_smh_cent <- scale(pfactor$subj_ad_smh_cent)
  316. pfactor$scale_subj_ad_smm_cent <- scale(pfactor$subj_ad_smm_cent)
  317. pfactor$scale_subj_ad_vs_cent <- scale(pfactor$subj_ad_vs_cent)
  318. #ca scale
  319. pfactor$scale_subj_ca_ca_cent <- scale(pfactor$subj_ca_ca_cent)
  320. pfactor$scale_subj_ca_n_cent <- scale(pfactor$subj_ca_n_cent)
  321. pfactor$scale_subj_ca_rspltp_cent <- scale(pfactor$subj_ca_rspltp_cent)
  322. pfactor$scale_subj_ca_smh_cent <- scale(pfactor$subj_ca_smh_cent)
  323. pfactor$scale_subj_ca_smm_cent <- scale(pfactor$subj_ca_smm_cent)
  324. pfactor$scale_subj_ca_vs_cent <- scale(pfactor$subj_ca_vs_cent)
  325. #n scale
  326. pfactor$scale_subj_n_n_cent <- scale(pfactor$subj_n_n_cent)
  327. pfactor$scale_subj_n_rspltp_cent <- scale(pfactor$subj_n_rspltp_cent)
  328. pfactor$scale_subj_n_smh_cent <- scale(pfactor$subj_n_smh_cent)
  329. pfactor$scale_subj_n_smm_cent <- scale(pfactor$subj_n_smm_cent)
  330. pfactor$scale_subj_n_vs_cent <- scale(pfactor$subj_n_vs_cent)
  331. #rspltp scale
  332. pfactor$scale_subj_rspltp_rspltp_cent <- scale(pfactor$subj_rspltp_rspltp_cent)
  333. pfactor$scale_subj_rspltp_smh_cent <- scale(pfactor$subj_rspltp_smh_cent)
  334. pfactor$scale_subj_rspltp_smm_cent <- scale(pfactor$subj_rspltp_smm_cent)
  335. pfactor$scale_subj_rspltp_vs_cent <- scale(pfactor$subj_rspltp_vs_cent)
  336. #smh scale
  337. pfactor$scale_subj_smh_smh_cent <- scale(pfactor$subj_smh_smh_cent)
  338. pfactor$scale_subj_smh_smm_cent <- scale(pfactor$subj_smh_smm_cent)
  339. pfactor$scale_subj_smh_vs_cent <- scale(pfactor$subj_smh_vs_cent)
  340. #smm scale
  341. pfactor$scale_subj_smm_smm_cent <- scale(pfactor$subj_smm_smm_cent)
  342. pfactor$scale_subj_smm_vs_cent <- scale(pfactor$subj_smm_vs_cent)
  343. #vs scale
  344. pfactor$scale_subj_vs_vs_cent <- scale(pfactor$subj_vs_vs_cent)
  345. #scale p
  346. pfactor$scalep <- scale(pfactor$p)
  347. ##### UNCONDITIONAL LINEAR MODEL VS QUADRATIC MODEL #####
  348. ## unconditional linear model
  349. m <- lmer(p ~ wave + (1|site_id) + (1|rel_family_id) + (1 + wave|id),
  350. REML = FALSE,
  351. data=pfactor,
  352. control=lmerControl(optimizer = "bobyqa",optCtrl = list(maxfun=2e5)))
  353. summary(m)
  354. ## unconditional quadratic model
  355. mq <- lmer(p ~ wave + I(wave^2) + (1|site_id) + (1|rel_family_id) +(1 + wave + I(wave^2)|id),
  356. REML = FALSE,
  357. data=pfactor,
  358. control=lmerControl(optimizer = "bobyqa",optCtrl = list(maxfun=2e5)))
  359. summary(mq)
  360. ## confint for unconditional quad model
  361. # use broom.mixed::tidy to save model outputs to dataframe
  362. df_mq <- tidy(mq, conf.int = TRUE, conf.level = 0.95)
  363. confint(mq)
  364. ## ICC for quad model
  365. icc(mq) # adj. ICC = 0.781
  366. # unadj. ICC = 0.781
  367. ## ANOVA comparing linear and quadratic model
  368. anova(m,mq) # quad model is significant, suggests quadratic fits data trajectories better
  369. ##### CONDITIONAL MULTILEVEL QUAD GROWTH MODELS #####
  370. ##### DMN ####
  371. # dmn dmn
  372. model_dmndmn <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  373. scale_subj_dmn_dmn_cent + scale_subj_dmn_dmn_cent*wave +
  374. scale_subj_dmn_dmn_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  375. data = pfactor,
  376. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  377. summary(model_dmndmn)
  378. # dmn fpn
  379. model_dmnfpn <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  380. scale_subj_dmn_fpn_cent + scale_subj_dmn_fpn_cent*wave +
  381. scale_subj_dmn_fpn_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  382. data = pfactor,
  383. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  384. summary(model_dmnfpn)
  385. # dmn sa
  386. model_dmnsa <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  387. scale_subj_dmn_sa_cent + scale_subj_dmn_sa_cent*wave +
  388. scale_subj_dmn_sa_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  389. data = pfactor,
  390. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  391. summary(model_dmnsa)
  392. # dmn van
  393. model_dmnvan <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  394. scale_subj_dmn_van_cent + scale_subj_dmn_van_cent*wave +
  395. scale_subj_dmn_van_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  396. data = pfactor,
  397. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  398. summary(model_dmnvan)
  399. # dmn dan
  400. model_dmndan <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  401. scale_subj_dmn_dan_cent + scale_subj_dmn_dan_cent*wave +
  402. scale_subj_dmn_dan_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  403. data = pfactor,
  404. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  405. summary(model_dmndan)
  406. # dmn con
  407. model_dmncon <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  408. scale_subj_dmn_con_cent + scale_subj_dmn_con_cent*wave +
  409. scale_subj_dmn_con_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  410. data = pfactor,
  411. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  412. summary(model_dmncon)
  413. # dmn ad
  414. model_dmnad <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  415. scale_subj_dmn_ad_cent + scale_subj_dmn_ad_cent*wave +
  416. scale_subj_dmn_ad_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  417. data = pfactor,
  418. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  419. summary(model_dmnad)
  420. # dmn ca
  421. model_dmnca <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  422. scale_subj_dmn_ca_cent + scale_subj_dmn_ca_cent*wave +
  423. scale_subj_dmn_ca_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  424. data = pfactor,
  425. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  426. summary(model_dmnca)
  427. # dmn n
  428. model_dmnn <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  429. scale_subj_dmn_n_cent + scale_subj_dmn_n_cent*wave +
  430. scale_subj_dmn_n_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  431. data = pfactor,
  432. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  433. summary(model_dmnn)
  434. # dmn rspltp
  435. model_dmnrspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  436. scale_subj_dmn_rspltp_cent + scale_subj_dmn_rspltp_cent*wave +
  437. scale_subj_dmn_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  438. data = pfactor,
  439. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  440. summary(model_dmnrspltp)
  441. # dmn smh
  442. model_dmnsmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  443. scale_subj_dmn_smh_cent + scale_subj_dmn_smh_cent*wave +
  444. scale_subj_dmn_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  445. data = pfactor,
  446. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  447. summary(model_dmnsmh)
  448. # dmn smm
  449. model_dmnsmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  450. scale_subj_dmn_smm_cent + scale_subj_dmn_smm_cent*wave +
  451. scale_subj_dmn_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  452. data = pfactor,
  453. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  454. summary(model_dmnsmm)
  455. # dmn vs
  456. model_dmnvs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  457. scale_subj_dmn_vs_cent + scale_subj_dmn_vs_cent*wave +
  458. scale_subj_dmn_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  459. data = pfactor,
  460. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  461. summary(model_dmnvs)
  462. ##### FPN #####
  463. # fpn fpn
  464. model_fpnfpn <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  465. scale_subj_fpn_fpn_cent + scale_subj_fpn_fpn_cent*wave +
  466. scale_subj_fpn_fpn_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  467. data = pfactor,
  468. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  469. summary(model_fpnfpn)
  470. # fpn sa
  471. model_fpnsa <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  472. scale_subj_fpn_sa_cent + scale_subj_fpn_sa_cent*wave +
  473. scale_subj_fpn_sa_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  474. data = pfactor,
  475. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  476. summary(model_fpnsa)
  477. # fpn van
  478. model_fpnvan <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  479. scale_subj_fpn_van_cent + scale_subj_fpn_van_cent*wave +
  480. scale_subj_fpn_van_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  481. data = pfactor,
  482. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  483. summary(model_fpnvan)
  484. # fpn dan
  485. model_fpndan <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  486. scale_subj_fpn_dan_cent + scale_subj_fpn_dan_cent*wave +
  487. scale_subj_fpn_dan_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  488. data = pfactor,
  489. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  490. summary(model_fpndan)
  491. # fpn con
  492. model_fpncon <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  493. scale_subj_fpn_con_cent + scale_subj_fpn_con_cent*wave +
  494. scale_subj_fpn_con_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  495. data = pfactor,
  496. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  497. summary(model_fpncon)
  498. # fpn ad
  499. model_fpnad <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  500. scale_subj_fpn_ad_cent + scale_subj_fpn_ad_cent*wave +
  501. scale_subj_fpn_ad_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  502. data = pfactor,
  503. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  504. summary(model_fpnad)
  505. # fpn ca
  506. model_fpnca <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  507. scale_subj_fpn_ca_cent + scale_subj_fpn_ca_cent*wave +
  508. scale_subj_fpn_ca_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  509. data = pfactor,
  510. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  511. summary(model_fpnca)
  512. # fpn n
  513. model_fpnn <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  514. scale_subj_fpn_n_cent + scale_subj_fpn_n_cent*wave +
  515. scale_subj_fpn_n_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  516. data = pfactor,
  517. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  518. summary(model_fpnn)
  519. # fpn rspltp
  520. model_fpnrspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  521. scale_subj_fpn_rspltp_cent + scale_subj_fpn_rspltp_cent*wave +
  522. scale_subj_fpn_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  523. data = pfactor,
  524. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  525. summary(model_fpnrspltp)
  526. # fpn smh
  527. model_fpnsmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  528. scale_subj_fpn_smh_cent + scale_subj_fpn_smh_cent*wave +
  529. scale_subj_fpn_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  530. data = pfactor,
  531. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  532. summary(model_fpnsmh)
  533. # fpn smm
  534. model_fpnsmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  535. scale_subj_fpn_smm_cent + scale_subj_fpn_smm_cent*wave +
  536. scale_subj_fpn_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  537. data = pfactor,
  538. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  539. summary(model_fpnsmm)
  540. # fpn vs
  541. model_fpnvs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  542. scale_subj_fpn_vs_cent + scale_subj_fpn_vs_cent*wave +
  543. scale_subj_fpn_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  544. data = pfactor,
  545. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  546. summary(model_fpnvs)
  547. ##### SA #####
  548. # sa sa
  549. model_sasa <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  550. scale_subj_sa_sa_cent + scale_subj_sa_sa_cent*wave +
  551. scale_subj_sa_sa_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  552. data = pfactor,
  553. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  554. summary(model_sasa)
  555. # sa van
  556. model_savan <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  557. scale_subj_sa_van_cent + scale_subj_sa_van_cent*wave +
  558. scale_subj_sa_van_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  559. data = pfactor,
  560. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  561. summary(model_savan)
  562. # sa dan
  563. model_sadan <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  564. scale_subj_sa_dan_cent + scale_subj_sa_dan_cent*wave +
  565. scale_subj_sa_dan_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  566. data = pfactor,
  567. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  568. summary(model_sadan)
  569. # sa con
  570. model_sacon <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  571. scale_subj_sa_con_cent + scale_subj_sa_con_cent*wave +
  572. scale_subj_sa_con_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  573. data = pfactor,
  574. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  575. summary(model_sacon)
  576. # sa ad
  577. model_saad <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  578. scale_subj_sa_ad_cent + scale_subj_sa_ad_cent*wave +
  579. scale_subj_sa_ad_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  580. data = pfactor,
  581. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  582. summary(model_saad)
  583. # sa ca
  584. model_saca <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  585. scale_subj_sa_ca_cent + scale_subj_sa_ca_cent*wave +
  586. scale_subj_sa_ca_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  587. data = pfactor,
  588. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  589. summary(model_saca)
  590. # sa n
  591. model_san <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  592. scale_subj_sa_n_cent + scale_subj_sa_n_cent*wave +
  593. scale_subj_sa_n_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  594. data = pfactor,
  595. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  596. summary(model_san)
  597. # sa rspltp
  598. model_sarspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  599. scale_subj_sa_rspltp_cent + scale_subj_sa_rspltp_cent*wave +
  600. scale_subj_sa_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  601. data = pfactor,
  602. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  603. summary(model_sarspltp)
  604. # sa smh
  605. model_sasmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  606. scale_subj_sa_smh_cent + scale_subj_sa_smh_cent*wave +
  607. scale_subj_sa_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  608. data = pfactor,
  609. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  610. summary(model_sasmh)
  611. # sa smm
  612. model_sasmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  613. scale_subj_sa_smm_cent + scale_subj_sa_smm_cent*wave +
  614. scale_subj_sa_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  615. data = pfactor,
  616. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  617. summary(model_sasmm)
  618. # sa vs
  619. model_savs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  620. scale_subj_sa_vs_cent + scale_subj_sa_vs_cent*wave +
  621. scale_subj_sa_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  622. data = pfactor,
  623. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  624. summary(model_savs)
  625. ##### VAN #####
  626. # van van
  627. model_vanvan <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  628. scale_subj_van_van_cent + scale_subj_van_van_cent*wave +
  629. scale_subj_van_van_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  630. data = pfactor,
  631. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  632. summary(model_vanvan)
  633. # van dan
  634. model_vandan <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  635. scale_subj_van_dan_cent + scale_subj_van_dan_cent*wave +
  636. scale_subj_van_dan_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  637. data = pfactor,
  638. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  639. summary(model_vandan)
  640. # van con
  641. model_vancon <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  642. scale_subj_van_con_cent + scale_subj_van_con_cent*wave +
  643. scale_subj_van_con_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  644. data = pfactor,
  645. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  646. summary(model_vancon)
  647. # van ad
  648. model_vanad <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  649. scale_subj_van_ad_cent + scale_subj_van_ad_cent*wave +
  650. scale_subj_van_ad_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  651. data = pfactor,
  652. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  653. summary(model_vanad)
  654. # van ca
  655. model_vanca <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  656. scale_subj_van_ca_cent + scale_subj_van_ca_cent*wave +
  657. scale_subj_van_ca_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  658. data = pfactor,
  659. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  660. summary(model_vanca)
  661. # van n
  662. model_vann <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  663. scale_subj_van_n_cent + scale_subj_van_n_cent*wave +
  664. scale_subj_van_n_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  665. data = pfactor,
  666. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  667. summary(model_vann)
  668. # van rspltp
  669. model_vanrspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  670. scale_subj_van_rspltp_cent + scale_subj_van_rspltp_cent*wave +
  671. scale_subj_van_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  672. data = pfactor,
  673. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  674. summary(model_vanrspltp)
  675. # van smh
  676. model_vansmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  677. scale_subj_van_smh_cent + scale_subj_van_smh_cent*wave +
  678. scale_subj_van_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  679. data = pfactor,
  680. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  681. summary(model_vansmh)
  682. # van smm
  683. model_vansmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  684. scale_subj_van_smm_cent + scale_subj_van_smm_cent*wave +
  685. scale_subj_van_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  686. data = pfactor,
  687. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  688. summary(model_vansmm)
  689. # van vs
  690. model_vanvs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  691. scale_subj_van_vs_cent + scale_subj_van_vs_cent*wave +
  692. scale_subj_van_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  693. data = pfactor,
  694. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  695. summary(model_vanvs)
  696. ##### DAN #####
  697. # dan dan
  698. model_dandan <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  699. scale_subj_dan_dan_cent + scale_subj_dan_dan_cent*wave +
  700. scale_subj_dan_dan_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  701. data = pfactor,
  702. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  703. summary(model_dandan)
  704. # dan con
  705. model_dancon <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  706. scale_subj_dan_con_cent + scale_subj_dan_con_cent*wave +
  707. scale_subj_dan_con_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  708. data = pfactor,
  709. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  710. summary(model_dancon)
  711. # dan ad
  712. model_danad <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  713. scale_subj_dan_ad_cent + scale_subj_dan_ad_cent*wave +
  714. scale_subj_dan_ad_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  715. data = pfactor,
  716. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  717. summary(model_danad)
  718. # dan ca
  719. model_danca <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  720. scale_subj_dan_ca_cent + scale_subj_dan_ca_cent*wave +
  721. scale_subj_dan_ca_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  722. data = pfactor,
  723. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  724. summary(model_danca)
  725. # dan n
  726. model_dann <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  727. scale_subj_dan_n_cent + scale_subj_dan_n_cent*wave +
  728. scale_subj_dan_n_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  729. data = pfactor,
  730. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  731. summary(model_dann)
  732. # dan rspltp
  733. model_danrspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  734. scale_subj_dan_rspltp_cent + scale_subj_dan_rspltp_cent*wave +
  735. scale_subj_dan_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  736. data = pfactor,
  737. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  738. summary(model_danrspltp)
  739. # dan smh
  740. model_dansmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  741. scale_subj_dan_smh_cent + scale_subj_dan_smh_cent*wave +
  742. scale_subj_dan_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  743. data = pfactor,
  744. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  745. summary(model_dansmh)
  746. # dan smm
  747. model_dansmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  748. scale_subj_dan_smm_cent + scale_subj_dan_smm_cent*wave +
  749. scale_subj_dan_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  750. data = pfactor,
  751. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  752. summary(model_dansmm)
  753. # dan vs
  754. model_danvs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  755. scale_subj_dan_vs_cent + scale_subj_dan_vs_cent*wave +
  756. scale_subj_dan_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  757. data = pfactor,
  758. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  759. summary(model_danvs)
  760. ##### CON #####
  761. # con con
  762. model_concon <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  763. scale_subj_con_con_cent + scale_subj_con_con_cent*wave +
  764. scale_subj_con_con_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  765. data = pfactor,
  766. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  767. summary(model_concon)
  768. # con ad
  769. model_conad <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  770. scale_subj_con_ad_cent + scale_subj_con_ad_cent*wave +
  771. scale_subj_con_ad_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  772. data = pfactor,
  773. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  774. summary(model_conad)
  775. # con ca
  776. model_conca <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  777. scale_subj_con_ca_cent + scale_subj_con_ca_cent*wave +
  778. scale_subj_con_ca_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  779. data = pfactor,
  780. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  781. summary(model_conca)
  782. # con n
  783. model_conn <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  784. scale_subj_con_n_cent + scale_subj_con_n_cent*wave +
  785. scale_subj_con_n_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  786. data = pfactor,
  787. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  788. summary(model_conn)
  789. # con rspltp
  790. model_conrspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  791. scale_subj_con_rspltp_cent + scale_subj_con_rspltp_cent*wave +
  792. scale_subj_con_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  793. data = pfactor,
  794. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  795. summary(model_conrspltp)
  796. # con smh
  797. model_consmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  798. scale_subj_con_smh_cent + scale_subj_con_smh_cent*wave +
  799. scale_subj_con_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  800. data = pfactor,
  801. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  802. summary(model_consmh)
  803. # con smm
  804. model_consmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  805. scale_subj_con_smm_cent + scale_subj_con_smm_cent*wave +
  806. scale_subj_con_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  807. data = pfactor,
  808. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  809. summary(model_consmm)
  810. # con vs
  811. model_convs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  812. scale_subj_con_vs_cent + scale_subj_con_vs_cent*wave +
  813. scale_subj_con_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  814. data = pfactor,
  815. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  816. summary(model_convs)
  817. ##### AD #####
  818. # ad ad
  819. model_adad <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  820. scale_subj_ad_ad_cent + scale_subj_ad_ad_cent*wave +
  821. scale_subj_ad_ad_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  822. data = pfactor,
  823. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  824. summary(model_adad)
  825. # ad ca
  826. model_adca <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  827. scale_subj_ad_ca_cent + scale_subj_ad_ca_cent*wave +
  828. scale_subj_ad_ca_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  829. data = pfactor,
  830. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  831. summary(model_adca)
  832. # ad n
  833. model_adn <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  834. scale_subj_ad_n_cent + scale_subj_ad_n_cent*wave +
  835. scale_subj_ad_n_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  836. data = pfactor,
  837. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  838. summary(model_adn)
  839. # ad rspltp
  840. model_adrspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  841. scale_subj_ad_rspltp_cent + scale_subj_ad_rspltp_cent*wave +
  842. scale_subj_ad_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  843. data = pfactor,
  844. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  845. summary(model_adrspltp)
  846. # ad smh
  847. model_adsmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  848. scale_subj_ad_smh_cent + scale_subj_ad_smh_cent*wave +
  849. scale_subj_ad_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  850. data = pfactor,
  851. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  852. summary(model_adsmh)
  853. # ad smm
  854. model_adsmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  855. scale_subj_ad_smm_cent + scale_subj_ad_smm_cent*wave +
  856. scale_subj_ad_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  857. data = pfactor,
  858. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  859. summary(model_adsmm)
  860. # ad vs
  861. model_advs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  862. scale_subj_ad_vs_cent + scale_subj_ad_vs_cent*wave +
  863. scale_subj_ad_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  864. data = pfactor,
  865. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  866. summary(model_advs)
  867. ##### CA #####
  868. # ca ca
  869. model_caca <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  870. scale_subj_ca_ca_cent + scale_subj_ca_ca_cent*wave +
  871. scale_subj_ca_ca_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  872. data = pfactor,
  873. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  874. summary(model_caca)
  875. # ca n
  876. model_can <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  877. scale_subj_ca_n_cent + scale_subj_ca_n_cent*wave +
  878. scale_subj_ca_n_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  879. data = pfactor,
  880. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  881. summary(model_can)
  882. # ca rspltp
  883. model_carspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  884. scale_subj_ca_rspltp_cent + scale_subj_ca_rspltp_cent*wave +
  885. scale_subj_ca_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  886. data = pfactor,
  887. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  888. summary(model_carspltp)
  889. # ca smh
  890. model_casmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  891. scale_subj_ca_smh_cent + scale_subj_ca_smh_cent*wave +
  892. scale_subj_ca_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  893. data = pfactor,
  894. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  895. summary(model_casmh)
  896. # ca smm
  897. model_casmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  898. scale_subj_ca_smm_cent + scale_subj_ca_smm_cent*wave +
  899. scale_subj_ca_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  900. data = pfactor,
  901. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  902. summary(model_casmm)
  903. # ca vs
  904. model_cavs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  905. scale_subj_ca_vs_cent + scale_subj_ca_vs_cent*wave +
  906. scale_subj_ca_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  907. data = pfactor,
  908. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  909. summary(model_cavs)
  910. ##### N #####
  911. # n n
  912. model_nn <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  913. scale_subj_n_n_cent + scale_subj_n_n_cent*wave +
  914. scale_subj_n_n_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  915. data = pfactor,
  916. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  917. summary(model_nn)
  918. # n rspltp
  919. model_nrspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  920. scale_subj_n_rspltp_cent + scale_subj_n_rspltp_cent*wave +
  921. scale_subj_n_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  922. data = pfactor,
  923. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  924. summary(model_nrspltp)
  925. # n smh
  926. model_nsmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  927. scale_subj_n_smh_cent + scale_subj_n_smh_cent*wave +
  928. scale_subj_n_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  929. data = pfactor,
  930. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  931. summary(model_nsmh)
  932. # n smm
  933. model_nsmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  934. scale_subj_n_smm_cent + scale_subj_n_smm_cent*wave +
  935. scale_subj_n_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  936. data = pfactor,
  937. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  938. summary(model_nsmm)
  939. # n vs
  940. model_nvs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  941. scale_subj_n_vs_cent + scale_subj_n_vs_cent*wave +
  942. scale_subj_n_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  943. data = pfactor,
  944. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  945. summary(model_nvs)
  946. ##### RSPLTP #####
  947. # rspltp rspltp
  948. model_rspltprspltp <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  949. scale_subj_rspltp_rspltp_cent + scale_subj_rspltp_rspltp_cent*wave +
  950. scale_subj_rspltp_rspltp_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  951. data = pfactor,
  952. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  953. summary(model_rspltprspltp)
  954. # rspltp smh
  955. model_rspltpsmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  956. scale_subj_rspltp_smh_cent + scale_subj_rspltp_smh_cent*wave +
  957. scale_subj_rspltp_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  958. data = pfactor,
  959. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  960. summary(model_rspltpsmh)
  961. # rspltp smm
  962. model_rspltpsmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  963. scale_subj_rspltp_smm_cent + scale_subj_rspltp_smm_cent*wave +
  964. scale_subj_rspltp_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  965. data = pfactor,
  966. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  967. summary(model_rspltpsmm)
  968. # rspltp vs
  969. model_rspltpvs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  970. scale_subj_rspltp_vs_cent + scale_subj_rspltp_vs_cent*wave +
  971. scale_subj_rspltp_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  972. data = pfactor,
  973. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  974. summary(model_rspltpvs)
  975. ##### SMH #####
  976. # smh smh
  977. model_smhsmh <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  978. scale_subj_smh_smh_cent + scale_subj_smh_smh_cent*wave +
  979. scale_subj_smh_smh_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  980. data = pfactor,
  981. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  982. summary(model_smhsmh)
  983. # smh smm
  984. model_smhsmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  985. scale_subj_smh_smm_cent + scale_subj_smh_smm_cent*wave +
  986. scale_subj_smh_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  987. data = pfactor,
  988. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  989. summary(model_smhsmm)
  990. # smh vs
  991. model_smhvs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  992. scale_subj_smh_vs_cent + scale_subj_smh_vs_cent*wave +
  993. scale_subj_smh_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  994. data = pfactor,
  995. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  996. summary(model_smhvs)
  997. ##### SMM #####
  998. # smm smm
  999. model_smmsmm <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1000. scale_subj_smm_smm_cent + scale_subj_smm_smm_cent*wave +
  1001. scale_subj_smm_smm_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1002. data = pfactor,
  1003. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1004. summary(model_smmsmm)
  1005. # smm vs
  1006. model_smmvs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1007. scale_subj_smm_vs_cent + scale_subj_smm_vs_cent*wave +
  1008. scale_subj_smm_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1009. data = pfactor,
  1010. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1011. summary(model_smmvs)
  1012. #####VS #####
  1013. # vs vs
  1014. model_vsvs <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1015. scale_subj_vs_vs_cent + scale_subj_vs_vs_cent*wave +
  1016. scale_subj_vs_vs_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1017. data = pfactor,
  1018. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1019. summary(model_vsvs)
  1020. ##### LOOP FOR TABLE #####
  1021. ## MAIN EFFECTS
  1022. main_results <- list() # create empty list to attach values to in loop
  1023. for (v in 497:587) { # looping columns with scaled mean centered rsfc variables
  1024. var_name <- names(pfactor)[v] # creating list that will name variables based on loop
  1025. x <- pfactor[[v]] # assign loop variable static value to be used in the quadratic regression
  1026. model <- lmer(
  1027. scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1028. x + x*wave + x*I(wave^2) +
  1029. (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1030. data = pfactor,
  1031. control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5))
  1032. )
  1033. coefs <- summary(model)$coefficients # summary of all important coefficients from model
  1034. main_results[[var_name]] <- c(
  1035. Estimate = coefs[11, 1],
  1036. SE = coefs[11, 2],
  1037. p_value = coefs[11, 5]
  1038. )
  1039. }
  1040. # Convert to data frame
  1041. main_effects <- data.frame(
  1042. variable = names(main_results),
  1043. do.call(rbind, main_results),
  1044. row.names = NULL
  1045. )
  1046. # save csv for posterity
  1047. write.csv(main_effects, file = "main_effects_FINAL.csv")
  1048. # read in saved csv
  1049. main_effects <- read.csv("main_effects_FINAL.csv", header = TRUE)
  1050. # only run if reading in data
  1051. main_effects <- main_effects[-1]
  1052. # add "ME" to variable column (represents the main effect for specified model)
  1053. main_effects$variable <- paste("ME_", main_effects$variable)
  1054. # CALCULATE CONFIDENCE INTERVALS (95%)
  1055. main_effects$lower <- main_effects$Estimate - 1.96*main_effects$SE
  1056. main_effects$upper <- main_effects$Estimate + 1.96*main_effects$SE
  1057. ## INTERACTION EFFECTS
  1058. interaction_results <- list()
  1059. for (v in 497:587) {
  1060. var_name <- names(pfactor)[v]
  1061. x <- pfactor[[v]]
  1062. model <- lmer(
  1063. scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1064. x + x*wave + x*I(wave^2) +
  1065. (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1066. data = pfactor,
  1067. control = lmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 2e5))
  1068. )
  1069. coefs <- summary(model)$coefficients
  1070. interaction_results[[var_name]] <- c(
  1071. Estimate = coefs[13, 1],
  1072. SE = coefs[13, 2],
  1073. p_value = coefs[13, 5]
  1074. )
  1075. }
  1076. # Convert to data frame
  1077. interaction_effects <- data.frame(
  1078. variable = names(interaction_results),
  1079. do.call(rbind, interaction_results),
  1080. row.names = NULL
  1081. )
  1082. # save csv for posterity
  1083. write.csv(interaction_effects, file = "interaction_effects_FINAL.csv")
  1084. # read in saved csv
  1085. interaction_effects <- read.csv("interaction_effects_FINAL.csv", header = TRUE)
  1086. interaction_effects <- interaction_effects[-1]
  1087. # add "IE" to variable column (represents the interaction effect for specified model)
  1088. interaction_effects$variable <- paste("IE_", interaction_effects$variable)
  1089. # CALCULATE CONFIDENCE INTERVALS (95%)
  1090. interaction_effects$lower <- interaction_effects$Estimate - 1.96*interaction_effects$SE
  1091. interaction_effects$upper <- interaction_effects$Estimate + 1.96*interaction_effects$SE
  1092. ##### FDR CORRECTION #####
  1093. # merge into one big dataframe
  1094. results <- rbind(main_effects, interaction_effects)
  1095. # save csv for posterity
  1096. write.csv(results, file = "results_table_all_FINAL.csv")
  1097. ## FDR CORRECTION
  1098. ## first, FDR correcting for ALL analyses (all ME and IE)
  1099. results$adjp <- p.adjust(results$p_value, method = "BH")
  1100. sum(results$adjp<0.05) #4
  1101. write.csv(results, file = "results_FDR_all_FINAL.csv")
  1102. ## next, looking at the hypothesized and exploratory results independently
  1103. # first, selected only hypothesized vs exploratory rows and created two dataframes
  1104. hypot <- results%>%filter(grepl("dmn_dmn", variable) | grepl("dmn_fpn", variable) | grepl("dmn_sa", variable) |
  1105. grepl("dmn_van", variable) | grepl("dmn_dan", variable) | grepl("dmn_con", variable) |
  1106. grepl("fpn_fpn", variable) | grepl("fpn_sa", variable) |
  1107. grepl("fpn_van", variable) | grepl("fpn_dan", variable) | grepl("fpn_con", variable) |
  1108. grepl("sa_sa", variable) | grepl("sa_van", variable) | grepl("sa_dan", variable) | grepl("sa_con", variable) |
  1109. grepl("van_van", variable) | grepl("van_dan", variable) | grepl("van_con", variable) |
  1110. grepl("dan_dan", variable) | grepl("dan_con", variable) | grepl("con_con", variable))%>%select(variable, Estimate, SE, p_value, upper, lower)
  1111. explor <- results%>%filter(!grepl("dmn_dmn", variable) & !grepl("dmn_fpn", variable) & !grepl("dmn_sa", variable) &
  1112. !grepl("dmn_van", variable) & !grepl("dmn_dan", variable) & !grepl("dmn_con", variable) &
  1113. !grepl("fpn_fpn", variable) & !grepl("fpn_sa", variable) &
  1114. !grepl("fpn_van", variable) & !grepl("fpn_dan", variable) & !grepl("fpn_con", variable) &
  1115. !grepl("sa_sa", variable) & !grepl("sa_van", variable) & !grepl("sa_dan", variable) & !grepl("sa_con", variable) &
  1116. !grepl("van_van", variable) & !grepl("van_dan", variable) & !grepl("van_con", variable) &
  1117. !grepl("dan_dan", variable) & !grepl("dan_con", variable) & !grepl("con_con", variable))%>%select(variable, Estimate, SE, p_value, upper, lower)
  1118. write.csv(hypot, file = "results_table_hypot_FINAL.csv") # write csv for posterity
  1119. write.csv(explor, file = "results_table_explor_FINAL.csv")
  1120. # FDR CORRECTIONS BY HYPOTHESIZED ANALYSES AND EXPLORATORY ANALYSES
  1121. hypot$adjp <- p.adjust(hypot$p_value, method = "BH")
  1122. sum(hypot$adjp<0.05) #11
  1123. explor$adjp <- p.adjust(explor$p_value, method = "BH")
  1124. sum(explor$adjp<0.05) #0
  1125. write.csv(hypot, file = "results_FDR_hypot_FINAL.csv")
  1126. write.csv(explor, file = "results_FDR_explor_FINAL.csv")
  1127. ##### INTERACTION PLOTS FOR SIGNIFICANT FINDINGS #####
  1128. ### models with significant slope effects
  1129. ## DMN-VAN
  1130. dmnvan_plot <- interact_plot(model_dmnvan, pred = wave, modx = scale_subj_dmn_van_cent,
  1131. modx.values=c(-1,0,1), # -1SD, mean, +1SD
  1132. main.title = "DMN-VAN",
  1133. x.label = "Wave", y.label = "P Factor Scores",
  1134. line.thickness = 2, colors = c("red", "blue", "green")) + # change colors of lines
  1135. theme(legend.position="none",
  1136. axis.title = element_text(size = 18),
  1137. axis.text = element_text(size = 12),
  1138. plot.title = element_text(size = 24, hjust = .5),
  1139. panel.grid.major.x = element_line(color = "black", size = .5)) +
  1140. ylim(-.09, .12) # adjust y-axis to match with other plots
  1141. dmnvan_plot
  1142. emtrends(model_dmnvan, ~scale_subj_dmn_van_cent, var ="I(wave^2)", at=list(scale_subj_dmn_van_cent = c(-1, 0, 1)),
  1143. lmerTest.limit = 34774, delta.var = 0.001)
  1144. emtrends(model_dmnvan, ~scale_subj_dmn_van_cent, var ="I(wave^2)", at=list(scale_subj_dmn_van_cent = c(-1, 0, 1)),
  1145. lmerTest.limit = 34774, delta.var = 0.001)%>%test() #rerun wrapped in test() to get pvalues
  1146. ## VAN-DAN
  1147. vandan_plot <- interact_plot(model_vandan, pred = wave, modx = scale_subj_van_dan_cent,
  1148. modx.values=c(-1,0,1), # -1SD, mean, +1SD
  1149. main.title = "VAN-DAN",
  1150. x.label = "Wave", y.label = "P Factor Scores",
  1151. line.thickness = 2, colors = c("red", "blue", "green")) + # change colors of lines
  1152. theme(legend.position="none",
  1153. axis.title = element_text(size = 18),
  1154. axis.text = element_text(size = 12),
  1155. plot.title = element_text(size = 24, hjust = .5),
  1156. panel.grid.major.x = element_line(color = "black", size = .5)) +
  1157. ylim(-.09, .12) # adjust y-axis to match with other plots
  1158. vandan_plot
  1159. emtrends(model_vandan, ~scale_subj_van_dan_cent, var ="I(wave^2)", at=list(scale_subj_van_dan_cent = c(-1, 0, 1)),
  1160. lmerTest.limit = 34774, delta.var = 0.001)
  1161. emtrends(model_vandan, ~scale_subj_van_dan_cent, var ="I(wave^2)", at=list(scale_subj_van_dan_cent = c(-1, 0, 1)),
  1162. lmerTest.limit = 34774, delta.var = 0.001)%>%test() #rerun wrapped in test() to get pvalues
  1163. ## SN-CON
  1164. sacon_plot <- interact_plot(model_sacon, pred = wave, modx = scale_subj_sa_con_cent,
  1165. modx.values=c(-1,0,1), # -1SD, mean, +1SD
  1166. modx.labels = c("1 SD Below Mean","Mean","1 SD Above Mean"),
  1167. main.title = "SN-CON",
  1168. legend.main = "RSFC",
  1169. x.label = "Wave", y.label = "P Factor Scores",
  1170. line.thickness = 2, colors = c("red", "blue", "green")) + # change colors of lines
  1171. theme(legend.position="right",
  1172. axis.title = element_text(size = 18),
  1173. axis.text = element_text(size = 12),
  1174. plot.title = element_text(size = 24, hjust = .5),
  1175. panel.grid.major.x = element_line(color = "black", size = .5)) +
  1176. ylim(-.09, .12) # adjust y-axis to match with other plots
  1177. sacon_plot
  1178. emtrends(model_sacon, ~scale_subj_sa_con_cent, var ="I(wave^2)", at=list(scale_subj_sa_con_cent = c(-1, 0, 1)),
  1179. lmerTest.limit = 34774, delta.var = 0.001)
  1180. emtrends(model_sacon, ~scale_subj_sa_con_cent, var ="I(wave^2)", at=list(scale_subj_sa_con_cent = c(-1, 0, 1)),
  1181. lmerTest.limit = 34774, delta.var = 0.001)%>%test()
  1182. ## patchwork() PLOTS
  1183. dmnvan_plot + vancon_plot + sacon_plot
  1184. ##### DESCRIPTIVE STATS #####
  1185. ## read in wideform data (QA failed + site 22 + missing baseline p-factor scores removed; includes all siblings)
  1186. pfactor_wide <- read.csv("rsfc_p_jcppa_wide_FINAL.csv", header = TRUE)
  1187. desc <- pfactor_wide%>%select("src_subject_id", "interview_age", "sex_numeric", "race_ethnicity",
  1188. "demo_comb_income_v2", "p_fs_ho1", "p_fs_ho2", "p_fs_ho3", "p_fs_ho4",
  1189. 137:305, "rsfmri_meanmotion")
  1190. ## set missing values to NA
  1191. desc[desc == 777] <- NA
  1192. desc[desc == 999] <- NA
  1193. # df for no missing pfactor scores
  1194. desc_nomiss <- desc%>%filter(!is.na(p_fs_ho1))%>%filter(!is.na(p_fs_ho2))%>%filter(!is.na(p_fs_ho3))%>%filter(!is.na(p_fs_ho4))
  1195. # df for at least one missing pfactor score
  1196. desc_miss <- desc%>%filter(is.na(p_fs_ho1) | is.na(p_fs_ho2) | is.na(p_fs_ho3) | is.na(p_fs_ho4))
  1197. ### descriptives
  1198. # full sample
  1199. tab1 <- describe(desc) # descriptive means
  1200. table(desc$race_ethnicity) # count race data: White(1) = 5009; Black(2) = 1280; Hispanic(3) = 1889;
  1201. # Asian(4) = 186; Other(5) = 978; total n = 9344
  1202. table(desc$sex_numeric) # count sex data: M(0) = 4696; F(1) = 4658; total n = 9344
  1203. write.csv(tab1, "descriptives_full_FINAL.csv")
  1204. # no missing data
  1205. tab1_nomiss <- describe(desc_nomiss) # means
  1206. table(desc_nomiss$race_ethnicity) # count race data: White(1) = 4397; Black(2) = 903; Hispanic(3) = 1487;
  1207. # Asian(4) = 151; Other(5) = 805; total n = 7743
  1208. table(desc_nomiss$sex_numeric) # count sex data: M(0) = 3908; F(1) = 3835; total n = 7743
  1209. write.csv(tab1_nomiss, "descriptives_nomiss.csv")
  1210. # missing data
  1211. tab1_miss <- describe(desc_miss) # means
  1212. table(desc_miss$race_ethnicity) # count race data: White(1) = 612; Black(2) = 379; Hispanic(3) = 404;
  1213. # Asian(4) = 35; Other(5) = 173; total n = 1603
  1214. table(desc_miss$sex_numeric) # count sex data: M(0) = 790; F(1) = 815; total n = 1605
  1215. write.csv(tab1_miss, "descriptives_miss.csv")
  1216. ## t-tests
  1217. desc_miss$group <- "missing" # add group column
  1218. desc_nomiss$group <- "full" # add group column
  1219. ttest_df <- rbind(desc_miss, desc_nomiss) # combine dataframes with group variable
  1220. # create a loop
  1221. ttest_df$group <- as.factor(ttest_df$group)
  1222. ttest_result <- list() # create empty list for loop
  1223. for (i in 2:180){ # loop for each relevant variable
  1224. var_name <- names(ttest_df)[i] # copy variable name from df in loop
  1225. x <- ttest_df[[i]]
  1226. #t-test for each variable grouped between missing data or no missing data
  1227. ttest <- t.test(x ~ ttest_df$group)
  1228. coef<-ttest
  1229. ttest_result[[var_name]] <- c(
  1230. t_stat = coef[["statistic"]],
  1231. p_value = coef[["p.value"]])
  1232. }
  1233. # Convert to data frame
  1234. ttest_outcome <- data.frame(
  1235. variable = names(ttest_result),
  1236. do.call(rbind, ttest_result),
  1237. row.names = NULL)
  1238. ttest_result
  1239. # save output for table
  1240. write.csv(ttest_outcome, file = "ttest_outcomes.csv")
  1241. ## descriptive for medication variable
  1242. # read csv
  1243. desc_med <- read.csv("ttest_df_meds_JS.csv", header = TRUE)
  1244. desc_med <- desc_med%>%select(src_subject_id, meds_recode)
  1245. desc_med_df <- left_join(ttest_df, desc_med, by = "src_subject_id")
  1246. desc_med_df$group <- as.factor(desc_med_df$group)
  1247. t.test(meds_recode ~ group, data = desc_med_df)
  1248. # reduce med table to have fewer outputs to make easier to read .. just need med descriptives info for table
  1249. tab_med <- describe(desc_med_df)
  1250. table(desc_med_df$meds_recode)
  1251. desc_miss_med <- left_join(desc_miss, desc_med, by = "src_subject_id")
  1252. tab_med_miss <- describe(desc_miss_med)
  1253. table(desc_miss_med$meds_recode)
  1254. desc_nomiss_med <- left_join(desc_nomiss, desc_med, by = "src_subject_id")
  1255. tab_med_nomiss <- describe(desc_nomiss_med)
  1256. table(desc_nomiss_med$meds_recode)
  1257. ## CHI SQUARE
  1258. desc$group <- ifelse(!is.na(desc$p_fs_ho1) & !is.na(desc$p_fs_ho2) & !is.na(desc$p_fs_ho3) & !is.na(desc$p_fs_ho4), "full", "miss")
  1259. sex_chi <- desc%>%select(sex_numeric, group)
  1260. sex_table <- table(sex_chi$sex_numeric, sex_chi$group)
  1261. print(sex_table)
  1262. chisq.test(sex_table)
  1263. eth_chi <- desc%>%select(race_ethnicity, group)
  1264. eth_table <- table(eth_chi$race_ethnicity, eth_chi$group)
  1265. white_chi <- eth_chi%>%filter(race_ethnicity == 1)
  1266. white_table <- table(white_chi$race_ethnicity, white_chi$group)
  1267. chisq.test(white_table)
  1268. black_chi <- eth_chi%>%filter(race_ethnicity == 2)
  1269. black_table <- table(black_chi$race_ethnicity, black_chi$group)
  1270. chisq.test(black_table)
  1271. his_chi <- eth_chi%>%filter(race_ethnicity == 3)
  1272. his_table <- table(his_chi$race_ethnicity, his_chi$group)
  1273. chisq.test(his_table)
  1274. asian_chi <- eth_chi%>%filter(race_ethnicity == 4)
  1275. asian_table <- table(asian_chi$race_ethnicity, asian_chi$group)
  1276. chisq.test(asian_table)
  1277. other_chi <- eth_chi%>%filter(race_ethnicity == 5)
  1278. other_table <- table(other_chi$race_ethnicity, other_chi$group)
  1279. chisq.test(other_table)
  1280. ##### CHORD DIAGRAM ##########
  1281. # first, use code above to run & store models in R environment
  1282. ## HYPOTHESIZED MODELS
  1283. # use broom.mixed::tidy to save model outputs to dataframe
  1284. df_dmndmn <- tidy(model_dmndmn, conf.int = TRUE, conf.level = 0.95)
  1285. df_dmnfpn <- tidy(model_dmnfpn, conf.int = TRUE, conf.level = 0.95)
  1286. df_dmnsa <- tidy(model_dmnsa, conf.int = TRUE, conf.level = 0.95)
  1287. df_dmnvan <- tidy(model_dmnvan, conf.int = TRUE, conf.level = 0.95)
  1288. df_dmndan <- tidy(model_dmndan, conf.int = TRUE, conf.level = 0.95)
  1289. df_dmncon <- tidy(model_dmncon, conf.int = TRUE, conf.level = 0.95)
  1290. df_fpnfpn <- tidy(model_fpnfpn, conf.int = TRUE, conf.level = 0.95)
  1291. df_fpnsa <- tidy(model_fpnsa, conf.int = TRUE, conf.level = 0.95)
  1292. df_fpnvan <- tidy(model_fpnvan, conf.int = TRUE, conf.level = 0.95)
  1293. df_fpndan <- tidy(model_fpndan, conf.int = TRUE, conf.level = 0.95)
  1294. df_fpncon <- tidy(model_fpncon, conf.int = TRUE, conf.level = 0.95)
  1295. df_sasa <- tidy(model_sasa, conf.int = TRUE, conf.level = 0.95)
  1296. df_savan <- tidy(model_savan, conf.int = TRUE, conf.level = 0.95)
  1297. df_sadan <- tidy(model_sadan, conf.int = TRUE, conf.level = 0.95)
  1298. df_sacon <- tidy(model_sacon, conf.int = TRUE, conf.level = 0.95)
  1299. df_vanvan <- tidy(model_vanvan, conf.int = TRUE, conf.level = 0.95)
  1300. df_vandan <- tidy(model_vandan, conf.int = TRUE, conf.level = 0.95)
  1301. df_vancon <- tidy(model_vancon, conf.int = TRUE, conf.level = 0.95)
  1302. df_dandan <- tidy(model_dandan, conf.int = TRUE, conf.level = 0.95)
  1303. df_dancon <- tidy(model_dancon, conf.int = TRUE, conf.level = 0.95)
  1304. df_concon <- tidy(model_concon, conf.int = TRUE, conf.level = 0.95)
  1305. # slope effects in one dataframe
  1306. chord_hypot <- rbind(df_dmndmn, df_dmnfpn, df_dmnsa, df_dmnvan, df_dmndan, df_dmncon,
  1307. df_fpnfpn, df_fpnsa, df_fpnvan, df_fpndan, df_fpncon,
  1308. df_sasa, df_savan, df_sadan, df_sacon,
  1309. df_vanvan, df_vandan, df_vancon,
  1310. df_dandan, df_dancon,
  1311. df_concon)%>%
  1312. filter(grepl("I", term) & grepl("scale_subj", term))%>%
  1313. select(term, estimate)
  1314. # intercept effects in one dataframe
  1315. chord_hypot_int <- rbind(df_dmndmn, df_dmnfpn, df_dmnsa, df_dmnvan, df_dmndan, df_dmncon,
  1316. df_fpnfpn, df_fpnsa, df_fpnvan, df_fpndan, df_fpncon,
  1317. df_sasa, df_savan, df_sadan, df_sacon,
  1318. df_vanvan, df_vandan, df_vancon,
  1319. df_dandan, df_dancon,
  1320. df_concon)%>%
  1321. filter(!grepl("I", term) & !grepl("wave:scale", term) & grepl("scale_subj", term))%>%
  1322. select(term, estimate)
  1323. # create network labels for chord diagram
  1324. net1 <- c("DMN", "DMN", "DMN", "DMN", "DMN", "DMN",
  1325. "FPN", "FPN", "FPN", "FPN", "FPN",
  1326. "SN", "SN", "SN", "SN",
  1327. "VAN", "VAN", "VAN",
  1328. "DAN", "DAN", "CON")
  1329. net2 <- c("DMN", "FPN", "SN", "VAN", "DAN", "CON",
  1330. "FPN", "SN", "VAN", "DAN", "CON",
  1331. "SN", "VAN", "DAN", "CON",
  1332. "VAN", "DAN", "CON",
  1333. "DAN", "CON", "CON")
  1334. chord_hypot <-cbind(net1, net2, chord_hypot)
  1335. chord_hypot_int <-cbind(net1, net2, chord_hypot_int)
  1336. # check that network labels match term value, then remove extra term column
  1337. chord_hypot <- chord_hypot%>%select(c(-3))
  1338. chord_hypot_int <- chord_hypot_int%>%select(c(-3))
  1339. ## create chord diagram
  1340. col_fun_hypot = colorRamp2(c(-0.01, 0, 0.01), c("#3B75E9", "white", "#BF4146"))
  1341. chord_wd <- data.frame(c("DMN", "VAN", "SN"), c("VAN", "DAN", "CON"), c(3, 3, 3))
  1342. chord_ty <- data.frame(c("DMN", "VAN", "SN"), c("VAN", "DAN", "CON"), c(2, 2, 2))
  1343. chord_border <- data.frame(c("DMN", "VAN", "SN"), c("VAN", "DAN", "CON"), c(1, 1, 1))
  1344. chord_wd_int <- data.frame(c("DMN", "DMN", "DMN", "DMN", "SN", "VAN", "VAN", "DAN"), c("DMN", "VAN", "DAN", "CON", "CON", "DAN", "CON", "DAN"), c(3, 3, 3, 3, 3, 3, 3, 3))
  1345. chord_ty_int <- data.frame(c("DMN", "DMN", "DMN", "DMN", "SN", "VAN", "VAN", "DAN"), c("DMN", "VAN", "DAN", "CON", "CON", "DAN", "CON", "DAN"), c(2, 2, 2, 2, 2, 2, 2, 2))
  1346. chord_border_int <- data.frame(c("DMN", "DMN", "DMN", "DMN", "SN", "VAN", "VAN", "DAN"), c("DMN", "VAN", "DAN", "CON", "CON", "DAN", "CON", "DAN"), c(1, 1, 1, 1, 1, 1, 1, 1))
  1347. chordDiagram(chord_hypot,
  1348. annotationTrack = c("name", "grid"),
  1349. grid.col = "darkgrey", col = col_fun_hypot,
  1350. link.lty = chord_ty, link.lwd = chord_wd, link.border = chord_border,
  1351. link.zindex = rank(chord_hypot$estimate), transparency = 0.25)
  1352. title("Slope Effects")
  1353. chordDiagram(chord_hypot_int,
  1354. annotationTrack = c("name", "grid"),
  1355. grid.col = "darkgrey", col = col_fun_hypot,
  1356. link.lty = chord_ty_int, link.lwd = chord_wd_int, link.border = chord_border_int,
  1357. link.zindex = rank(chord_hypot_int$estimate), transparency = 0.25)
  1358. title("Intercept Effects")
  1359. ##### GLHT TESTS #####
  1360. # dmn dmn
  1361. confint(model_dmndmn, level = 0.95, method = "Wald")
  1362. w1 <- c(0,0,0,0,0,0,0,0,0,0,1,0,1)
  1363. w2 <- c(0,0,0,0,0,0,0,0,0,0,1,0,2)
  1364. w3 <- c(0,0,0,0,0,0,0,0,0,0,1,0,3)
  1365. dmndmn_glht <- glht(model_dmndmn, linfct = rbind(w1, w2, w3))
  1366. summary(dmndmn_glht, test=adjusted('none'))
  1367. confint(dmndmn_glht, level = 0.95)
  1368. # dmn van
  1369. confint(model_dmnvan, level = 0.95, method = "Wald")
  1370. w1 <- c(0,0,0,0,0,0,0,0,0,0,1,0,1)
  1371. w2 <- c(0,0,0,0,0,0,0,0,0,0,1,0,2)
  1372. w3 <- c(0,0,0,0,0,0,0,0,0,0,1,0,3)
  1373. dmnvan_glht <- glht(model_dmnvan, linfct = rbind(w1, w2, w3))
  1374. summary(dmnvan_glht, test=adjusted('none'))
  1375. confint(dmnvan_glht, level = 0.95)
  1376. # dmn dan
  1377. confint(model_dmndan, level = 0.95, method = "Wald")
  1378. w1 <- c(0,0,0,0,0,0,0,0,0,0,1,0,1)
  1379. w2 <- c(0,0,0,0,0,0,0,0,0,0,1,0,2)
  1380. w3 <- c(0,0,0,0,0,0,0,0,0,0,1,0,3)
  1381. dmndan_glht <- glht(model_dmndan, linfct = rbind(w1, w2, w3))
  1382. summary(dmndan_glht, test=adjusted('none'))
  1383. confint(dmndan_glht, level = 0.95)
  1384. # dmn con
  1385. confint(model_dmncon, level = 0.95, method = "Wald")
  1386. w1 <- c(0,0,0,0,0,0,0,0,0,0,1,0,1)
  1387. w2 <- c(0,0,0,0,0,0,0,0,0,0,1,0,2)
  1388. w3 <- c(0,0,0,0,0,0,0,0,0,0,1,0,3)
  1389. dmncon_glht <- glht(model_dmncon, linfct = rbind(w1, w2, w3))
  1390. summary(dmncon_glht, test=adjusted('none'))
  1391. confint(dmncon_glht, level = 0.95)
  1392. # sn con
  1393. confint(model_sacon, level = 0.95, method = "Wald")
  1394. w1 <- c(0,0,0,0,0,0,0,0,0,0,1,0,1)
  1395. w2 <- c(0,0,0,0,0,0,0,0,0,0,1,0,2)
  1396. w3 <- c(0,0,0,0,0,0,0,0,0,0,1,0,3)
  1397. sacon_glht <- glht(model_sacon, linfct = rbind(w1, w2, w3))
  1398. summary(sacon_glht, test=adjusted('none'))
  1399. confint(sacon_glht, level = 0.95)
  1400. # van dan
  1401. confint(model_vandan, level = 0.95, method = "Wald")
  1402. w1 <- c(0,0,0,0,0,0,0,0,0,0,1,0,1)
  1403. w2 <- c(0,0,0,0,0,0,0,0,0,0,1,0,2)
  1404. w3 <- c(0,0,0,0,0,0,0,0,0,0,1,0,3)
  1405. vandan_glht <- glht(model_vandan, linfct = rbind(w1, w2, w3))
  1406. summary(vandan_glht, test=adjusted('none'))
  1407. confint(vandan_glht, level = 0.95)
  1408. # van con
  1409. confint(model_vancon, level = 0.95, method = "Wald")
  1410. w1 <- c(0,0,0,0,0,0,0,0,0,0,1,0,1)
  1411. w2 <- c(0,0,0,0,0,0,0,0,0,0,1,0,2)
  1412. w3 <- c(0,0,0,0,0,0,0,0,0,0,1,0,3)
  1413. vancon_glht <- glht(model_vancon, linfct = rbind(w1, w2, w3))
  1414. summary(vancon_glht, test=adjusted('none'))
  1415. confint(vancon_glht, level = 0.95)
  1416. # dan dan
  1417. confint(model_dandan, level = 0.95, method = "Wald")
  1418. w1 <- c(0,0,0,0,0,0,0,0,0,0,1,0,1)
  1419. w2 <- c(0,0,0,0,0,0,0,0,0,0,1,0,2)
  1420. w3 <- c(0,0,0,0,0,0,0,0,0,0,1,0,3)
  1421. dandan_glht <- glht(model_dandan, linfct = rbind(w1, w2, w3))
  1422. summary(dandan_glht, test=adjusted('none'))
  1423. confint(dandan_glht, level = 0.95)
  1424. ##### SENSITIVITY ANALYESES #####
  1425. ### MEDICATION
  1426. # dmn dmn
  1427. model_dmndmn_meds <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1428. meds_recode + scale_subj_dmn_dmn_cent + scale_subj_dmn_dmn_cent*wave +
  1429. scale_subj_dmn_dmn_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1430. data = pfactor,
  1431. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1432. summary(model_dmndmn_meds)
  1433. # dmn van
  1434. model_dmnvan_meds <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1435. meds_recode + scale_subj_dmn_van_cent + scale_subj_dmn_van_cent*wave +
  1436. scale_subj_dmn_van_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1437. data = pfactor,
  1438. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1439. summary(model_dmnvan_meds)
  1440. # dmn dan
  1441. model_dmndan_meds <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1442. scale_subj_dmn_dan_cent + scale_subj_dmn_dan_cent*wave +
  1443. scale_subj_dmn_dan_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1444. data = pfactor,
  1445. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1446. summary(model_dmndan_meds)
  1447. # dmn con
  1448. model_dmncon_meds <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1449. meds_recode + scale_subj_dmn_con_cent + scale_subj_dmn_con_cent*wave +
  1450. scale_subj_dmn_con_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1451. data = pfactor,
  1452. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1453. summary(model_dmncon_meds)
  1454. # sa con
  1455. model_sacon_meds <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1456. meds_recode + scale_subj_sa_con_cent + scale_subj_sa_con_cent*wave +
  1457. scale_subj_sa_con_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1458. data = pfactor,
  1459. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1460. summary(model_sacon_meds)
  1461. # van dan
  1462. model_vandan_meds <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1463. meds_recode + scale_subj_van_dan_cent + scale_subj_van_dan_cent*wave +
  1464. scale_subj_van_dan_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1465. data = pfactor,
  1466. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1467. summary(model_vandan_meds)
  1468. # van con
  1469. model_vancon_meds <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1470. meds_recode + scale_subj_van_con_cent + scale_subj_van_con_cent*wave +
  1471. scale_subj_van_con_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1472. data = pfactor,
  1473. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1474. summary(model_vancon_meds)
  1475. # dan dan
  1476. model_dandan_meds <- lmer(scalep ~ wave + I(wave^2) + sex_numeric + interview_age + Achieva + Discovery + Ingenia + Prisma + rsfmri_meanmotion +
  1477. meds_recode + scale_subj_dan_dan_cent + scale_subj_dan_dan_cent*wave +
  1478. scale_subj_dan_dan_cent*I(wave^2) + (1|site_id) + (1|rel_family_id) + (1 + wave + I(wave^2)|id),
  1479. data = pfactor,
  1480. control=lmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5)))
  1481. summary(model_dandan_meds)
  1482. ## MOTION AND MISSINGNESS
  1483. # GRH added for sensitivity #
  1484. #Removes for motion >= 0.2
  1485. pfactor <- pfactor%>%filter(rsfmri_meanmotion < 0.2)
  1486. ## rerun models with new dataframe
  1487. #Groups by ID, then filters any who are missing p on waves 2 3 or 4
  1488. #We lose ~ 1084
  1489. pfactor2 <- pfactor%>%
  1490. group_by(src_subject_id) %>%
  1491. filter(any(wave == 1) &
  1492. (any(wave == 2 & !is.na(P)) |
  1493. any(wave == 3 & !is.na(P)) |
  1494. any(wave == 4 & !is.na(P)))) %>%
  1495. ungroup()
  1496. ## rerun models with new dataframe

rsfc_p_JCPPA_analyses.R at commit 882ad37, no license · at the source

Overview

Authors: Jenna Jones Devine1, Garrett R. Hosterman1, Jolee Sloss1, Adrienne L. Romer1
  1. Department of Psychology Virginia Polytechnic Institute and State University Blacksburg Virginia USA
Institutions: Virginia Tech (United States)
Journal: JCPP advances, article e70135
Dates: received 12 September 2025; accepted 24 April 2026; published online 30 May 2026; in print May 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1002/jcv2.70135 · PMID 42416655 · PMCID PMC13339399 · OpenAlex W7162869792
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: fMRI (modality), human (organism), developmental (subfield)
Methods: Connectivity, Statistics, fMRI & imaging
Keywords: adolescence, general psychopathology, longitudinal, p‐factor, resting‐state functional connectivity, transdiagnostic
Topic: Functional Brain Connectivity Studies (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Citations: cited by 2 papers (Europe PMC); 68 references in the paper

Abstract

Background: A general psychopathology “p‐factor” captures shared variation across psychiatric disorder categories and is associated with dysfunctions in cognitive control. Alterations in resting‐state functional connectivity (RSFC) of cognitive and attentional networks have been associated concurrently with the p‐factor in youth samples. However, we do not yet know whether these RSFC alterations prospectively relate to change in the p‐factor over time during the transition to adolescence, when many forms of disorder onset or worsen.

Methods: We examined whether baseline RSFC was prospectively related to the trajectory of p‐factor scores over three years in 9344 preadolescents (age 9–10 at baseline) from the Adolescent Brain Cognitive Development Adolescent Brain Cognitive DevelopmentSM (ABCD) study. Using longitudinal multilevel modeling, we tested whether baseline within‐ and between‐network RSFC of the default mode (DMN), frontoparietal (FPN), salience (SN), cingulo‐opercular (CON), and ventral and dorsal attention (VAN and DAN) networks were related to the intercept (between‐person differences) and slope (within‐person rate of change) of p‐factor scores over four ABCD study waves (3‐year timeframe).

Results: There was a significant nonlinear, quadratic trajectory of p‐factor scores over wave. Lower within‐DMN and within‐DAN connectivity and greater DMN‐DAN, DMN‐CON, and VAN‐CON connectivity were associated with higher between‐person levels of p‐factor scores, which persisted over time. Greater VAN‐DAN and SN‐CON connectivity and lower DMN‐VAN connectivity were prospectively associated with steeper within‐person rates of quadratic change in p‐factor scores over time.

Conclusion: These novel results identify specific alterations in RSFC within and between core networks involved in self‐referential processing, bottom‐up and town‐down attention, salience, and cognitive control that might contribute to general psychopathology development in early adolescence. Children with aberrant connectivity between the DMN and VAN, SN and CON, and VAN and DAN networks may be vulnerable to increases in general psychopathology during the transition to adolescence.

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 7 matches between paragraphs and lines of code.

Ageyr13/ABCD_RSFC_MLM

License: none: the authors keep all their rights
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: 882ad37565b38cda2bcfa92c365ed62a9890adc6, 10 September 2025
Languages: R (2)
Size: 3 files, 2 scripts
Software Heritage: not archived
Found in: the text, “Longitudinal multilevel modeling”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: tidyverse (2 files), broom (1 file), circlize (1 file), easystats (1 file), emmeans (1 file), ggplot2 (1 file), lme4 (1 file), lmerTest (1 file), patchwork (1 file), psych (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
2 files

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;
  • 2 scripts, each with its path and the digest of its content;
  • 7 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 statement

The data that support the findings of this study are openly available in NIMH Data Archive at http://dx.doi.org/10.15154/z563‐zd24 (http://dx.doi.org/10.15154/z563-zd24), reference number 2313.

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 1, 28 September 2026: the first record

Recorded: type, language, journal, pages, dates, 4 authors, 6 keywords, 2 funders, 68 references.

Cite

This paper

Devine, J. J., Hosterman, G. R., Sloss, J., & Romer, A. L. (2026). Alterations in resting-state functional connectivity relate to psychopathology trajectories during emerging adolescence. JCPP advances, e70135. https://doi.org/10.1002/jcv2.70135

BibTeX

@article{devine2026alterations,
author = {Devine, Jenna Jones and Hosterman, Garrett R. and Sloss, Jolee and Romer, Adrienne L.},
title = {{Alterations in resting-state functional connectivity relate to psychopathology trajectories during emerging adolescence}},
journal = {JCPP advances},
year = {2026},
month = may,
pages = {e70135},
publisher = {Wiley},
issn = {2692-9384},
doi = {10.1002/jcv2.70135},
url = {https://doi.org/10.1002/jcv2.70135},
pmid = {42416655},
pmcid = {PMC13339399}
}

RIS

TY - JOUR
AU - Devine, Jenna Jones
AU - Hosterman, Garrett R.
AU - Sloss, Jolee
AU - Romer, Adrienne L.
TI - Alterations in resting-state functional connectivity relate to psychopathology trajectories during emerging adolescence
T2 - JCPP advances
J2 - JCPP Adv
PY - 2026
DA - 2026/05/30
SP - e70135
SN - 2692-9384
PB - Wiley
DO - 10.1002/jcv2.70135
UR - https://doi.org/10.1002/jcv2.70135
LA - en
ER -

CSL-JSON

{
"id": "10.1002/jcv2.70135",
"type": "article-journal",
"title": "Alterations in resting-state functional connectivity relate to psychopathology trajectories during emerging adolescence",
"container-title": "JCPP advances",
"author": [
{
"family": "Devine",
"given": "Jenna Jones"
},
{
"family": "Hosterman",
"given": "Garrett R."
},
{
"family": "Sloss",
"given": "Jolee"
},
{
"family": "Romer",
"given": "Adrienne L."
}
],
"container-title-short": "JCPP Adv",
"page": "e70135",
"DOI": "10.1002/jcv2.70135",
"PMID": "42416655",
"PMCID": "PMC13339399",
"ISSN": "2692-9384",
"publisher": "Wiley",
"URL": "https://doi.org/10.1002/jcv2.70135",
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
30
]
]
}
}

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/s41467-026-73072-6 [code]
Mapping the spatiotemporal continuum of structural connectivity development across the human connectome in youth.
Journal: Nature communications
In common: psych, easystats, lmerTest, 4 other tools, developmental, 7 references
[2] doi:10.1016/j.bpsgos.2026.100799 [code]
Distinct Representations of Irrelevant Emotional Information in the Visual Network Are Associated With Psychopathology in Youth.
Journal: Biological psychiatry global open science
In common: lmerTest, lme4, tidyverse, 9 references
[3] doi:10.1016/j.ynirp.2026.100366 [code]
Lower resting-state functional connectivity between frontoparietal and sensory networks is associated with recent pain intensity in a community sample of youth.
Journal: Neuroimage. Reports
In common: psych, broom, lmerTest, 3 other tools, fMRI, 5 references
[4] doi:10.1038/s41398-026-04010-9 [code]
Bullying victimization and brain development: a longitudinal structural magnetic resonance imaging study from adolescence to early adulthood.
Journal: Translational psychiatry
In common: psych, easystats, broom, 6 other tools, developmental
[5] doi:10.1038/s41467-026-74565-0 [code]
The functional neurobiology of dispositions towards negative emotions.
Journal: Nature communications
In common: psych, easystats, lme4, 2 other tools, 5 references
[6] doi:10.1073/pnas.2603114123 [code]
The human hippocampus can pattern separate memories by meaning.
Journal: Proceedings of the National Academy of Sciences of the United States of America
In common: psych, easystats, broom, 6 other tools
[7] doi:10.1073/pnas.2606871123 [code]
Oxytocin modulates the neurocomputational mechanisms engaged in learning rank relationships in social networks.
Journal: Proceedings of the National Academy of Sciences of the United States of America
In common: psych, easystats, broom, 6 other tools
[8] doi:10.1038/s41467-026-71415-x [code]
Regional BOLD variability reflects microstructural maturation and neuronal ensheathment in the preterm infant cortex.
Journal: Nature communications
In common: psych, easystats, broom, 5 other tools, developmental, fMRI
[9] doi:10.1111/jcpp.70178 [code]
What makes a lonely child: environmental, health, and multimodal neuroimaging correlates of prospective loneliness in the ABCD study.
Journal: Journal of child psychology and psychiatry, and allied disciplines
In common: easystats, circlize, lme4, 3 other tools, 4 references
[10] doi:10.1016/j.neuroimage.2026.122115 [code]
Midfrontal theta power relates to response speeding following frustrative nonreward.
Journal: NeuroImage
In common: psych, easystats, emmeans, 5 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.