library(pacman); p_load(lavaan, psych)

data <- read.csv("NPSIQ.csv")

FITM <- c("chisq", "df", "nPar", "cfi", "rmsea", "rmsea.ci.lower", "rmsea.ci.upper", "aic", "bic")

describe(data)

Rationale

Schubert et al. (2022) assessed the relationship between the latent general factor of the latencies of event-related potentials (ERP) assessed during the administration of different elementary cognitive tasks and the latent general factor of the short version of the Berlin Intelligence Structure Test (BIS). Short versions of tests measure the same constructs as long-form versions. Valerius & Sparfeldt (2014) found the full version of the BIS measured the same g as the German Cognitive Ability Test (CogAT; r = 0.92) and the Cattell Culture Fair Test plus Raven’s Matrices (r = 0.99). Incidentally, the Cattell Culture Fair Test measures in common with the Sternberg Triarchic Abilities Test (Brody, 2003a, 2003b) and the Sternberg Triarchic Abilities Test is within the nomothetic network centered around g (Koke & Vernon, 2003). The Cattell Culture Fair Test without Raven’s Matrices also produced a g factor that was correlated at 0.88 with the g factor from the Test Battery of the Royal Dutch Navy, 0.79 with the Twents Instituut voor Bedrijfspsycologie’s (i.e., Factored Aptitude Series’) g, 0.77 with the g from the General Aptitude Test Battery, and 0.96 with the g from the Groninger Intelligence Test (Johnson, te Nijenhuis & Bouchard, 2008). This network of intercorrelations can be extended to other tests all day, but needless to say, the test used by Schubert et al. is a sufficiently valid measure of general intelligence, because the world of intelligence tests of large, but despite efforts to the contrary, their domain is small.

Schubert et al. presented what looks to be an incredibly interesting domain extension: an assessment of the degree to which intelligence, measured moderately-well, is measured by ERP measures. Their point for their analysis was to conduct a multiverse analysis of features to assess their impacts on the consistency of ERP component associations with intelligence. But the feature analysis wasn’t the most interesting part. The most interesting part was a little note underneath Figure 3 that read

Correlations for EEG data filtered with a 32 Hz low-pass filter are not shown because the variance of the latent ERP variable was not significant.

In other words, a general ERP factor was perfectly (anti)correlated with the g factor from an intelligence test. That is what’s implied when the variance drops to zero in the model they used (see Figure 1). Choosing not to present that result is odd because it is a very meaningful result, and it’s justifiable. In fact, because the sampling rate in their analysis was 1000 Hz (and thus the Nyquist frequency was 500/333 Hz), their choice to omit results with a low-pass filter at 32 Hz is strange. Sure, phase locking cannot be guaranteed, but they were probably still well-powered for a filter at ten times their cap. I am not sure why they chose to only present and discuss results for 8 and 16 Hz, truncating most of the available variance. Curiously, they did find that the latency reliabilities at these thresholds were 0.52 (SD = 17, 8 Hz), 0.45 (0.16, 16), and 0.48 (0.18, 32). There was no good reason to not present results at 32 Hz.

The number of offline references was just two: linked mastoid (LM) and average reference (AR). If I had to rank difference references, I would go REST > AR > LM, since REST has the best evidence that it just works the best, AR seems to produce results that are more comparable to REST in most cases I’ve seen, and LM produces results with a relatively muted signal. But this can be good if it promotes reliability. Since LM and AR were presented, they’re all we have to work with. In this data, it seems there’s some case for LM results to be preferred, since they were a bit more reliable (0.57, SD = 0.18) than AR ones (0.41, 0.13). But I do not want to sound like I’m conflating reliability with construct validity or relevance. Ideally, I would like to see cortical source estimates, but that’s hard to come by. For more on reference choices, I’d read Yang et al. (2017), Dong et al. (2019), and Yao et al. (2019). They’re linked in the references.

Here, I wish to avoid the multiverse results and just look at the outputs of Schubert et al.’s models, with a specific focus on the 32 Hz results, since those are valid and not nearly as restricted as the 8 and 16 Hz results. They’re more likely to give a “true” estimate of the relationship between intelligence and whatever this ERP-g is.

Analysis

The below code is their own, with fits to follow. All models they fit are presented, with a break between models that control and do not control for age. As they noted, controlling for age had a minimal effect on their results, but I want to show all the model fits anyway.

## SEM: Average reference, 8 Hz low-pass filter, peak latency ----

model_avg_8Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_8Hz_avg + 1*zCRT_P2_PL_8Hz_avg + 1*zSternberg_P2_PL_8Hz_avg",
  "N2 =~ 1*zPosner_N2_PL_8Hz_avg + 1*zCRT_N2_PL_8Hz_avg + 1*zSternberg_N2_PL_8Hz_avg",
  "P3 =~ 1*zPosner_P3_PL_8Hz_avg + 1*zCRT_P3_PL_8Hz_avg + 1*zSternberg_P3_PL_8Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_PL_8Hz_avg + 1*zPosner_N2_PL_8Hz_avg + 1*zPosner_P3_PL_8Hz_avg",
  "CRT =~ 1*zCRT_P2_PL_8Hz_avg + 1*zCRT_N2_PL_8Hz_avg + 1*zCRT_P3_PL_8Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_PL_8Hz_avg + 1*zSternberg_N2_PL_8Hz_avg + 1*zSternberg_P3_PL_8Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_8Hz_avg ~ 0",
  "zPosner_N2_PL_8Hz_avg ~ 0",
  "zPosner_P3_PL_8Hz_avg ~ 0",
  "zCRT_P2_PL_8Hz_avg ~ 0",
  "zCRT_N2_PL_8Hz_avg ~ 0",
  "zCRT_P3_PL_8Hz_avg ~ 0",
  "zSternberg_P2_PL_8Hz_avg ~ 0",
  "zSternberg_N2_PL_8Hz_avg ~ 0",
  "zSternberg_P3_PL_8Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_8Hz_avg ~~ v_P_P2*zPosner_P2_PL_8Hz_avg",
  "zPosner_N2_PL_8Hz_avg ~~ v_P_N2*zPosner_N2_PL_8Hz_avg",
  "zPosner_P3_PL_8Hz_avg~~ v_P_P3*zPosner_P3_PL_8Hz_avg",
  "zCRT_P2_PL_8Hz_avg ~~ v_C_P2*zCRT_P2_PL_8Hz_avg",
  "zCRT_N2_PL_8Hz_avg ~~ v_C_N2*zCRT_N2_PL_8Hz_avg",
  "zCRT_P3_PL_8Hz_avg ~~ v_C_P3*zCRT_P3_PL_8Hz_avg",
  "zSternberg_P2_PL_8Hz_avg ~~ v_S_P2*zSternberg_P2_PL_8Hz_avg",
  "zSternberg_N2_PL_8Hz_avg ~~ v_S_N2*zSternberg_N2_PL_8Hz_avg",
  "zSternberg_P3_PL_8Hz_avg ~~ v_S_P3*zSternberg_P3_PL_8Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_8Hz_PL <- sem(model_avg_8Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)
## Warning in lav_data_full(data = data, group = group, cluster = cluster, : lavaan WARNING: some cases are empty and will be ignored:
##   148
## SEM: Average reference, 8 Hz low-pass filter, 50 % FA latency ----

model_avg_8Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_8Hz_avg + 1*zCRT_P2_FA_8Hz_avg + 1*zSternberg_P2_FA_8Hz_avg",
  "N2 =~ 1*zPosner_N2_FA_8Hz_avg + 1*zCRT_N2_FA_8Hz_avg + 1*zSternberg_N2_FA_8Hz_avg",
  "P3 =~ 1*zPosner_P3_FA_8Hz_avg + 1*zCRT_P3_FA_8Hz_avg + 1*zSternberg_P3_FA_8Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_FA_8Hz_avg + 1*zPosner_N2_FA_8Hz_avg + 1*zPosner_P3_FA_8Hz_avg",
  "CRT =~ 1*zCRT_P2_FA_8Hz_avg + 1*zCRT_N2_FA_8Hz_avg + 1*zCRT_P3_FA_8Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_FA_8Hz_avg + 1*zSternberg_N2_FA_8Hz_avg + 1*zSternberg_P3_FA_8Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_8Hz_avg ~ 0",
  "zPosner_N2_FA_8Hz_avg ~ 0",
  "zPosner_P3_FA_8Hz_avg ~ 0",
  "zCRT_P2_FA_8Hz_avg ~ 0",
  "zCRT_N2_FA_8Hz_avg ~ 0",
  "zCRT_P3_FA_8Hz_avg ~ 0",
  "zSternberg_P2_FA_8Hz_avg ~ 0",
  "zSternberg_N2_FA_8Hz_avg ~ 0",
  "zSternberg_P3_FA_8Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_8Hz_avg ~~ v_P_P2*zPosner_P2_FA_8Hz_avg",
  "zPosner_N2_FA_8Hz_avg ~~ v_P_N2*zPosner_N2_FA_8Hz_avg",
  "zPosner_P3_FA_8Hz_avg~~ v_P_P3*zPosner_P3_FA_8Hz_avg",
  "zCRT_P2_FA_8Hz_avg ~~ v_C_P2*zCRT_P2_FA_8Hz_avg",
  "zCRT_N2_FA_8Hz_avg ~~ v_C_N2*zCRT_N2_FA_8Hz_avg",
  "zCRT_P3_FA_8Hz_avg ~~ v_C_P3*zCRT_P3_FA_8Hz_avg",
  "zSternberg_P2_FA_8Hz_avg ~~ v_S_P2*zSternberg_P2_FA_8Hz_avg",
  "zSternberg_N2_FA_8Hz_avg ~~ v_S_N2*zSternberg_N2_FA_8Hz_avg",
  "zSternberg_P3_FA_8Hz_avg ~~ v_S_P3*zSternberg_P3_FA_8Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_8Hz_FA <- sem(model_avg_8Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)
## Warning in lav_data_full(data = data, group = group, cluster = cluster, : lavaan WARNING: some cases are empty and will be ignored:
##   148
## SEM: Average reference, 16 Hz low-pass filter, peak latency ----

model_avg_16Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_16Hz_avg + 1*zCRT_P2_PL_16Hz_avg + 1*zSternberg_P2_PL_16Hz_avg",
  "N2 =~ 1*zPosner_N2_PL_16Hz_avg + 1*zCRT_N2_PL_16Hz_avg + 1*zSternberg_N2_PL_16Hz_avg",
  "P3 =~ 1*zPosner_P3_PL_16Hz_avg + 1*zCRT_P3_PL_16Hz_avg + 1*zSternberg_P3_PL_16Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_PL_16Hz_avg + 1*zPosner_N2_PL_16Hz_avg + 1*zPosner_P3_PL_16Hz_avg",
  "CRT =~ 1*zCRT_P2_PL_16Hz_avg + 1*zCRT_N2_PL_16Hz_avg + 1*zCRT_P3_PL_16Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_PL_16Hz_avg + 1*zSternberg_N2_PL_16Hz_avg + 1*zSternberg_P3_PL_16Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_16Hz_avg ~ 0",
  "zPosner_N2_PL_16Hz_avg ~ 0",
  "zPosner_P3_PL_16Hz_avg ~ 0",
  "zCRT_P2_PL_16Hz_avg ~ 0",
  "zCRT_N2_PL_16Hz_avg ~ 0",
  "zCRT_P3_PL_16Hz_avg ~ 0",
  "zSternberg_P2_PL_16Hz_avg ~ 0",
  "zSternberg_N2_PL_16Hz_avg ~ 0",
  "zSternberg_P3_PL_16Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_16Hz_avg ~~ v_P_P2*zPosner_P2_PL_16Hz_avg",
  "zPosner_N2_PL_16Hz_avg ~~ v_P_N2*zPosner_N2_PL_16Hz_avg",
  "zPosner_P3_PL_16Hz_avg~~ v_P_P3*zPosner_P3_PL_16Hz_avg",
  "zCRT_P2_PL_16Hz_avg ~~ v_C_P2*zCRT_P2_PL_16Hz_avg",
  "zCRT_N2_PL_16Hz_avg ~~ v_C_N2*zCRT_N2_PL_16Hz_avg",
  "zCRT_P3_PL_16Hz_avg ~~ v_C_P3*zCRT_P3_PL_16Hz_avg",
  "zSternberg_P2_PL_16Hz_avg ~~ v_S_P2*zSternberg_P2_PL_16Hz_avg",
  "zSternberg_N2_PL_16Hz_avg ~~ v_S_N2*zSternberg_N2_PL_16Hz_avg",
  "zSternberg_P3_PL_16Hz_avg ~~ v_S_P3*zSternberg_P3_PL_16Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_16Hz_PL <- sem(model_avg_16Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Average reference, 16 Hz low-pass filter, 50 % FA latency ----

model_avg_16Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_16Hz_avg + 1*zCRT_P2_FA_16Hz_avg + 1*zSternberg_P2_FA_16Hz_avg",
  "N2 =~ 1*zPosner_N2_FA_16Hz_avg + 1*zCRT_N2_FA_16Hz_avg + 1*zSternberg_N2_FA_16Hz_avg",
  "P3 =~ 1*zPosner_P3_FA_16Hz_avg + 1*zCRT_P3_FA_16Hz_avg + 1*zSternberg_P3_FA_16Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_FA_16Hz_avg + 1*zPosner_N2_FA_16Hz_avg + 1*zPosner_P3_FA_16Hz_avg",
  "CRT =~ 1*zCRT_P2_FA_16Hz_avg + 1*zCRT_N2_FA_16Hz_avg + 1*zCRT_P3_FA_16Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_FA_16Hz_avg + 1*zSternberg_N2_FA_16Hz_avg + 1*zSternberg_P3_FA_16Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_16Hz_avg ~ 0",
  "zPosner_N2_FA_16Hz_avg ~ 0",
  "zPosner_P3_FA_16Hz_avg ~ 0",
  "zCRT_P2_FA_16Hz_avg ~ 0",
  "zCRT_N2_FA_16Hz_avg ~ 0",
  "zCRT_P3_FA_16Hz_avg ~ 0",
  "zSternberg_P2_FA_16Hz_avg ~ 0",
  "zSternberg_N2_FA_16Hz_avg ~ 0",
  "zSternberg_P3_FA_16Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_16Hz_avg ~~ v_P_P2*zPosner_P2_FA_16Hz_avg",
  "zPosner_N2_FA_16Hz_avg ~~ v_P_N2*zPosner_N2_FA_16Hz_avg",
  "zPosner_P3_FA_16Hz_avg~~ v_P_P3*zPosner_P3_FA_16Hz_avg",
  "zCRT_P2_FA_16Hz_avg ~~ v_C_P2*zCRT_P2_FA_16Hz_avg",
  "zCRT_N2_FA_16Hz_avg ~~ v_C_N2*zCRT_N2_FA_16Hz_avg",
  "zCRT_P3_FA_16Hz_avg ~~ v_C_P3*zCRT_P3_FA_16Hz_avg",
  "zSternberg_P2_FA_16Hz_avg ~~ v_S_P2*zSternberg_P2_FA_16Hz_avg",
  "zSternberg_N2_FA_16Hz_avg ~~ v_S_N2*zSternberg_N2_FA_16Hz_avg",
  "zSternberg_P3_FA_16Hz_avg ~~ v_S_P3*zSternberg_P3_FA_16Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_16Hz_FA <- sem(model_avg_16Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Average reference, 32 Hz low-pass filter, peak latency ----

model_avg_32Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_32Hz_avg + 1*zCRT_P2_PL_32Hz_avg + 1*zSternberg_P2_PL_32Hz_avg",
  "N2 =~ 1*zPosner_N2_PL_32Hz_avg + 1*zCRT_N2_PL_32Hz_avg + 1*zSternberg_N2_PL_32Hz_avg",
  "P3 =~ 1*zPosner_P3_PL_32Hz_avg + 1*zCRT_P3_PL_32Hz_avg + 1*zSternberg_P3_PL_32Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_PL_32Hz_avg + 1*zPosner_N2_PL_32Hz_avg + 1*zPosner_P3_PL_32Hz_avg",
  "CRT =~ 1*zCRT_P2_PL_32Hz_avg + 1*zCRT_N2_PL_32Hz_avg + 1*zCRT_P3_PL_32Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_PL_32Hz_avg + 1*zSternberg_N2_PL_32Hz_avg + 1*zSternberg_P3_PL_32Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_32Hz_avg ~ 0",
  "zPosner_N2_PL_32Hz_avg ~ 0",
  "zPosner_P3_PL_32Hz_avg ~ 0",
  "zCRT_P2_PL_32Hz_avg ~ 0",
  "zCRT_N2_PL_32Hz_avg ~ 0",
  "zCRT_P3_PL_32Hz_avg ~ 0",
  "zSternberg_P2_PL_32Hz_avg ~ 0",
  "zSternberg_N2_PL_32Hz_avg ~ 0",
  "zSternberg_P3_PL_32Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_32Hz_avg ~~ v_P_P2*zPosner_P2_PL_32Hz_avg",
  "zPosner_N2_PL_32Hz_avg ~~ v_P_N2*zPosner_N2_PL_32Hz_avg",
  "zPosner_P3_PL_32Hz_avg~~ v_P_P3*zPosner_P3_PL_32Hz_avg",
  "zCRT_P2_PL_32Hz_avg ~~ v_C_P2*zCRT_P2_PL_32Hz_avg",
  "zCRT_N2_PL_32Hz_avg ~~ v_C_N2*zCRT_N2_PL_32Hz_avg",
  "zCRT_P3_PL_32Hz_avg ~~ v_C_P3*zCRT_P3_PL_32Hz_avg",
  "zSternberg_P2_PL_32Hz_avg ~~ v_S_P2*zSternberg_P2_PL_32Hz_avg",
  "zSternberg_N2_PL_32Hz_avg ~~ v_S_N2*zSternberg_N2_PL_32Hz_avg",
  "zSternberg_P3_PL_32Hz_avg ~~ v_S_P3*zSternberg_P3_PL_32Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_32Hz_PL <- sem(model_avg_32Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Average reference, 32 Hz low-pass filter, 50 % FA latency ----

model_avg_32Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_32Hz_avg + 1*zCRT_P2_FA_32Hz_avg + 1*zSternberg_P2_FA_32Hz_avg",
  "N2 =~ 1*zPosner_N2_FA_32Hz_avg + 1*zCRT_N2_FA_32Hz_avg + 1*zSternberg_N2_FA_32Hz_avg",
  "P3 =~ 1*zPosner_P3_FA_32Hz_avg + 1*zCRT_P3_FA_32Hz_avg + 1*zSternberg_P3_FA_32Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_FA_32Hz_avg + 1*zPosner_N2_FA_32Hz_avg + 1*zPosner_P3_FA_32Hz_avg",
  "CRT =~ 1*zCRT_P2_FA_32Hz_avg + 1*zCRT_N2_FA_32Hz_avg + 1*zCRT_P3_FA_32Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_FA_32Hz_avg + 1*zSternberg_N2_FA_32Hz_avg + 1*zSternberg_P3_FA_32Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_32Hz_avg ~ 0",
  "zPosner_N2_FA_32Hz_avg ~ 0",
  "zPosner_P3_FA_32Hz_avg ~ 0",
  "zCRT_P2_FA_32Hz_avg ~ 0",
  "zCRT_N2_FA_32Hz_avg ~ 0",
  "zCRT_P3_FA_32Hz_avg ~ 0",
  "zSternberg_P2_FA_32Hz_avg ~ 0",
  "zSternberg_N2_FA_32Hz_avg ~ 0",
  "zSternberg_P3_FA_32Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_32Hz_avg ~~ v_P_P2*zPosner_P2_FA_32Hz_avg",
  "zPosner_N2_FA_32Hz_avg ~~ v_P_N2*zPosner_N2_FA_32Hz_avg",
  "zPosner_P3_FA_32Hz_avg~~ v_P_P3*zPosner_P3_FA_32Hz_avg",
  "zCRT_P2_FA_32Hz_avg ~~ v_C_P2*zCRT_P2_FA_32Hz_avg",
  "zCRT_N2_FA_32Hz_avg ~~ v_C_N2*zCRT_N2_FA_32Hz_avg",
  "zCRT_P3_FA_32Hz_avg ~~ v_C_P3*zCRT_P3_FA_32Hz_avg",
  "zSternberg_P2_FA_32Hz_avg ~~ v_S_P2*zSternberg_P2_FA_32Hz_avg",
  "zSternberg_N2_FA_32Hz_avg ~~ v_S_N2*zSternberg_N2_FA_32Hz_avg",
  "zSternberg_P3_FA_32Hz_avg ~~ v_S_P3*zSternberg_P3_FA_32Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_32Hz_FA <- sem(model_avg_32Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 8 Hz low-pass filter, peak latency ----

model_mas_8Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_8Hz_mas + 1*zCRT_P2_PL_8Hz_mas + 1*zSternberg_P2_PL_8Hz_mas",
  "N2 =~ 1*zPosner_N2_PL_8Hz_mas + 1*zCRT_N2_PL_8Hz_mas + 1*zSternberg_N2_PL_8Hz_mas",
  "P3 =~ 1*zPosner_P3_PL_8Hz_mas + 1*zCRT_P3_PL_8Hz_mas + 1*zSternberg_P3_PL_8Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_PL_8Hz_mas + 1*zPosner_P3_PL_8Hz_mas",
  "CRT =~ 1*zCRT_N2_PL_8Hz_mas + 1*zCRT_P3_PL_8Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_PL_8Hz_mas + 1*zSternberg_P3_PL_8Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_8Hz_mas ~ 0",
  "zPosner_N2_PL_8Hz_mas ~ 0",
  "zPosner_P3_PL_8Hz_mas ~ 0",
  "zCRT_P2_PL_8Hz_mas ~ 0",
  "zCRT_N2_PL_8Hz_mas ~ 0",
  "zCRT_P3_PL_8Hz_mas ~ 0",
  "zSternberg_P2_PL_8Hz_mas ~ 0",
  "zSternberg_N2_PL_8Hz_mas ~ 0",
  "zSternberg_P3_PL_8Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ v_n2*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_8Hz_mas ~~ v_P_P2*zPosner_P2_PL_8Hz_mas",
  "zPosner_N2_PL_8Hz_mas ~~ v_P_N2*zPosner_N2_PL_8Hz_mas",
  "zPosner_P3_PL_8Hz_mas~~ v_P_P3*zPosner_P3_PL_8Hz_mas",
  "zCRT_P2_PL_8Hz_mas ~~ v_C_P2*zCRT_P2_PL_8Hz_mas",
  "zCRT_N2_PL_8Hz_mas ~~ v_C_N2*zCRT_N2_PL_8Hz_mas",
  "zCRT_P3_PL_8Hz_mas ~~ v_C_P3*zCRT_P3_PL_8Hz_mas",
  "zSternberg_P2_PL_8Hz_mas ~~ v_S_P2*zSternberg_P2_PL_8Hz_mas",
  "zSternberg_N2_PL_8Hz_mas ~~ v_S_N2*zSternberg_N2_PL_8Hz_mas",
  "zSternberg_P3_PL_8Hz_mas ~~ v_S_P3*zSternberg_P3_PL_8Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (v_n2)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (v_n2)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (v_n2)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + v_n2 + v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + v_n2 + v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +v_n2 + v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_8Hz_PL <- sem(model_mas_8Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 8 Hz low-pass filter, 50 % FA latency ----

model_mas_8Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_8Hz_mas + 1*zCRT_P2_FA_8Hz_mas + 1*zSternberg_P2_FA_8Hz_mas",
  "N2 =~ 1*zPosner_N2_FA_8Hz_mas + 1*zCRT_N2_FA_8Hz_mas + 1*zSternberg_N2_FA_8Hz_mas",
  "P3 =~ 1*zPosner_P3_FA_8Hz_mas + 1*zCRT_P3_FA_8Hz_mas + 1*zSternberg_P3_FA_8Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_FA_8Hz_mas + 1*zPosner_P3_FA_8Hz_mas",
  "CRT =~ 1*zCRT_N2_FA_8Hz_mas + 1*zCRT_P3_FA_8Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_FA_8Hz_mas + 1*zSternberg_P3_FA_8Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_8Hz_mas ~ 0",
  "zPosner_N2_FA_8Hz_mas ~ 0",
  "zPosner_P3_FA_8Hz_mas ~ 0",
  "zCRT_P2_FA_8Hz_mas ~ 0",
  "zCRT_N2_FA_8Hz_mas ~ 0",
  "zCRT_P3_FA_8Hz_mas ~ 0",
  "zSternberg_P2_FA_8Hz_mas ~ 0",
  "zSternberg_N2_FA_8Hz_mas ~ 0",
  "zSternberg_P3_FA_8Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ v_n2*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_8Hz_mas ~~ v_P_P2*zPosner_P2_FA_8Hz_mas",
  "zPosner_N2_FA_8Hz_mas ~~ v_P_N2*zPosner_N2_FA_8Hz_mas",
  "zPosner_P3_FA_8Hz_mas~~ v_P_P3*zPosner_P3_FA_8Hz_mas",
  "zCRT_P2_FA_8Hz_mas ~~ v_C_P2*zCRT_P2_FA_8Hz_mas",
  "zCRT_N2_FA_8Hz_mas ~~ v_C_N2*zCRT_N2_FA_8Hz_mas",
  "zCRT_P3_FA_8Hz_mas ~~ v_C_P3*zCRT_P3_FA_8Hz_mas",
  "zSternberg_P2_FA_8Hz_mas ~~ v_S_P2*zSternberg_P2_FA_8Hz_mas",
  "zSternberg_N2_FA_8Hz_mas ~~ v_S_N2*zSternberg_N2_FA_8Hz_mas",
  "zSternberg_P3_FA_8Hz_mas ~~ v_S_P3*zSternberg_P3_FA_8Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (v_n2)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (v_n2)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (v_n2)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + v_n2 + v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + v_n2 + v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +v_n2 + v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_8Hz_FA <- sem(model_mas_8Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 16 Hz low-pass filter, peak latency ----

model_mas_16Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_16Hz_mas + 1*zCRT_P2_PL_16Hz_mas + 1*zSternberg_P2_PL_16Hz_mas",
  "N2 =~ 1*zPosner_N2_PL_16Hz_mas + 1*zCRT_N2_PL_16Hz_mas + 1*zSternberg_N2_PL_16Hz_mas",
  "P3 =~ 1*zPosner_P3_PL_16Hz_mas + 1*zCRT_P3_PL_16Hz_mas + 1*zSternberg_P3_PL_16Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_PL_16Hz_mas + 1*zPosner_P3_PL_16Hz_mas",
  "CRT =~ 1*zCRT_N2_PL_16Hz_mas + 1*zCRT_P3_PL_16Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_PL_16Hz_mas + 1*zSternberg_P3_PL_16Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_16Hz_mas ~ 0",
  "zPosner_N2_PL_16Hz_mas ~ 0",
  "zPosner_P3_PL_16Hz_mas ~ 0",
  "zCRT_P2_PL_16Hz_mas ~ 0",
  "zCRT_N2_PL_16Hz_mas ~ 0",
  "zCRT_P3_PL_16Hz_mas ~ 0",
  "zSternberg_P2_PL_16Hz_mas ~ 0",
  "zSternberg_N2_PL_16Hz_mas ~ 0",
  "zSternberg_P3_PL_16Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_16Hz_mas ~~ v_P_P2*zPosner_P2_PL_16Hz_mas",
  "zPosner_N2_PL_16Hz_mas ~~ v_P_N2*zPosner_N2_PL_16Hz_mas",
  "zPosner_P3_PL_16Hz_mas~~ v_P_P3*zPosner_P3_PL_16Hz_mas",
  "zCRT_P2_PL_16Hz_mas ~~ v_C_P2*zCRT_P2_PL_16Hz_mas",
  "zCRT_N2_PL_16Hz_mas ~~ v_C_N2*zCRT_N2_PL_16Hz_mas",
  "zCRT_P3_PL_16Hz_mas ~~ v_C_P3*zCRT_P3_PL_16Hz_mas",
  "zSternberg_P2_PL_16Hz_mas ~~ v_S_P2*zSternberg_P2_PL_16Hz_mas",
  "zSternberg_N2_PL_16Hz_mas ~~ v_S_N2*zSternberg_N2_PL_16Hz_mas",
  "zSternberg_P3_PL_16Hz_mas ~~ v_S_P3*zSternberg_P3_PL_16Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + 0 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + 0 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +0 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + 0 + v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + 0 + v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +0 + v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_16Hz_PL <- sem(model_mas_16Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 16 Hz low-pass filter, 50 % FA latency ----

model_mas_16Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_16Hz_mas + 1*zCRT_P2_FA_16Hz_mas + 1*zSternberg_P2_FA_16Hz_mas",
  "N2 =~ 1*zPosner_N2_FA_16Hz_mas + 1*zCRT_N2_FA_16Hz_mas + 1*zSternberg_N2_FA_16Hz_mas",
  "P3 =~ 1*zPosner_P3_FA_16Hz_mas + 1*zCRT_P3_FA_16Hz_mas + 1*zSternberg_P3_FA_16Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_FA_16Hz_mas + 1*zPosner_P3_FA_16Hz_mas",
  "CRT =~ 1*zCRT_N2_FA_16Hz_mas + 1*zCRT_P3_FA_16Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_FA_16Hz_mas + 1*zSternberg_P3_FA_16Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_16Hz_mas ~ 0",
  "zPosner_N2_FA_16Hz_mas ~ 0",
  "zPosner_P3_FA_16Hz_mas ~ 0",
  "zCRT_P2_FA_16Hz_mas ~ 0",
  "zCRT_N2_FA_16Hz_mas ~ 0",
  "zCRT_P3_FA_16Hz_mas ~ 0",
  "zSternberg_P2_FA_16Hz_mas ~ 0",
  "zSternberg_N2_FA_16Hz_mas ~ 0",
  "zSternberg_P3_FA_16Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_16Hz_mas ~~ v_P_P2*zPosner_P2_FA_16Hz_mas",
  "zPosner_N2_FA_16Hz_mas ~~ v_P_N2*zPosner_N2_FA_16Hz_mas",
  "zPosner_P3_FA_16Hz_mas~~ v_P_P3*zPosner_P3_FA_16Hz_mas",
  "zCRT_P2_FA_16Hz_mas ~~ v_C_P2*zCRT_P2_FA_16Hz_mas",
  "zCRT_N2_FA_16Hz_mas ~~ v_C_N2*zCRT_N2_FA_16Hz_mas",
  "zCRT_P3_FA_16Hz_mas ~~ v_C_P3*zCRT_P3_FA_16Hz_mas",
  "zSternberg_P2_FA_16Hz_mas ~~ v_S_P2*zSternberg_P2_FA_16Hz_mas",
  "zSternberg_N2_FA_16Hz_mas ~~ v_S_N2*zSternberg_N2_FA_16Hz_mas",
  "zSternberg_P3_FA_16Hz_mas ~~ v_S_P3*zSternberg_P3_FA_16Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + 0 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + 0 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +0 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + 0 + v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + 0 + v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +0 + v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_16Hz_FA <- sem(model_mas_16Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 32 Hz low-pass filter, peak latency ----

model_mas_32Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_32Hz_mas + 1*zCRT_P2_PL_32Hz_mas + 1*zSternberg_P2_PL_32Hz_mas",
  "N2 =~ 1*zPosner_N2_PL_32Hz_mas + 1*zCRT_N2_PL_32Hz_mas + 1*zSternberg_N2_PL_32Hz_mas",
  "P3 =~ 1*zPosner_P3_PL_32Hz_mas + 1*zCRT_P3_PL_32Hz_mas + 1*zSternberg_P3_PL_32Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_PL_32Hz_mas + 1*zPosner_P3_PL_32Hz_mas",
  "CRT =~ 1*zCRT_N2_PL_32Hz_mas + 1*zCRT_P3_PL_32Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_PL_32Hz_mas + 1*zSternberg_P3_PL_32Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_32Hz_mas ~ 0",
  "zPosner_N2_PL_32Hz_mas ~ 0",
  "zPosner_P3_PL_32Hz_mas ~ 0",
  "zCRT_P2_PL_32Hz_mas ~ 0",
  "zCRT_N2_PL_32Hz_mas ~ 0",
  "zCRT_P3_PL_32Hz_mas ~ 0",
  "zSternberg_P2_PL_32Hz_mas ~ 0",
  "zSternberg_N2_PL_32Hz_mas ~ 0",
  "zSternberg_P3_PL_32Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ v_n2*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_32Hz_mas ~~ v_P_P2*zPosner_P2_PL_32Hz_mas",
  "zPosner_N2_PL_32Hz_mas ~~ v_P_N2*zPosner_N2_PL_32Hz_mas",
  "zPosner_P3_PL_32Hz_mas~~ v_P_P3*zPosner_P3_PL_32Hz_mas",
  "zCRT_P2_PL_32Hz_mas ~~ v_C_P2*zCRT_P2_PL_32Hz_mas",
  "zCRT_N2_PL_32Hz_mas ~~ v_C_N2*zCRT_N2_PL_32Hz_mas",
  "zCRT_P3_PL_32Hz_mas ~~ v_C_P3*zCRT_P3_PL_32Hz_mas",
  "zSternberg_P2_PL_32Hz_mas ~~ v_S_P2*zSternberg_P2_PL_32Hz_mas",
  "zSternberg_N2_PL_32Hz_mas ~~ v_S_N2*zSternberg_N2_PL_32Hz_mas",
  "zSternberg_P3_PL_32Hz_mas ~~ v_S_P3*zSternberg_P3_PL_32Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (v_n2)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (v_n2)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (v_n2)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + v_n2 + v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + v_n2 + v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +v_n2 + v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_32Hz_PL <- sem(model_mas_32Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 32 Hz low-pass filter, 50 % FA latency ----

model_mas_32Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_32Hz_mas + 1*zCRT_P2_FA_32Hz_mas + 1*zSternberg_P2_FA_32Hz_mas",
  "N2 =~ 1*zPosner_N2_FA_32Hz_mas + 1*zCRT_N2_FA_32Hz_mas + 1*zSternberg_N2_FA_32Hz_mas",
  "P3 =~ 1*zPosner_P3_FA_32Hz_mas + 1*zCRT_P3_FA_32Hz_mas + 1*zSternberg_P3_FA_32Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_FA_32Hz_mas + 1*zPosner_P3_FA_32Hz_mas",
  "CRT =~ 1*zCRT_N2_FA_32Hz_mas + 1*zCRT_P3_FA_32Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_FA_32Hz_mas + 1*zSternberg_P3_FA_32Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_32Hz_mas ~ 0",
  "zPosner_N2_FA_32Hz_mas ~ 0",
  "zPosner_P3_FA_32Hz_mas ~ 0",
  "zCRT_P2_FA_32Hz_mas ~ 0",
  "zCRT_N2_FA_32Hz_mas ~ 0",
  "zCRT_P3_FA_32Hz_mas ~ 0",
  "zSternberg_P2_FA_32Hz_mas ~ 0",
  "zSternberg_N2_FA_32Hz_mas ~ 0",
  "zSternberg_P3_FA_32Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_32Hz_mas ~~ v_P_P2*zPosner_P2_FA_32Hz_mas",
  "zPosner_N2_FA_32Hz_mas ~~ v_P_N2*zPosner_N2_FA_32Hz_mas",
  "zPosner_P3_FA_32Hz_mas~~ v_P_P3*zPosner_P3_FA_32Hz_mas",
  "zCRT_P2_FA_32Hz_mas ~~ v_C_P2*zCRT_P2_FA_32Hz_mas",
  "zCRT_N2_FA_32Hz_mas ~~ v_C_N2*zCRT_N2_FA_32Hz_mas",
  "zCRT_P3_FA_32Hz_mas ~~ v_C_P3*zCRT_P3_FA_32Hz_mas",
  "zSternberg_P2_FA_32Hz_mas ~~ v_S_P2*zSternberg_P2_FA_32Hz_mas",
  "zSternberg_N2_FA_32Hz_mas ~~ v_S_N2*zSternberg_N2_FA_32Hz_mas",
  "zSternberg_P3_FA_32Hz_mas ~~ v_S_P3*zSternberg_P3_FA_32Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + 0 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + 0 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +0 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + 0 + v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + 0 + v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +0 + v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_32Hz_FA <- sem(model_mas_32Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

"\n"
## [1] "\n"
round(cbind(RP8A  = fitMeasures(fit_avg_8Hz_PL, FITM),
            RP85  = fitMeasures(fit_avg_8Hz_FA, FITM),
            RP16A = fitMeasures(fit_avg_16Hz_PL, FITM),
            RP165 = fitMeasures(fit_avg_16Hz_FA, FITM),
            RP32A = fitMeasures(fit_avg_32Hz_PL, FITM),
            RP325 = fitMeasures(fit_avg_32Hz_FA, FITM),
            FP8A  = fitMeasures(fit_mas_8Hz_PL, FITM),
            FP85  = fitMeasures(fit_mas_8Hz_FA, FITM),
            FP16A  = fitMeasures(fit_mas_16Hz_PL, FITM),
            FP165  = fitMeasures(fit_mas_16Hz_FA, FITM),
            FP32A  = fitMeasures(fit_mas_32Hz_PL, FITM),
            FP325  = fitMeasures(fit_mas_32Hz_FA, FITM)), 3)
##                    RP8A     RP85    RP16A    RP165    RP32A    RP325     FP8A
## chisq           106.944  122.816   96.794  111.643  134.442  146.806   83.484
## df               78.000   78.000   78.000   78.000   78.000   78.000   78.000
## npar             26.000   26.000   26.000   26.000   26.000   26.000   26.000
## cfi               0.925    0.880    0.938    0.887    0.795    0.788    0.986
## rmsea             0.050    0.063    0.040    0.054    0.070    0.077    0.022
## rmsea.ci.lower    0.022    0.040    0.000    0.029    0.049    0.058    0.000
## rmsea.ci.upper    0.072    0.083    0.064    0.075    0.090    0.096    0.052
## aic            4717.221 4753.426 4876.855 4869.284 4936.775 4900.125 4657.456
## bic            4794.972 4831.177 4954.783 4947.211 5014.702 4978.052 4735.384
##                    FP85    FP16A    FP165    FP32A    FP325
## chisq            78.569   94.921   87.625   93.047  103.022
## df               78.000   79.000   79.000   78.000   79.000
## npar             26.000   25.000   25.000   26.000   25.000
## cfi               0.999    0.957    0.977    0.963    0.946
## rmsea             0.007    0.037    0.027    0.036    0.045
## rmsea.ci.lower    0.000    0.000    0.000    0.000    0.012
## rmsea.ci.upper    0.047    0.062    0.055    0.061    0.068
## aic            4627.284 4778.940 4778.522 4756.927 4728.444
## bic            4705.211 4853.871 4853.452 4834.854 4803.374

Fits across filter levels and choice of peak latency versus 50% fractional area latency should obviously not be compared since the models usually have equal degrees of freedom and they just use different variables, or more hopefully, different measurements of the same variables. Differences in DFs seem to be due to missingness. This is not comparison fit-based comparison of models that are incomparable: the fits for 50% fractional area latency were worse across the board with AR and better at 8 and 16 Hz with LM, but worse at 32 Hz. Fits for LM were much better, and were actually acceptable, but with AR, they were generally not acceptable.

The best 32 Hz fit was for peak latency. Let’s check the parameters:

summary(fit_mas_32Hz_PL, fit.measures=TRUE,standardized = TRUE,rsquare=T, ci = TRUE)
## lavaan 0.6.14 ended normally after 28 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        26
## 
##   Number of observations                           148
##   Number of missing patterns                        14
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                                93.047      93.202
##   Degrees of freedom                                78          78
##   P-value (Chi-square)                           0.118       0.115
##   Scaling correction factor                                  0.998
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                               486.090     476.278
##   Degrees of freedom                                78          78
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.021
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.963       0.962
##   Tucker-Lewis Index (TLI)                       0.963       0.962
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.961
##   Robust Tucker-Lewis Index (TLI)                            0.961
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -2352.463   -2352.463
##   Scaling correction factor                                  1.093
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)      -2305.940   -2305.940
##   Scaling correction factor                                  1.022
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                                4756.927    4756.927
##   Bayesian (BIC)                              4834.854    4834.854
##   Sample-size adjusted Bayesian (SABIC)       4752.574    4752.574
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.036       0.036
##   90 Percent confidence interval - lower         0.000       0.000
##   90 Percent confidence interval - upper         0.061       0.061
##   P-value H_0: RMSEA <= 0.050                    0.795       0.792
##   P-value H_0: RMSEA >= 0.080                    0.001       0.001
##                                                                   
##   Robust RMSEA                                               0.039
##   90 Percent confidence interval - lower                     0.000
##   90 Percent confidence interval - upper                     0.065
##   P-value H_0: Robust RMSEA <= 0.050                         0.730
##   P-value H_0: Robust RMSEA >= 0.080                         0.003
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.073       0.073
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   P2 =~                                                                 
##     zPs_P2_PL_32H_    1.000                               1.000    1.000
##     zCRT_P2_PL_32H    1.000                               1.000    1.000
##     zSt_P2_PL_32H_    1.000                               1.000    1.000
##   N2 =~                                                                 
##     zPs_N2_PL_32H_    1.000                               1.000    1.000
##     zCRT_N2_PL_32H    1.000                               1.000    1.000
##     zSt_N2_PL_32H_    1.000                               1.000    1.000
##   P3 =~                                                                 
##     zPs_P3_PL_32H_    1.000                               1.000    1.000
##     zCRT_P3_PL_32H    1.000                               1.000    1.000
##     zSt_P3_PL_32H_    1.000                               1.000    1.000
##   ERP =~                                                                
##     N2                1.000                               1.000    1.000
##     P3                1.000                               1.000    1.000
##   Posner =~                                                             
##     zPs_N2_PL_32H_    1.000                               1.000    1.000
##     zPs_P3_PL_32H_    1.000                               1.000    1.000
##   CRT =~                                                                
##     zCRT_N2_PL_32H    1.000                               1.000    1.000
##     zCRT_P3_PL_32H    1.000                               1.000    1.000
##   Sternberg =~                                                          
##     zSt_N2_PL_32H_    1.000                               1.000    1.000
##     zSt_P3_PL_32H_    1.000                               1.000    1.000
##   gf =~                                                                 
##     zPC               1.000                               1.000    1.000
##     zPS               0.937    0.181    5.174    0.000    0.582    1.292
##     zM                0.775    0.146    5.322    0.000    0.489    1.060
##     zC                0.581    0.133    4.359    0.000    0.320    0.842
##    Std.lv  Std.all
##                   
##     0.654    0.656
##     0.654    0.634
##     0.654    0.673
##                   
##     0.260    0.254
##     0.260    0.260
##     0.260    0.262
##                   
##     0.402    0.402
##     0.402    0.403
##     0.402    0.412
##                   
##     0.890    0.890
##     0.575    0.575
##                   
##     0.792    0.776
##     0.792    0.791
##                   
##     0.493    0.492
##     0.493    0.495
##                   
##     0.805    0.813
##     0.805    0.825
##                   
##     0.743    0.745
##     0.696    0.698
##     0.576    0.577
##     0.432    0.433
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Posner ~~                                                             
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##   CRT ~~                                                                
##     Sternberg         0.000                               0.000    0.000
##   ERP ~~                                                                
##     gf               -0.167    0.046   -3.591    0.000   -0.257   -0.076
##  .N2 ~~                                                                 
##     gf                0.000                               0.000    0.000
##  .P3 ~~                                                                 
##     gf                0.000                               0.000    0.000
##   Posner ~~                                                             
##     gf                0.000                               0.000    0.000
##   CRT ~~                                                                
##     gf                0.000                               0.000    0.000
##   Sternberg ~~                                                          
##     gf                0.000                               0.000    0.000
##   P2 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##     ERP               0.000                               0.000    0.000
##  .N2 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##  .P3 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##   ERP ~~                                                                
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##   P2 ~~                                                                 
##     gf               -0.069    0.063   -1.106    0.269   -0.192    0.053
##    Std.lv  Std.all
##                   
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##    -0.969   -0.969
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##    -0.143   -0.143
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .zPs_P2_PL_32H_    0.000                               0.000    0.000
##    .zPs_N2_PL_32H_    0.000                               0.000    0.000
##    .zPs_P3_PL_32H_    0.000                               0.000    0.000
##    .zCRT_P2_PL_32H    0.000                               0.000    0.000
##    .zCRT_N2_PL_32H    0.000                               0.000    0.000
##    .zCRT_P3_PL_32H    0.000                               0.000    0.000
##    .zSt_P2_PL_32H_    0.000                               0.000    0.000
##    .zSt_N2_PL_32H_    0.000                               0.000    0.000
##    .zSt_P3_PL_32H_    0.000                               0.000    0.000
##    .zPC               0.000                               0.000    0.000
##    .zPS               0.000                               0.000    0.000
##    .zM                0.000                               0.000    0.000
##    .zC                0.000                               0.000    0.000
##     P2                0.000                               0.000    0.000
##    .N2                0.000                               0.000    0.000
##    .P3                0.000                               0.000    0.000
##     ERP               0.000                               0.000    0.000
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##     gf                0.000                               0.000    0.000
##    Std.lv  Std.all
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     ERP     (v_rp)    0.053    0.048    1.122    0.262   -0.040    0.147
##     CRT     (v_cr)    0.243    0.077    3.167    0.002    0.093    0.393
##     Strnb   (v_st)    0.649    0.102    6.334    0.000    0.448    0.849
##     Posnr   (v_ps)    0.627    0.106    5.901    0.000    0.419    0.836
##     P2      (v_p2)    0.428    0.073    5.875    0.000    0.285    0.571
##    .N2      (v_n2)    0.014    0.030    0.462    0.644   -0.046    0.074
##    .P3      (v_p3)    0.108    0.039    2.752    0.006    0.031    0.185
##    .zP_P2 (v_P_P2)    0.567    0.103    5.514    0.000    0.365    0.768
##    .zP_N2  (v_P_N)    0.348    0.087    4.004    0.000    0.177    0.518
##    .zP_P3 (v_P_P3)    0.213    0.071    3.022    0.003    0.075    0.352
##    .zCRT_ (v_C_P2)    0.637    0.123    5.201    0.000    0.397    0.878
##    .zCRT_  (v_C_N)    0.691    0.129    5.359    0.000    0.439    0.944
##    .zCRT_ (v_C_P3)    0.588    0.139    4.230    0.000    0.316    0.861
##    .zS_P2 (v_S_P2)    0.517    0.125    4.134    0.000    0.272    0.762
##    .zS_N2  (v_S_N)    0.264    0.059    4.483    0.000    0.149    0.380
##    .zS_P3 (v_S_P3)    0.142    0.080    1.781    0.075   -0.014    0.299
##    .zPC               0.444    0.102    4.348    0.000    0.244    0.644
##    .zPS               0.511    0.098    5.226    0.000    0.319    0.702
##    .zM                0.663    0.098    6.758    0.000    0.471    0.855
##    .zC                0.807    0.097    8.320    0.000    0.617    0.998
##     gf                0.553    0.139    3.972    0.000    0.280    0.825
##    Std.lv  Std.all
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     0.208    0.208
##     0.669    0.669
##     0.567    0.570
##     0.348    0.334
##     0.213    0.213
##     0.637    0.598
##     0.691    0.690
##     0.588    0.592
##     0.517    0.547
##     0.264    0.270
##     0.142    0.150
##     0.444    0.445
##     0.511    0.513
##     0.663    0.667
##     0.807    0.812
##     1.000    1.000
## 
## R-Square:
##                    Estimate
##     N2                0.792
##     P3                0.331
##     zPs_P2_PL_32H_    0.430
##     zPs_N2_PL_32H_    0.666
##     zPs_P3_PL_32H_    0.787
##     zCRT_P2_PL_32H    0.402
##     zCRT_N2_PL_32H    0.310
##     zCRT_P3_PL_32H    0.408
##     zSt_P2_PL_32H_    0.453
##     zSt_N2_PL_32H_    0.730
##     zSt_P3_PL_32H_    0.850
##     zPC               0.555
##     zPS               0.487
##     zM                0.333
##     zC                0.188
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     trait_Posnr_P2    0.000                               0.000    0.000
##     trait_Posnr_N2    0.051    0.046    1.118    0.264   -0.039    0.141
##     trait_Posnr_P3    0.053    0.047    1.140    0.254   -0.038    0.145
##     trait_CRT_P2      0.000                               0.000    0.000
##     trait_CRT_N2      0.053    0.047    1.128    0.259   -0.039    0.146
##     trait_CRT_P3      0.054    0.048    1.114    0.265   -0.041    0.149
##     trt_Strnbrg_P2    0.000                               0.000    0.000
##     trt_Strnbrg_N2    0.055    0.050    1.091    0.275   -0.043    0.153
##     trt_Strnbrg_P3    0.056    0.050    1.128    0.259   -0.041    0.154
##     comp_Posner_P2    0.430    0.066    6.526    0.000    0.301    0.559
##     comp_Posner_N2    0.013    0.029    0.461    0.645   -0.044    0.071
##     comp_Posner_P3    0.108    0.039    2.750    0.006    0.031    0.185
##     comp_CRT_P2       0.402    0.066    6.067    0.000    0.272    0.531
##     comp_CRT_N2       0.014    0.031    0.459    0.646   -0.046    0.074
##     comp_CRT_P3       0.109    0.038    2.873    0.004    0.035    0.183
##     cmp_Strnbrg_P2    0.453    0.087    5.193    0.000    0.282    0.624
##     cmp_Strnbrg_N2    0.014    0.031    0.465    0.642   -0.046    0.075
##     cmp_Strnbrg_P3    0.114    0.042    2.677    0.007    0.030    0.197
##     task_Posner_P2    0.000                               0.000    0.000
##     task_Posner_N2    0.602    0.067    9.007    0.000    0.471    0.733
##     task_Posner_P3    0.626    0.077    8.148    0.000    0.475    0.776
##     task_CRT_P2       0.000                               0.000    0.000
##     task_CRT_N2       0.243    0.066    3.651    0.000    0.112    0.373
##     task_CRT_P3       0.245    0.076    3.226    0.001    0.096    0.393
##     tsk_Strnbrg_P2    0.000                               0.000    0.000
##     tsk_Strnbrg_N2    0.662    0.057   11.525    0.000    0.549    0.774
##     tsk_Strnbrg_P3    0.681    0.094    7.269    0.000    0.497    0.864
##     rel_Posner_P2     0.430    0.066    6.526    0.000    0.301    0.559
##     rel_Posner_N2     0.666    0.062   10.762    0.000    0.545    0.788
##     rel_Posner_P3     0.787    0.072   10.947    0.000    0.646    0.928
##     rel_CRT_P2        0.402    0.066    6.067    0.000    0.272    0.531
##     rel_CRT_N2        0.310    0.059    5.286    0.000    0.195    0.425
##     rel_CRT_P3        0.408    0.092    4.443    0.000    0.228    0.587
##     rel_Strnbrg_P2    0.453    0.087    5.193    0.000    0.282    0.624
##     rel_Strnbrg_N2    0.730    0.049   14.791    0.000    0.634    0.827
##     rel_Strnbrg_P3    0.850    0.079   10.775    0.000    0.696    1.005
##    Std.lv  Std.all
##     0.000    0.000
##     0.391    0.393
##     0.347    0.347
##     0.000    0.000
##     0.345    0.345
##     0.307    0.307
##     0.000    0.000
##     0.404    0.404
##     0.356    0.355
##     0.638    0.637
##     0.081    0.082
##     0.232    0.232
##     0.611    0.626
##     0.072    0.072
##     0.205    0.205
##     0.659    0.646
##     0.084    0.084
##     0.238    0.237
##     0.000    0.000
##     0.391    0.393
##     0.347    0.347
##     0.000    0.000
##     0.345    0.345
##     0.307    0.307
##     0.000    0.000
##     0.404    0.404
##     0.356    0.355
##     0.638    0.637
##     0.864    0.869
##     0.926    0.926
##     0.611    0.626
##     0.762    0.762
##     0.819    0.818
##     0.659    0.646
##     0.893    0.891
##     0.949    0.947
summary(fit_mas_32Hz_FA, fit.measures=TRUE,standardized = TRUE,rsquare=T, ci = TRUE)
## lavaan 0.6.14 ended normally after 27 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        25
## 
##   Number of observations                           148
##   Number of missing patterns                        15
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                               103.022     103.544
##   Degrees of freedom                                79          79
##   P-value (Chi-square)                           0.036       0.033
##   Scaling correction factor                                  0.995
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                               525.386     511.388
##   Degrees of freedom                                78          78
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.027
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.946       0.943
##   Tucker-Lewis Index (TLI)                       0.947       0.944
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.945
##   Robust Tucker-Lewis Index (TLI)                            0.946
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -2339.222   -2339.222
##   Scaling correction factor                                  1.126
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)      -2287.711   -2287.711
##   Scaling correction factor                                  1.027
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                                4728.444    4728.444
##   Bayesian (BIC)                              4803.374    4803.374
##   Sample-size adjusted Bayesian (SABIC)       4724.258    4724.258
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.045       0.046
##   90 Percent confidence interval - lower         0.012       0.014
##   90 Percent confidence interval - upper         0.068       0.069
##   P-value H_0: RMSEA <= 0.050                    0.606       0.594
##   P-value H_0: RMSEA >= 0.080                    0.004       0.005
##                                                                   
##   Robust RMSEA                                               0.048
##   90 Percent confidence interval - lower                     0.014
##   90 Percent confidence interval - upper                     0.072
##   P-value H_0: Robust RMSEA <= 0.050                         0.528
##   P-value H_0: Robust RMSEA >= 0.080                         0.012
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.076       0.076
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   P2 =~                                                                 
##     zPs_P2_FA_32H_    1.000                               1.000    1.000
##     zCRT_P2_FA_32H    1.000                               1.000    1.000
##     zSt_P2_FA_32H_    1.000                               1.000    1.000
##   N2 =~                                                                 
##     zPs_N2_FA_32H_    1.000                               1.000    1.000
##     zCRT_N2_FA_32H    1.000                               1.000    1.000
##     zSt_N2_FA_32H_    1.000                               1.000    1.000
##   P3 =~                                                                 
##     zPs_P3_FA_32H_    1.000                               1.000    1.000
##     zCRT_P3_FA_32H    1.000                               1.000    1.000
##     zSt_P3_FA_32H_    1.000                               1.000    1.000
##   ERP =~                                                                
##     N2                1.000                               1.000    1.000
##     P3                1.000                               1.000    1.000
##   Posner =~                                                             
##     zPs_N2_FA_32H_    1.000                               1.000    1.000
##     zPs_P3_FA_32H_    1.000                               1.000    1.000
##   CRT =~                                                                
##     zCRT_N2_FA_32H    1.000                               1.000    1.000
##     zCRT_P3_FA_32H    1.000                               1.000    1.000
##   Sternberg =~                                                          
##     zSt_N2_FA_32H_    1.000                               1.000    1.000
##     zSt_P3_FA_32H_    1.000                               1.000    1.000
##   gf =~                                                                 
##     zPC               1.000                               1.000    1.000
##     zPS               0.923    0.178    5.196    0.000    0.575    1.271
##     zM                0.767    0.148    5.194    0.000    0.478    1.057
##     zC                0.573    0.131    4.374    0.000    0.316    0.830
##    Std.lv  Std.all
##                   
##     0.661    0.678
##     0.661    0.631
##     0.661    0.671
##                   
##     0.295    0.290
##     0.295    0.293
##     0.295    0.296
##                   
##     0.432    0.434
##     0.432    0.439
##     0.432    0.430
##                   
##     1.000    1.000
##     0.682    0.682
##                   
##     0.790    0.778
##     0.790    0.794
##                   
##     0.429    0.427
##     0.429    0.437
##                   
##     0.821    0.825
##     0.821    0.817
##                   
##     0.749    0.751
##     0.691    0.693
##     0.575    0.576
##     0.429    0.431
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Posner ~~                                                             
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##   CRT ~~                                                                
##     Sternberg         0.000                               0.000    0.000
##   ERP ~~                                                                
##     gf               -0.179    0.050   -3.578    0.000   -0.277   -0.081
##  .N2 ~~                                                                 
##     gf                0.000                               0.000    0.000
##  .P3 ~~                                                                 
##     gf                0.000                               0.000    0.000
##   Posner ~~                                                             
##     gf                0.000                               0.000    0.000
##   CRT ~~                                                                
##     gf                0.000                               0.000    0.000
##   Sternberg ~~                                                          
##     gf                0.000                               0.000    0.000
##   P2 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##     ERP               0.000                               0.000    0.000
##  .N2 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##  .P3 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##   ERP ~~                                                                
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##   P2 ~~                                                                 
##     gf               -0.073    0.063   -1.160    0.246   -0.196    0.050
##    Std.lv  Std.all
##                   
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##    -0.812   -0.812
##                   
##       NaN      NaN
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##       NaN      NaN
##       NaN      NaN
##       NaN      NaN
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##    -0.147   -0.147
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .zPs_P2_FA_32H_    0.000                               0.000    0.000
##    .zPs_N2_FA_32H_    0.000                               0.000    0.000
##    .zPs_P3_FA_32H_    0.000                               0.000    0.000
##    .zCRT_P2_FA_32H    0.000                               0.000    0.000
##    .zCRT_N2_FA_32H    0.000                               0.000    0.000
##    .zCRT_P3_FA_32H    0.000                               0.000    0.000
##    .zSt_P2_FA_32H_    0.000                               0.000    0.000
##    .zSt_N2_FA_32H_    0.000                               0.000    0.000
##    .zSt_P3_FA_32H_    0.000                               0.000    0.000
##    .zPC               0.000                               0.000    0.000
##    .zPS               0.000                               0.000    0.000
##    .zM                0.000                               0.000    0.000
##    .zC                0.000                               0.000    0.000
##     P2                0.000                               0.000    0.000
##    .N2                0.000                               0.000    0.000
##    .P3                0.000                               0.000    0.000
##     ERP               0.000                               0.000    0.000
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##     gf                0.000                               0.000    0.000
##    Std.lv  Std.all
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     ERP     (v_rp)    0.087    0.047    1.826    0.068   -0.006    0.180
##     CRT     (v_cr)    0.184    0.083    2.230    0.026    0.022    0.346
##     Strnb   (v_st)    0.673    0.092    7.294    0.000    0.492    0.854
##     Posnr   (v_ps)    0.624    0.117    5.341    0.000    0.395    0.853
##     P2      (v_p2)    0.436    0.074    5.881    0.000    0.291    0.582
##    .N2                0.000                               0.000    0.000
##    .P3      (v_p3)    0.100    0.034    2.960    0.003    0.034    0.166
##    .zP_P2 (v_P_P2)    0.513    0.102    5.028    0.000    0.313    0.713
##    .zP_N2  (v_P_N)    0.319    0.066    4.861    0.000    0.190    0.447
##    .zP_P3 (v_P_P3)    0.178    0.076    2.355    0.019    0.030    0.327
##    .zCRT_ (v_C_P2)    0.660    0.125    5.291    0.000    0.416    0.905
##    .zCRT_  (v_C_N)    0.738    0.120    6.154    0.000    0.503    0.973
##    .zCRT_ (v_C_P3)    0.595    0.150    3.962    0.000    0.301    0.890
##    .zS_P2 (v_S_P2)    0.532    0.147    3.612    0.000    0.243    0.820
##    .zS_N2  (v_S_N)    0.229    0.049    4.627    0.000    0.132    0.326
##    .zS_P3 (v_S_P3)    0.149    0.067    2.218    0.027    0.017    0.280
##    .zPC               0.435    0.101    4.289    0.000    0.236    0.633
##    .zPS               0.517    0.096    5.373    0.000    0.329    0.706
##    .zM                0.664    0.098    6.768    0.000    0.472    0.857
##    .zC                0.810    0.096    8.393    0.000    0.620    0.999
##     gf                0.561    0.139    4.024    0.000    0.288    0.834
##    Std.lv  Std.all
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     0.000    0.000
##     0.535    0.535
##     0.513    0.540
##     0.319    0.310
##     0.178    0.180
##     0.660    0.602
##     0.738    0.731
##     0.595    0.616
##     0.532    0.549
##     0.229    0.231
##     0.149    0.148
##     0.435    0.436
##     0.517    0.520
##     0.664    0.668
##     0.810    0.815
##     1.000    1.000
## 
## R-Square:
##                    Estimate
##     N2                1.000
##     P3                0.465
##     zPs_P2_FA_32H_    0.460
##     zPs_N2_FA_32H_    0.690
##     zPs_P3_FA_32H_    0.820
##     zCRT_P2_FA_32H    0.398
##     zCRT_N2_FA_32H    0.269
##     zCRT_P3_FA_32H    0.384
##     zSt_P2_FA_32H_    0.451
##     zSt_N2_FA_32H_    0.769
##     zSt_P3_FA_32H_    0.852
##     zPC               0.564
##     zPS               0.480
##     zM                0.332
##     zC                0.185
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     trait_Posnr_P2    0.000                               0.000    0.000
##     trait_Posnr_N2    0.084    0.047    1.784    0.074   -0.008    0.177
##     trait_Posnr_P3    0.088    0.048    1.813    0.070   -0.007    0.183
##     trait_CRT_P2      0.000                               0.000    0.000
##     trait_CRT_N2      0.086    0.047    1.824    0.068   -0.006    0.178
##     trait_CRT_P3      0.090    0.051    1.778    0.075   -0.009    0.189
##     trt_Strnbrg_P2    0.000                               0.000    0.000
##     trt_Strnbrg_N2    0.088    0.048    1.811    0.070   -0.007    0.183
##     trt_Strnbrg_P3    0.086    0.046    1.860    0.063   -0.005    0.177
##     comp_Posner_P2    0.460    0.072    6.394    0.000    0.319    0.601
##     comp_Posner_N2    0.000                               0.000    0.000
##     comp_Posner_P3    0.101    0.035    2.911    0.004    0.033    0.169
##     comp_CRT_P2       0.398    0.063    6.364    0.000    0.275    0.521
##     comp_CRT_N2       0.000                               0.000    0.000
##     comp_CRT_P3       0.103    0.034    3.055    0.002    0.037    0.170
##     cmp_Strnbrg_P2    0.451    0.095    4.744    0.000    0.265    0.637
##     cmp_Strnbrg_N2    0.000                               0.000    0.000
##     cmp_Strnbrg_P3    0.099    0.034    2.887    0.004    0.032    0.166
##     task_Posner_P2    0.000                               0.000    0.000
##     task_Posner_N2    0.606    0.065    9.385    0.000    0.479    0.733
##     task_Posner_P3    0.631    0.089    7.126    0.000    0.457    0.805
##     task_CRT_P2       0.000                               0.000    0.000
##     task_CRT_N2       0.183    0.076    2.419    0.016    0.035    0.331
##     task_CRT_P3       0.191    0.086    2.223    0.026    0.023    0.359
##     tsk_Strnbrg_P2    0.000                               0.000    0.000
##     tsk_Strnbrg_N2    0.681    0.054   12.646    0.000    0.575    0.786
##     tsk_Strnbrg_P3    0.667    0.074    9.030    0.000    0.523    0.812
##     rel_Posner_P2     0.460    0.072    6.394    0.000    0.319    0.601
##     rel_Posner_N2     0.690    0.044   15.667    0.000    0.604    0.777
##     rel_Posner_P3     0.820    0.077   10.713    0.000    0.670    0.970
##     rel_CRT_P2        0.398    0.063    6.364    0.000    0.275    0.521
##     rel_CRT_N2        0.269    0.066    4.043    0.000    0.138    0.399
##     rel_CRT_P3        0.384    0.097    3.971    0.000    0.194    0.573
##     rel_Strnbrg_P2    0.451    0.095    4.744    0.000    0.265    0.637
##     rel_Strnbrg_N2    0.769    0.040   19.126    0.000    0.690    0.847
##     rel_Strnbrg_P3    0.852    0.063   13.596    0.000    0.730    0.975
##    Std.lv  Std.all
##     0.000    0.000
##     0.431    0.433
##     0.369    0.368
##     0.000    0.000
##     0.365    0.366
##     0.319    0.317
##     0.000    0.000
##     0.449    0.448
##     0.373    0.373
##     0.661    0.649
##     0.000    0.000
##     0.197    0.197
##     0.602    0.624
##     0.000    0.000
##     0.171    0.170
##     0.653    0.645
##     0.000    0.000
##     0.199    0.199
##     0.000    0.000
##     0.431    0.433
##     0.369    0.368
##     0.000    0.000
##     0.365    0.366
##     0.319    0.317
##     0.000    0.000
##     0.449    0.448
##     0.373    0.373
##     0.661    0.649
##     0.863    0.866
##     0.934    0.934
##     0.602    0.624
##     0.731    0.732
##     0.810    0.804
##     0.653    0.645
##     0.897    0.896
##     0.945    0.945

The correlations between ERP-g and first-order BIS-g were -0.969 and -0.812. The CIs are fairly wide, so these aren’t distinguishable from -1, and the former should not be distinguished from -1.

Here are the age-controlled results:

# SEM analyses controlled for Age differences ----

## SEM: AverAge reference, 8 Hz low-pass filter, peak latency (controlled for Age differences) ----

model_avg_8Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_8Hz_avg + 1*zCRT_P2_PL_8Hz_avg + 1*zSternberg_P2_PL_8Hz_avg",
  "N2 =~ 1*zPosner_N2_PL_8Hz_avg + 1*zCRT_N2_PL_8Hz_avg + 1*zSternberg_N2_PL_8Hz_avg",
  "P3 =~ 1*zPosner_P3_PL_8Hz_avg + 1*zCRT_P3_PL_8Hz_avg + 1*zSternberg_P3_PL_8Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_PL_8Hz_avg + 1*zPosner_N2_PL_8Hz_avg + 1*zPosner_P3_PL_8Hz_avg",
  "CRT =~ 1*zCRT_P2_PL_8Hz_avg + 1*zCRT_N2_PL_8Hz_avg + 1*zCRT_P3_PL_8Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_PL_8Hz_avg + 1*zSternberg_N2_PL_8Hz_avg + 1*zSternberg_P3_PL_8Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_8Hz_avg ~ 0",
  "zPosner_N2_PL_8Hz_avg ~ 0",
  "zPosner_P3_PL_8Hz_avg ~ 0",
  "zCRT_P2_PL_8Hz_avg ~ 0",
  "zCRT_N2_PL_8Hz_avg ~ 0",
  "zCRT_P3_PL_8Hz_avg ~ 0",
  "zSternberg_P2_PL_8Hz_avg ~ 0",
  "zSternberg_N2_PL_8Hz_avg ~ 0",
  "zSternberg_P3_PL_8Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_8Hz_avg ~~ v_P_P2*zPosner_P2_PL_8Hz_avg",
  "zPosner_N2_PL_8Hz_avg ~~ v_P_N2*zPosner_N2_PL_8Hz_avg",
  "zPosner_P3_PL_8Hz_avg~~ v_P_P3*zPosner_P3_PL_8Hz_avg",
  "zCRT_P2_PL_8Hz_avg ~~ v_C_P2*zCRT_P2_PL_8Hz_avg",
  "zCRT_N2_PL_8Hz_avg ~~ v_C_N2*zCRT_N2_PL_8Hz_avg",
  "zCRT_P3_PL_8Hz_avg ~~ v_C_P3*zCRT_P3_PL_8Hz_avg",
  "zSternberg_P2_PL_8Hz_avg ~~ v_S_P2*zSternberg_P2_PL_8Hz_avg",
  "zSternberg_N2_PL_8Hz_avg ~~ v_S_N2*zSternberg_N2_PL_8Hz_avg",
  "zSternberg_P3_PL_8Hz_avg ~~ v_S_P3*zSternberg_P3_PL_8Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_8Hz_PL <- sem(model_avg_8Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: AverAge reference, 8 Hz low-pass filter, 50 % FA latency (controlled for Age differences) ----

model_avg_8Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_8Hz_avg + 1*zCRT_P2_FA_8Hz_avg + 1*zSternberg_P2_FA_8Hz_avg",
  "N2 =~ 1*zPosner_N2_FA_8Hz_avg + 1*zCRT_N2_FA_8Hz_avg + 1*zSternberg_N2_FA_8Hz_avg",
  "P3 =~ 1*zPosner_P3_FA_8Hz_avg + 1*zCRT_P3_FA_8Hz_avg + 1*zSternberg_P3_FA_8Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_FA_8Hz_avg + 1*zPosner_N2_FA_8Hz_avg + 1*zPosner_P3_FA_8Hz_avg",
  "CRT =~ 1*zCRT_P2_FA_8Hz_avg + 1*zCRT_N2_FA_8Hz_avg + 1*zCRT_P3_FA_8Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_FA_8Hz_avg + 1*zSternberg_N2_FA_8Hz_avg + 1*zSternberg_P3_FA_8Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_8Hz_avg ~ 0",
  "zPosner_N2_FA_8Hz_avg ~ 0",
  "zPosner_P3_FA_8Hz_avg ~ 0",
  "zCRT_P2_FA_8Hz_avg ~ 0",
  "zCRT_N2_FA_8Hz_avg ~ 0",
  "zCRT_P3_FA_8Hz_avg ~ 0",
  "zSternberg_P2_FA_8Hz_avg ~ 0",
  "zSternberg_N2_FA_8Hz_avg ~ 0",
  "zSternberg_P3_FA_8Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_8Hz_avg ~~ v_P_P2*zPosner_P2_FA_8Hz_avg",
  "zPosner_N2_FA_8Hz_avg ~~ v_P_N2*zPosner_N2_FA_8Hz_avg",
  "zPosner_P3_FA_8Hz_avg~~ v_P_P3*zPosner_P3_FA_8Hz_avg",
  "zCRT_P2_FA_8Hz_avg ~~ v_C_P2*zCRT_P2_FA_8Hz_avg",
  "zCRT_N2_FA_8Hz_avg ~~ v_C_N2*zCRT_N2_FA_8Hz_avg",
  "zCRT_P3_FA_8Hz_avg ~~ v_C_P3*zCRT_P3_FA_8Hz_avg",
  "zSternberg_P2_FA_8Hz_avg ~~ v_S_P2*zSternberg_P2_FA_8Hz_avg",
  "zSternberg_N2_FA_8Hz_avg ~~ v_S_N2*zSternberg_N2_FA_8Hz_avg",
  "zSternberg_P3_FA_8Hz_avg ~~ v_S_P3*zSternberg_P3_FA_8Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_8Hz_FA <- sem(model_avg_8Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: AverAge reference, 16 Hz low-pass filter, peak latency (controlled for Age differences) ----

model_avg_16Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_16Hz_avg + 1*zCRT_P2_PL_16Hz_avg + 1*zSternberg_P2_PL_16Hz_avg",
  "N2 =~ 1*zPosner_N2_PL_16Hz_avg + 1*zCRT_N2_PL_16Hz_avg + 1*zSternberg_N2_PL_16Hz_avg",
  "P3 =~ 1*zPosner_P3_PL_16Hz_avg + 1*zCRT_P3_PL_16Hz_avg + 1*zSternberg_P3_PL_16Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_PL_16Hz_avg + 1*zPosner_N2_PL_16Hz_avg + 1*zPosner_P3_PL_16Hz_avg",
  "CRT =~ 1*zCRT_P2_PL_16Hz_avg + 1*zCRT_N2_PL_16Hz_avg + 1*zCRT_P3_PL_16Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_PL_16Hz_avg + 1*zSternberg_N2_PL_16Hz_avg + 1*zSternberg_P3_PL_16Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_16Hz_avg ~ 0",
  "zPosner_N2_PL_16Hz_avg ~ 0",
  "zPosner_P3_PL_16Hz_avg ~ 0",
  "zCRT_P2_PL_16Hz_avg ~ 0",
  "zCRT_N2_PL_16Hz_avg ~ 0",
  "zCRT_P3_PL_16Hz_avg ~ 0",
  "zSternberg_P2_PL_16Hz_avg ~ 0",
  "zSternberg_N2_PL_16Hz_avg ~ 0",
  "zSternberg_P3_PL_16Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_16Hz_avg ~~ v_P_P2*zPosner_P2_PL_16Hz_avg",
  "zPosner_N2_PL_16Hz_avg ~~ v_P_N2*zPosner_N2_PL_16Hz_avg",
  "zPosner_P3_PL_16Hz_avg~~ v_P_P3*zPosner_P3_PL_16Hz_avg",
  "zCRT_P2_PL_16Hz_avg ~~ v_C_P2*zCRT_P2_PL_16Hz_avg",
  "zCRT_N2_PL_16Hz_avg ~~ v_C_N2*zCRT_N2_PL_16Hz_avg",
  "zCRT_P3_PL_16Hz_avg ~~ v_C_P3*zCRT_P3_PL_16Hz_avg",
  "zSternberg_P2_PL_16Hz_avg ~~ v_S_P2*zSternberg_P2_PL_16Hz_avg",
  "zSternberg_N2_PL_16Hz_avg ~~ v_S_N2*zSternberg_N2_PL_16Hz_avg",
  "zSternberg_P3_PL_16Hz_avg ~~ v_S_P3*zSternberg_P3_PL_16Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_16Hz_PL <- sem(model_avg_16Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: AverAge reference, 16 Hz low-pass filter, 50 % FA latency (controlled for Age differences) ----

model_avg_16Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_16Hz_avg + 1*zCRT_P2_FA_16Hz_avg + 1*zSternberg_P2_FA_16Hz_avg",
  "N2 =~ 1*zPosner_N2_FA_16Hz_avg + 1*zCRT_N2_FA_16Hz_avg + 1*zSternberg_N2_FA_16Hz_avg",
  "P3 =~ 1*zPosner_P3_FA_16Hz_avg + 1*zCRT_P3_FA_16Hz_avg + 1*zSternberg_P3_FA_16Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_FA_16Hz_avg + 1*zPosner_N2_FA_16Hz_avg + 1*zPosner_P3_FA_16Hz_avg",
  "CRT =~ 1*zCRT_P2_FA_16Hz_avg + 1*zCRT_N2_FA_16Hz_avg + 1*zCRT_P3_FA_16Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_FA_16Hz_avg + 1*zSternberg_N2_FA_16Hz_avg + 1*zSternberg_P3_FA_16Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_16Hz_avg ~ 0",
  "zPosner_N2_FA_16Hz_avg ~ 0",
  "zPosner_P3_FA_16Hz_avg ~ 0",
  "zCRT_P2_FA_16Hz_avg ~ 0",
  "zCRT_N2_FA_16Hz_avg ~ 0",
  "zCRT_P3_FA_16Hz_avg ~ 0",
  "zSternberg_P2_FA_16Hz_avg ~ 0",
  "zSternberg_N2_FA_16Hz_avg ~ 0",
  "zSternberg_P3_FA_16Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_16Hz_avg ~~ v_P_P2*zPosner_P2_FA_16Hz_avg",
  "zPosner_N2_FA_16Hz_avg ~~ v_P_N2*zPosner_N2_FA_16Hz_avg",
  "zPosner_P3_FA_16Hz_avg~~ v_P_P3*zPosner_P3_FA_16Hz_avg",
  "zCRT_P2_FA_16Hz_avg ~~ v_C_P2*zCRT_P2_FA_16Hz_avg",
  "zCRT_N2_FA_16Hz_avg ~~ v_C_N2*zCRT_N2_FA_16Hz_avg",
  "zCRT_P3_FA_16Hz_avg ~~ v_C_P3*zCRT_P3_FA_16Hz_avg",
  "zSternberg_P2_FA_16Hz_avg ~~ v_S_P2*zSternberg_P2_FA_16Hz_avg",
  "zSternberg_N2_FA_16Hz_avg ~~ v_S_N2*zSternberg_N2_FA_16Hz_avg",
  "zSternberg_P3_FA_16Hz_avg ~~ v_S_P3*zSternberg_P3_FA_16Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_16Hz_FA <- sem(model_avg_16Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: AverAge reference, 32 Hz low-pass filter, peak latency (controlled for Age differences) ----

model_avg_32Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_32Hz_avg + 1*zCRT_P2_PL_32Hz_avg + 1*zSternberg_P2_PL_32Hz_avg",
  "N2 =~ 1*zPosner_N2_PL_32Hz_avg + 1*zCRT_N2_PL_32Hz_avg + 1*zSternberg_N2_PL_32Hz_avg",
  "P3 =~ 1*zPosner_P3_PL_32Hz_avg + 1*zCRT_P3_PL_32Hz_avg + 1*zSternberg_P3_PL_32Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_PL_32Hz_avg + 1*zPosner_N2_PL_32Hz_avg + 1*zPosner_P3_PL_32Hz_avg",
  "CRT =~ 1*zCRT_P2_PL_32Hz_avg + 1*zCRT_N2_PL_32Hz_avg + 1*zCRT_P3_PL_32Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_PL_32Hz_avg + 1*zSternberg_N2_PL_32Hz_avg + 1*zSternberg_P3_PL_32Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_32Hz_avg ~ 0",
  "zPosner_N2_PL_32Hz_avg ~ 0",
  "zPosner_P3_PL_32Hz_avg ~ 0",
  "zCRT_P2_PL_32Hz_avg ~ 0",
  "zCRT_N2_PL_32Hz_avg ~ 0",
  "zCRT_P3_PL_32Hz_avg ~ 0",
  "zSternberg_P2_PL_32Hz_avg ~ 0",
  "zSternberg_N2_PL_32Hz_avg ~ 0",
  "zSternberg_P3_PL_32Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_32Hz_avg ~~ v_P_P2*zPosner_P2_PL_32Hz_avg",
  "zPosner_N2_PL_32Hz_avg ~~ v_P_N2*zPosner_N2_PL_32Hz_avg",
  "zPosner_P3_PL_32Hz_avg~~ v_P_P3*zPosner_P3_PL_32Hz_avg",
  "zCRT_P2_PL_32Hz_avg ~~ v_C_P2*zCRT_P2_PL_32Hz_avg",
  "zCRT_N2_PL_32Hz_avg ~~ v_C_N2*zCRT_N2_PL_32Hz_avg",
  "zCRT_P3_PL_32Hz_avg ~~ v_C_P3*zCRT_P3_PL_32Hz_avg",
  "zSternberg_P2_PL_32Hz_avg ~~ v_S_P2*zSternberg_P2_PL_32Hz_avg",
  "zSternberg_N2_PL_32Hz_avg ~~ v_S_N2*zSternberg_N2_PL_32Hz_avg",
  "zSternberg_P3_PL_32Hz_avg ~~ v_S_P3*zSternberg_P3_PL_32Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_32Hz_PL <- sem(model_avg_32Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: AverAge reference, 32 Hz low-pass filter, 50 % FA latency (controlled for Age differences) ----

model_avg_32Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_32Hz_avg + 1*zCRT_P2_FA_32Hz_avg + 1*zSternberg_P2_FA_32Hz_avg",
  "N2 =~ 1*zPosner_N2_FA_32Hz_avg + 1*zCRT_N2_FA_32Hz_avg + 1*zSternberg_N2_FA_32Hz_avg",
  "P3 =~ 1*zPosner_P3_FA_32Hz_avg + 1*zCRT_P3_FA_32Hz_avg + 1*zSternberg_P3_FA_32Hz_avg",
  "ERP =~ 1*P2 + b_n2*N2 + b_p3*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_P2_FA_32Hz_avg + 1*zPosner_N2_FA_32Hz_avg + 1*zPosner_P3_FA_32Hz_avg",
  "CRT =~ 1*zCRT_P2_FA_32Hz_avg + 1*zCRT_N2_FA_32Hz_avg + 1*zCRT_P3_FA_32Hz_avg",
  "Sternberg =~ 1*zSternberg_P2_FA_32Hz_avg + 1*zSternberg_N2_FA_32Hz_avg + 1*zSternberg_P3_FA_32Hz_avg",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*P2 + 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_32Hz_avg ~ 0",
  "zPosner_N2_FA_32Hz_avg ~ 0",
  "zPosner_P3_FA_32Hz_avg ~ 0",
  "zCRT_P2_FA_32Hz_avg ~ 0",
  "zCRT_N2_FA_32Hz_avg ~ 0",
  "zCRT_P3_FA_32Hz_avg ~ 0",
  "zSternberg_P2_FA_32Hz_avg ~ 0",
  "zSternberg_N2_FA_32Hz_avg ~ 0",
  "zSternberg_P3_FA_32Hz_avg ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_32Hz_avg ~~ v_P_P2*zPosner_P2_FA_32Hz_avg",
  "zPosner_N2_FA_32Hz_avg ~~ v_P_N2*zPosner_N2_FA_32Hz_avg",
  "zPosner_P3_FA_32Hz_avg~~ v_P_P3*zPosner_P3_FA_32Hz_avg",
  "zCRT_P2_FA_32Hz_avg ~~ v_C_P2*zCRT_P2_FA_32Hz_avg",
  "zCRT_N2_FA_32Hz_avg ~~ v_C_N2*zCRT_N2_FA_32Hz_avg",
  "zCRT_P3_FA_32Hz_avg ~~ v_C_P3*zCRT_P3_FA_32Hz_avg",
  "zSternberg_P2_FA_32Hz_avg ~~ v_S_P2*zSternberg_P2_FA_32Hz_avg",
  "zSternberg_N2_FA_32Hz_avg ~~ v_S_N2*zSternberg_N2_FA_32Hz_avg",
  "zSternberg_P3_FA_32Hz_avg ~~ v_S_P3*zSternberg_P3_FA_32Hz_avg",
  
  # consistencies
  "consistency_Posner_P2 := (v_erp)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "consistency_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "consistency_Posner_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "consistency_CRT_P2 := (v_erp)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "consistency_CRT_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "consistency_CRT_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "consistency_Sternberg_P2 := (v_erp)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "consistency_Sternberg_N2 := (b_n2^2*v_erp)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "consistency_Sternberg_P3 := (b_p3^2*v_erp)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (v_erp + v_p2 + v_posner)/(v_erp + v_p2 + v_posner + v_P_P2)",
  "rel_Posner_N2 := (b_n2^2*v_erp + 0 + v_posner)/(b_n2^2*v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (b_p3^2*v_erp + v_p3 + v_posner)/(b_p3^2*v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (v_erp + v_p2 + v_crt)/(v_erp + v_p2 + v_crt + v_C_P2)",
  "rel_CRT_N2 := (b_n2^2*v_erp + 0 + v_crt)/(b_n2^2*v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (b_p3^2*v_erp + v_p3 + v_crt)/(b_p3^2*v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (v_erp + v_p2 + v_sternberg)/(v_erp + v_p2 + v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (b_n2^2*v_erp +0 + v_sternberg)/(b_n2^2*v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (b_p3^2*v_erp + v_p3 + v_sternberg)/(b_p3^2*v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_avg_32Hz_FA <- sem(model_avg_32Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 8 Hz low-pass filter, peak latency (controlled for Age differences) ----

model_mas_8Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_8Hz_mas + 1*zCRT_P2_PL_8Hz_mas + 1*zSternberg_P2_PL_8Hz_mas",
  "N2 =~ 1*zPosner_N2_PL_8Hz_mas + 1*zCRT_N2_PL_8Hz_mas + 1*zSternberg_N2_PL_8Hz_mas",
  "P3 =~ 1*zPosner_P3_PL_8Hz_mas + 1*zCRT_P3_PL_8Hz_mas + 1*zSternberg_P3_PL_8Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_PL_8Hz_mas + 1*zPosner_P3_PL_8Hz_mas",
  "CRT =~ 1*zCRT_N2_PL_8Hz_mas + 1*zCRT_P3_PL_8Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_PL_8Hz_mas + 1*zSternberg_P3_PL_8Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_8Hz_mas ~ 0",
  "zPosner_N2_PL_8Hz_mas ~ 0",
  "zPosner_P3_PL_8Hz_mas ~ 0",
  "zCRT_P2_PL_8Hz_mas ~ 0",
  "zCRT_N2_PL_8Hz_mas ~ 0",
  "zCRT_P3_PL_8Hz_mas ~ 0",
  "zSternberg_P2_PL_8Hz_mas ~ 0",
  "zSternberg_N2_PL_8Hz_mas ~ 0",
  "zSternberg_P3_PL_8Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ v_n2*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_8Hz_mas ~~ v_P_P2*zPosner_P2_PL_8Hz_mas",
  "zPosner_N2_PL_8Hz_mas ~~ v_P_N2*zPosner_N2_PL_8Hz_mas",
  "zPosner_P3_PL_8Hz_mas~~ v_P_P3*zPosner_P3_PL_8Hz_mas",
  "zCRT_P2_PL_8Hz_mas ~~ v_C_P2*zCRT_P2_PL_8Hz_mas",
  "zCRT_N2_PL_8Hz_mas ~~ v_C_N2*zCRT_N2_PL_8Hz_mas",
  "zCRT_P3_PL_8Hz_mas ~~ v_C_P3*zCRT_P3_PL_8Hz_mas",
  "zSternberg_P2_PL_8Hz_mas ~~ v_S_P2*zSternberg_P2_PL_8Hz_mas",
  "zSternberg_N2_PL_8Hz_mas ~~ v_S_N2*zSternberg_N2_PL_8Hz_mas",
  "zSternberg_P3_PL_8Hz_mas ~~ v_S_P3*zSternberg_P3_PL_8Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (v_n2)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (v_n2)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (v_n2)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + v_n2 + v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + v_n2 + v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +v_n2 + v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_8Hz_PL <- sem(model_mas_8Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 8 Hz low-pass filter, 50 % FA latency (controlled for Age differences) ----

model_mas_8Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_8Hz_mas + 1*zCRT_P2_FA_8Hz_mas + 1*zSternberg_P2_FA_8Hz_mas",
  "N2 =~ 1*zPosner_N2_FA_8Hz_mas + 1*zCRT_N2_FA_8Hz_mas + 1*zSternberg_N2_FA_8Hz_mas",
  "P3 =~ 1*zPosner_P3_FA_8Hz_mas + 1*zCRT_P3_FA_8Hz_mas + 1*zSternberg_P3_FA_8Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_FA_8Hz_mas + 1*zPosner_P3_FA_8Hz_mas",
  "CRT =~ 1*zCRT_N2_FA_8Hz_mas + 1*zCRT_P3_FA_8Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_FA_8Hz_mas + 1*zSternberg_P3_FA_8Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_8Hz_mas ~ 0",
  "zPosner_N2_FA_8Hz_mas ~ 0",
  "zPosner_P3_FA_8Hz_mas ~ 0",
  "zCRT_P2_FA_8Hz_mas ~ 0",
  "zCRT_N2_FA_8Hz_mas ~ 0",
  "zCRT_P3_FA_8Hz_mas ~ 0",
  "zSternberg_P2_FA_8Hz_mas ~ 0",
  "zSternberg_N2_FA_8Hz_mas ~ 0",
  "zSternberg_P3_FA_8Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ v_n2*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_8Hz_mas ~~ v_P_P2*zPosner_P2_FA_8Hz_mas",
  "zPosner_N2_FA_8Hz_mas ~~ v_P_N2*zPosner_N2_FA_8Hz_mas",
  "zPosner_P3_FA_8Hz_mas~~ v_P_P3*zPosner_P3_FA_8Hz_mas",
  "zCRT_P2_FA_8Hz_mas ~~ v_C_P2*zCRT_P2_FA_8Hz_mas",
  "zCRT_N2_FA_8Hz_mas ~~ v_C_N2*zCRT_N2_FA_8Hz_mas",
  "zCRT_P3_FA_8Hz_mas ~~ v_C_P3*zCRT_P3_FA_8Hz_mas",
  "zSternberg_P2_FA_8Hz_mas ~~ v_S_P2*zSternberg_P2_FA_8Hz_mas",
  "zSternberg_N2_FA_8Hz_mas ~~ v_S_N2*zSternberg_N2_FA_8Hz_mas",
  "zSternberg_P3_FA_8Hz_mas ~~ v_S_P3*zSternberg_P3_FA_8Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (v_n2)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (v_n2)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (v_n2)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + v_n2 + v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + v_n2 + v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +v_n2 + v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_8Hz_FA <- sem(model_mas_8Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 16 Hz low-pass filter, peak latency (controlled for Age differences) ----

model_mas_16Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_16Hz_mas + 1*zCRT_P2_PL_16Hz_mas + 1*zSternberg_P2_PL_16Hz_mas",
  "N2 =~ 1*zPosner_N2_PL_16Hz_mas + 1*zCRT_N2_PL_16Hz_mas + 1*zSternberg_N2_PL_16Hz_mas",
  "P3 =~ 1*zPosner_P3_PL_16Hz_mas + 1*zCRT_P3_PL_16Hz_mas + 1*zSternberg_P3_PL_16Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_PL_16Hz_mas + 1*zPosner_P3_PL_16Hz_mas",
  "CRT =~ 1*zCRT_N2_PL_16Hz_mas + 1*zCRT_P3_PL_16Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_PL_16Hz_mas + 1*zSternberg_P3_PL_16Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_16Hz_mas ~ 0",
  "zPosner_N2_PL_16Hz_mas ~ 0",
  "zPosner_P3_PL_16Hz_mas ~ 0",
  "zCRT_P2_PL_16Hz_mas ~ 0",
  "zCRT_N2_PL_16Hz_mas ~ 0",
  "zCRT_P3_PL_16Hz_mas ~ 0",
  "zSternberg_P2_PL_16Hz_mas ~ 0",
  "zSternberg_N2_PL_16Hz_mas ~ 0",
  "zSternberg_P3_PL_16Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_16Hz_mas ~~ v_P_P2*zPosner_P2_PL_16Hz_mas",
  "zPosner_N2_PL_16Hz_mas ~~ v_P_N2*zPosner_N2_PL_16Hz_mas",
  "zPosner_P3_PL_16Hz_mas~~ v_P_P3*zPosner_P3_PL_16Hz_mas",
  "zCRT_P2_PL_16Hz_mas ~~ v_C_P2*zCRT_P2_PL_16Hz_mas",
  "zCRT_N2_PL_16Hz_mas ~~ v_C_N2*zCRT_N2_PL_16Hz_mas",
  "zCRT_P3_PL_16Hz_mas ~~ v_C_P3*zCRT_P3_PL_16Hz_mas",
  "zSternberg_P2_PL_16Hz_mas ~~ v_S_P2*zSternberg_P2_PL_16Hz_mas",
  "zSternberg_N2_PL_16Hz_mas ~~ v_S_N2*zSternberg_N2_PL_16Hz_mas",
  "zSternberg_P3_PL_16Hz_mas ~~ v_S_P3*zSternberg_P3_PL_16Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + 0 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + 0 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +0 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + 0 + v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + 0 + v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +0 + v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_16Hz_PL <- sem(model_mas_16Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 16 Hz low-pass filter, 50 % FA latency (controlled for Age differences) ----

model_mas_16Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_16Hz_mas + 1*zCRT_P2_FA_16Hz_mas + 1*zSternberg_P2_FA_16Hz_mas",
  "N2 =~ 1*zPosner_N2_FA_16Hz_mas + 1*zCRT_N2_FA_16Hz_mas + 1*zSternberg_N2_FA_16Hz_mas",
  "P3 =~ 1*zPosner_P3_FA_16Hz_mas + 1*zCRT_P3_FA_16Hz_mas + 1*zSternberg_P3_FA_16Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_FA_16Hz_mas + 1*zPosner_P3_FA_16Hz_mas",
  "CRT =~ 1*zCRT_N2_FA_16Hz_mas + 1*zCRT_P3_FA_16Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_FA_16Hz_mas + 1*zSternberg_P3_FA_16Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_16Hz_mas ~ 0",
  "zPosner_N2_FA_16Hz_mas ~ 0",
  "zPosner_P3_FA_16Hz_mas ~ 0",
  "zCRT_P2_FA_16Hz_mas ~ 0",
  "zCRT_N2_FA_16Hz_mas ~ 0",
  "zCRT_P3_FA_16Hz_mas ~ 0",
  "zSternberg_P2_FA_16Hz_mas ~ 0",
  "zSternberg_N2_FA_16Hz_mas ~ 0",
  "zSternberg_P3_FA_16Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_16Hz_mas ~~ v_P_P2*zPosner_P2_FA_16Hz_mas",
  "zPosner_N2_FA_16Hz_mas ~~ v_P_N2*zPosner_N2_FA_16Hz_mas",
  "zPosner_P3_FA_16Hz_mas~~ v_P_P3*zPosner_P3_FA_16Hz_mas",
  "zCRT_P2_FA_16Hz_mas ~~ v_C_P2*zCRT_P2_FA_16Hz_mas",
  "zCRT_N2_FA_16Hz_mas ~~ v_C_N2*zCRT_N2_FA_16Hz_mas",
  "zCRT_P3_FA_16Hz_mas ~~ v_C_P3*zCRT_P3_FA_16Hz_mas",
  "zSternberg_P2_FA_16Hz_mas ~~ v_S_P2*zSternberg_P2_FA_16Hz_mas",
  "zSternberg_N2_FA_16Hz_mas ~~ v_S_N2*zSternberg_N2_FA_16Hz_mas",
  "zSternberg_P3_FA_16Hz_mas ~~ v_S_P3*zSternberg_P3_FA_16Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + 0 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + 0 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +0 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + 0 + v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + 0 + v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +0 + v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_16Hz_FA <- sem(model_mas_16Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 32 Hz low-pass filter, peak latency (controlled for Age differences) ----

model_mas_32Hz_PL <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_PL_32Hz_mas + 1*zCRT_P2_PL_32Hz_mas + 1*zSternberg_P2_PL_32Hz_mas",
  "N2 =~ 1*zPosner_N2_PL_32Hz_mas + 1*zCRT_N2_PL_32Hz_mas + 1*zSternberg_N2_PL_32Hz_mas",
  "P3 =~ 1*zPosner_P3_PL_32Hz_mas + 1*zCRT_P3_PL_32Hz_mas + 1*zSternberg_P3_PL_32Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_PL_32Hz_mas + 1*zPosner_P3_PL_32Hz_mas",
  "CRT =~ 1*zCRT_N2_PL_32Hz_mas + 1*zCRT_P3_PL_32Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_PL_32Hz_mas + 1*zSternberg_P3_PL_32Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_PL_32Hz_mas ~ 0",
  "zPosner_N2_PL_32Hz_mas ~ 0",
  "zPosner_P3_PL_32Hz_mas ~ 0",
  "zCRT_P2_PL_32Hz_mas ~ 0",
  "zCRT_N2_PL_32Hz_mas ~ 0",
  "zCRT_P3_PL_32Hz_mas ~ 0",
  "zSternberg_P2_PL_32Hz_mas ~ 0",
  "zSternberg_N2_PL_32Hz_mas ~ 0",
  "zSternberg_P3_PL_32Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ v_n2*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_PL_32Hz_mas ~~ v_P_P2*zPosner_P2_PL_32Hz_mas",
  "zPosner_N2_PL_32Hz_mas ~~ v_P_N2*zPosner_N2_PL_32Hz_mas",
  "zPosner_P3_PL_32Hz_mas~~ v_P_P3*zPosner_P3_PL_32Hz_mas",
  "zCRT_P2_PL_32Hz_mas ~~ v_C_P2*zCRT_P2_PL_32Hz_mas",
  "zCRT_N2_PL_32Hz_mas ~~ v_C_N2*zCRT_N2_PL_32Hz_mas",
  "zCRT_P3_PL_32Hz_mas ~~ v_C_P3*zCRT_P3_PL_32Hz_mas",
  "zSternberg_P2_PL_32Hz_mas ~~ v_S_P2*zSternberg_P2_PL_32Hz_mas",
  "zSternberg_N2_PL_32Hz_mas ~~ v_S_N2*zSternberg_N2_PL_32Hz_mas",
  "zSternberg_P3_PL_32Hz_mas ~~ v_S_P3*zSternberg_P3_PL_32Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (v_n2)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (v_n2)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (v_n2)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + v_n2 + v_posner)/(v_erp + v_n2 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + v_n2 + v_crt)/(v_erp + v_n2 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +v_n2 + v_sternberg)/(v_erp +v_n2 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_32Hz_PL <- sem(model_mas_32Hz_PL, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

## SEM: Linked mastoids reference, 32 Hz low-pass filter, 50 % FA latency (controlled for Age differences) ----

model_mas_32Hz_FA <- c(# hierarchical model
  "P2 =~ 1*zPosner_P2_FA_32Hz_mas + 1*zCRT_P2_FA_32Hz_mas + 1*zSternberg_P2_FA_32Hz_mas",
  "N2 =~ 1*zPosner_N2_FA_32Hz_mas + 1*zCRT_N2_FA_32Hz_mas + 1*zSternberg_N2_FA_32Hz_mas",
  "P3 =~ 1*zPosner_P3_FA_32Hz_mas + 1*zCRT_P3_FA_32Hz_mas + 1*zSternberg_P3_FA_32Hz_mas",
  "ERP =~ 1*N2 + 1*P3",
  
  # task-specific factors
  "Posner =~ 1*zPosner_N2_FA_32Hz_mas + 1*zPosner_P3_FA_32Hz_mas",
  "CRT =~ 1*zCRT_N2_FA_32Hz_mas + 1*zCRT_P3_FA_32Hz_mas",
  "Sternberg =~ 1*zSternberg_N2_FA_32Hz_mas + 1*zSternberg_P3_FA_32Hz_mas",
  "Posner ~~ 0*CRT + 0*Sternberg",
  "CRT ~~ 0*Sternberg",
  
  # cognitive abilities
  "gf =~ zPC + zPS + zM + zC",
  
  # control for Age differences
  "ERP ~ Age",
  "gf ~ Age",
  
  # structural model
  "ERP ~~ gf",
  "gf ~~ 0*N2 + 0*P3",
  "gf ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P2 ~~ 0*Posner + 0*CRT + 0*Sternberg + 0*ERP",
  "N2 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "P3 ~~ 0*Posner + 0*CRT + 0*Sternberg",
  "ERP ~~ 0*Posner + 0*CRT + 0*Sternberg",
  
  # fix intercepts to zero
  "zPosner_P2_FA_32Hz_mas ~ 0",
  "zPosner_N2_FA_32Hz_mas ~ 0",
  "zPosner_P3_FA_32Hz_mas ~ 0",
  "zCRT_P2_FA_32Hz_mas ~ 0",
  "zCRT_N2_FA_32Hz_mas ~ 0",
  "zCRT_P3_FA_32Hz_mas ~ 0",
  "zSternberg_P2_FA_32Hz_mas ~ 0",
  "zSternberg_N2_FA_32Hz_mas ~ 0",
  "zSternberg_P3_FA_32Hz_mas ~ 0",
  "zPC ~ 0",
  "zPS ~ 0",
  "zM ~ 0",
  "zC ~ 0",
  
  # variances
  "ERP ~~ v_erp*ERP",
  "CRT ~~ v_crt*CRT",
  "Sternberg ~~ v_sternberg*Sternberg",
  "Posner ~~ v_posner*Posner",
  "P2 ~~ v_p2*P2",
  "N2 ~~ 0*N2",
  "P3 ~~ v_p3*P3",
  "zPosner_P2_FA_32Hz_mas ~~ v_P_P2*zPosner_P2_FA_32Hz_mas",
  "zPosner_N2_FA_32Hz_mas ~~ v_P_N2*zPosner_N2_FA_32Hz_mas",
  "zPosner_P3_FA_32Hz_mas~~ v_P_P3*zPosner_P3_FA_32Hz_mas",
  "zCRT_P2_FA_32Hz_mas ~~ v_C_P2*zCRT_P2_FA_32Hz_mas",
  "zCRT_N2_FA_32Hz_mas ~~ v_C_N2*zCRT_N2_FA_32Hz_mas",
  "zCRT_P3_FA_32Hz_mas ~~ v_C_P3*zCRT_P3_FA_32Hz_mas",
  "zSternberg_P2_FA_32Hz_mas ~~ v_S_P2*zSternberg_P2_FA_32Hz_mas",
  "zSternberg_N2_FA_32Hz_mas ~~ v_S_N2*zSternberg_N2_FA_32Hz_mas",
  "zSternberg_P3_FA_32Hz_mas ~~ v_S_P3*zSternberg_P3_FA_32Hz_mas",
  
  # trait specifities
  "trait_Posner_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "trait_Posner_N2 := (v_erp)/(v_erp + 0 + v_posner + v_P_N2)",
  "trait_Posner_P3 := (v_erp)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "trait_CRT_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "trait_CRT_N2 := (v_erp)/(v_erp + 0 + v_crt + v_C_N2)",
  "trait_CRT_P3 := (v_erp)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "trait_Sternberg_P2 := (0*v_erp)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "trait_Sternberg_N2 := (v_erp)/(v_erp +0 + v_sternberg + v_S_N2)",
  "trait_Sternberg_P3 := (v_erp)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # component specifities
  "comp_Posner_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "comp_Posner_N2 := (0)/(v_erp + 0 + v_posner + v_P_N2)",
  "comp_Posner_P3 := (v_p3)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "comp_CRT_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "comp_CRT_N2 := (0)/(v_erp + 0 + v_crt + v_C_N2)",
  "comp_CRT_P3 := (v_p3)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "comp_Sternberg_P2 := (v_p2)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "comp_Sternberg_N2 := (0)/(v_erp +0 + v_sternberg + v_S_N2)",
  "comp_Sternberg_P3 := (v_p3)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # task specifities
  "task_Posner_P2 := (0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "task_Posner_N2 := (v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "task_Posner_P3 := (v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "task_CRT_P2 := (0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "task_CRT_N2 := (v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "task_CRT_P3 := (v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "task_Sternberg_P2 := (0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "task_Sternberg_N2 := (v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "task_Sternberg_P3 := (v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)",
  
  # reliabilities
  "rel_Posner_P2 := (0*v_erp + v_p2 + 0*v_posner)/(0*v_erp + v_p2 + 0*v_posner + v_P_P2)",
  "rel_Posner_N2 := (v_erp + 0 + v_posner)/(v_erp + 0 + v_posner + v_P_N2)",
  "rel_Posner_P3 := (v_erp + v_p3 + v_posner)/(v_erp + v_p3 + v_posner + v_P_P3)",
  "rel_CRT_P2 := (0*v_erp + v_p2 + 0*v_crt)/(0*v_erp + v_p2 + 0*v_crt + v_C_P2)",
  "rel_CRT_N2 := (v_erp + 0 + v_crt)/(v_erp + 0 + v_crt + v_C_N2)",
  "rel_CRT_P3 := (v_erp + v_p3 + v_crt)/(v_erp + v_p3 + v_crt + v_C_P3)",
  "rel_Sternberg_P2 := (0*v_erp + v_p2 + 0*v_sternberg)/(0*v_erp + v_p2 + 0*v_sternberg + v_S_P2)",
  "rel_Sternberg_N2 := (v_erp +0 + v_sternberg)/(v_erp +0 + v_sternberg + v_S_N2)",
  "rel_Sternberg_P3 := (v_erp + v_p3 + v_sternberg)/(v_erp + v_p3 + v_sternberg + v_S_P3)")

fit_mas_32Hz_FA <- sem(model_mas_32Hz_FA, data = data, estimator = "MLR" , missing="fiml", std.lv = FALSE)

round(cbind(RP8A  = fitMeasures(fit_avg_8Hz_PL, FITM),
            RP85  = fitMeasures(fit_avg_8Hz_FA, FITM),
            RP16A = fitMeasures(fit_avg_16Hz_PL, FITM),
            RP165 = fitMeasures(fit_avg_16Hz_FA, FITM),
            RP32A = fitMeasures(fit_avg_32Hz_PL, FITM),
            RP325 = fitMeasures(fit_avg_32Hz_FA, FITM),
            FP8A  = fitMeasures(fit_mas_8Hz_PL, FITM),
            FP85  = fitMeasures(fit_mas_8Hz_FA, FITM),
            FP16A  = fitMeasures(fit_mas_16Hz_PL, FITM),
            FP165  = fitMeasures(fit_mas_16Hz_FA, FITM),
            FP32A  = fitMeasures(fit_mas_32Hz_PL, FITM),
            FP325  = fitMeasures(fit_mas_32Hz_FA, FITM)), 3)
##                    RP8A     RP85    RP16A    RP165    RP32A    RP325     FP8A
## chisq           156.576  181.949  154.501  177.899  178.192  197.743  143.141
## df               89.000   89.000   89.000   89.000   89.000   89.000   90.000
## npar             28.000   28.000   28.000   28.000   28.000   28.000   27.000
## cfi               0.843    0.781    0.814    0.750    0.712    0.703    0.879
## rmsea             0.072    0.084    0.071    0.082    0.082    0.091    0.063
## rmsea.ci.lower    0.053    0.066    0.051    0.064    0.065    0.074    0.043
## rmsea.ci.upper    0.090    0.101    0.089    0.100    0.100    0.108    0.082
## aic            4716.327 4751.682 4876.352 4867.857 4937.026 4900.024 4667.536
## bic            4800.249 4835.604 4960.274 4951.779 5020.948 4983.946 4748.461
##                    FP85    FP16A    FP165    FP32A    FP325
## chisq           142.549  167.119  160.838  142.264  167.071
## df               90.000   91.000   91.000   90.000   91.000
## npar             27.000   26.000   26.000   27.000   26.000
## cfi               0.889    0.822    0.836    0.883    0.848
## rmsea             0.063    0.075    0.072    0.063    0.075
## rmsea.ci.lower    0.042    0.057    0.053    0.042    0.057
## rmsea.ci.upper    0.082    0.093    0.090    0.082    0.093
## aic            4636.916 4784.147 4784.586 4757.291 4728.877
## bic            4717.841 4862.074 4862.513 4838.215 4806.805
summary(fit_mas_32Hz_PL, fit.measures=TRUE,standardized = TRUE,rsquare=T, ci = TRUE)
## lavaan 0.6.14 ended normally after 46 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        27
## 
##   Number of observations                           148
##   Number of missing patterns                        14
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                               142.264     139.311
##   Degrees of freedom                                90          90
##   P-value (Chi-square)                           0.000       0.001
##   Scaling correction factor                                  1.021
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                               536.943     516.084
##   Degrees of freedom                                91          91
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.040
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.883       0.884
##   Tucker-Lewis Index (TLI)                       0.881       0.883
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.884
##   Robust Tucker-Lewis Index (TLI)                            0.882
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -2351.645   -2351.645
##   Scaling correction factor                                  1.091
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)      -2280.513   -2280.513
##   Scaling correction factor                                  1.037
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                                4757.291    4757.291
##   Bayesian (BIC)                              4838.215    4838.215
##   Sample-size adjusted Bayesian (SABIC)       4752.770    4752.770
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.063       0.061
##   90 Percent confidence interval - lower         0.042       0.040
##   90 Percent confidence interval - upper         0.082       0.080
##   P-value H_0: RMSEA <= 0.050                    0.143       0.178
##   P-value H_0: RMSEA >= 0.080                    0.067       0.048
##                                                                   
##   Robust RMSEA                                               0.065
##   90 Percent confidence interval - lower                     0.043
##   90 Percent confidence interval - upper                     0.085
##   P-value H_0: Robust RMSEA <= 0.050                         0.119
##   P-value H_0: Robust RMSEA >= 0.080                         0.118
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.092       0.092
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   P2 =~                                                                 
##     zPs_P2_PL_32H_    1.000                               1.000    1.000
##     zCRT_P2_PL_32H    1.000                               1.000    1.000
##     zSt_P2_PL_32H_    1.000                               1.000    1.000
##   N2 =~                                                                 
##     zPs_N2_PL_32H_    1.000                               1.000    1.000
##     zCRT_N2_PL_32H    1.000                               1.000    1.000
##     zSt_N2_PL_32H_    1.000                               1.000    1.000
##   P3 =~                                                                 
##     zPs_P3_PL_32H_    1.000                               1.000    1.000
##     zCRT_P3_PL_32H    1.000                               1.000    1.000
##     zSt_P3_PL_32H_    1.000                               1.000    1.000
##   ERP =~                                                                
##     N2                1.000                               1.000    1.000
##     P3                1.000                               1.000    1.000
##   Posner =~                                                             
##     zPs_N2_PL_32H_    1.000                               1.000    1.000
##     zPs_P3_PL_32H_    1.000                               1.000    1.000
##   CRT =~                                                                
##     zCRT_N2_PL_32H    1.000                               1.000    1.000
##     zCRT_P3_PL_32H    1.000                               1.000    1.000
##   Sternberg =~                                                          
##     zSt_N2_PL_32H_    1.000                               1.000    1.000
##     zSt_P3_PL_32H_    1.000                               1.000    1.000
##   gf =~                                                                 
##     zPC               1.000                               1.000    1.000
##     zPS               0.910    0.168    5.415    0.000    0.580    1.239
##     zM                0.767    0.144    5.335    0.000    0.485    1.049
##     zC                0.554    0.127    4.376    0.000    0.306    0.802
##    Std.lv  Std.all
##                   
##     0.653    0.658
##     0.653    0.631
##     0.653    0.672
##                   
##     0.257    0.252
##     0.257    0.257
##     0.257    0.259
##                   
##     0.402    0.402
##     0.402    0.404
##     0.402    0.411
##                   
##     0.893    0.893
##     0.571    0.571
##                   
##     0.790    0.776
##     0.790    0.790
##                   
##     0.492    0.492
##     0.492    0.494
##                   
##     0.806    0.815
##     0.806    0.825
##                   
##     0.743    0.751
##     0.676    0.682
##     0.570    0.575
##     0.411    0.414
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   ERP ~                                                                 
##     Age               0.001    0.002    0.895    0.371   -0.002    0.004
##   gf ~                                                                  
##     Age              -0.004    0.002   -1.541    0.123   -0.008    0.001
##    Std.lv  Std.all
##                   
##     0.006    0.082
##                   
##    -0.005   -0.068
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Posner ~~                                                             
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##   CRT ~~                                                                
##     Sternberg         0.000                               0.000    0.000
##  .ERP ~~                                                                
##    .gf               -0.159    0.043   -3.682    0.000   -0.244   -0.075
##  .N2 ~~                                                                 
##    .gf                0.000                               0.000    0.000
##  .P3 ~~                                                                 
##    .gf                0.000                               0.000    0.000
##   Posner ~~                                                             
##    .gf                0.000                               0.000    0.000
##   CRT ~~                                                                
##    .gf                0.000                               0.000    0.000
##   Sternberg ~~                                                          
##    .gf                0.000                               0.000    0.000
##   P2 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##    .ERP               0.000                               0.000    0.000
##  .N2 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##  .P3 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##  .ERP ~~                                                                
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##    Std.lv  Std.all
##                   
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##    -0.941   -0.941
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .zPs_P2_PL_32H_    0.000                               0.000    0.000
##    .zPs_N2_PL_32H_    0.000                               0.000    0.000
##    .zPs_P3_PL_32H_    0.000                               0.000    0.000
##    .zCRT_P2_PL_32H    0.000                               0.000    0.000
##    .zCRT_N2_PL_32H    0.000                               0.000    0.000
##    .zCRT_P3_PL_32H    0.000                               0.000    0.000
##    .zSt_P2_PL_32H_    0.000                               0.000    0.000
##    .zSt_N2_PL_32H_    0.000                               0.000    0.000
##    .zSt_P3_PL_32H_    0.000                               0.000    0.000
##    .zPC               0.000                               0.000    0.000
##    .zPS               0.000                               0.000    0.000
##    .zM                0.000                               0.000    0.000
##    .zC                0.000                               0.000    0.000
##     P2                0.000                               0.000    0.000
##    .N2                0.000                               0.000    0.000
##    .P3                0.000                               0.000    0.000
##    .ERP               0.000                               0.000    0.000
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##    .gf                0.000                               0.000    0.000
##    Std.lv  Std.all
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .ERP     (v_rp)    0.052    0.048    1.087    0.277   -0.042    0.147
##     CRT     (v_cr)    0.242    0.077    3.161    0.002    0.092    0.392
##     Strnb   (v_st)    0.650    0.103    6.314    0.000    0.449    0.852
##     Posnr   (v_ps)    0.625    0.108    5.789    0.000    0.413    0.836
##     P2      (v_p2)    0.427    0.072    5.895    0.000    0.285    0.569
##    .N2      (v_n2)    0.013    0.031    0.431    0.667   -0.047    0.074
##    .P3      (v_p3)    0.109    0.040    2.754    0.006    0.031    0.186
##    .zP_P2 (v_P_P2)    0.560    0.101    5.553    0.000    0.363    0.758
##    .zP_N2  (v_P_N)    0.348    0.087    4.012    0.000    0.178    0.517
##    .zP_P3 (v_P_P3)    0.214    0.071    3.018    0.003    0.075    0.352
##    .zCRT_ (v_C_P2)    0.645    0.124    5.224    0.000    0.403    0.887
##    .zCRT_  (v_C_N)    0.693    0.130    5.344    0.000    0.439    0.947
##    .zCRT_ (v_C_P3)    0.587    0.139    4.218    0.000    0.314    0.860
##    .zS_P2 (v_S_P2)    0.517    0.124    4.171    0.000    0.274    0.761
##    .zS_N2  (v_S_N)    0.264    0.059    4.477    0.000    0.148    0.379
##    .zS_P3 (v_S_P3)    0.143    0.080    1.790    0.073   -0.014    0.300
##    .zPC               0.426    0.099    4.292    0.000    0.231    0.620
##    .zPS               0.524    0.094    5.559    0.000    0.339    0.708
##    .zM                0.659    0.098    6.739    0.000    0.467    0.851
##    .zC                0.819    0.098    8.347    0.000    0.627    1.011
##    .gf                0.549    0.130    4.212    0.000    0.294    0.805
##    Std.lv  Std.all
##     0.993    0.993
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     0.202    0.202
##     0.674    0.674
##     0.560    0.568
##     0.348    0.335
##     0.214    0.214
##     0.645    0.602
##     0.693    0.692
##     0.587    0.593
##     0.517    0.548
##     0.264    0.269
##     0.143    0.150
##     0.426    0.436
##     0.524    0.534
##     0.659    0.670
##     0.819    0.829
##     0.995    0.995
## 
## R-Square:
##                    Estimate
##     ERP               0.007
##     N2                0.798
##     P3                0.326
##     zPs_P2_PL_32H_    0.432
##     zPs_N2_PL_32H_    0.665
##     zPs_P3_PL_32H_    0.786
##     zCRT_P2_PL_32H    0.398
##     zCRT_N2_PL_32H    0.308
##     zCRT_P3_PL_32H    0.407
##     zSt_P2_PL_32H_    0.452
##     zSt_N2_PL_32H_    0.731
##     zSt_P3_PL_32H_    0.850
##     zPC               0.564
##     zPS               0.466
##     zM                0.330
##     zC                0.171
##     gf                0.005
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     trait_Posnr_P2    0.000                               0.000    0.000
##     trait_Posnr_N2    0.050    0.046    1.088    0.277   -0.040    0.141
##     trait_Posnr_P3    0.052    0.047    1.108    0.268   -0.040    0.145
##     trait_CRT_P2      0.000                               0.000    0.000
##     trait_CRT_N2      0.052    0.048    1.090    0.276   -0.042    0.146
##     trait_CRT_P3      0.053    0.049    1.083    0.279   -0.043    0.148
##     trt_Strnbrg_P2    0.000                               0.000    0.000
##     trt_Strnbrg_N2    0.053    0.050    1.057    0.291   -0.046    0.152
##     trt_Strnbrg_P3    0.055    0.050    1.091    0.275   -0.044    0.153
##     comp_Posner_P2    0.432    0.066    6.533    0.000    0.303    0.562
##     comp_Posner_N2    0.013    0.030    0.429    0.668   -0.046    0.071
##     comp_Posner_P3    0.109    0.040    2.754    0.006    0.031    0.186
##     comp_CRT_P2       0.398    0.065    6.089    0.000    0.270    0.526
##     comp_CRT_N2       0.013    0.031    0.429    0.668   -0.047    0.074
##     comp_CRT_P3       0.110    0.038    2.884    0.004    0.035    0.185
##     cmp_Strnbrg_P2    0.452    0.087    5.216    0.000    0.282    0.622
##     cmp_Strnbrg_N2    0.014    0.031    0.434    0.664   -0.048    0.075
##     cmp_Strnbrg_P3    0.114    0.043    2.674    0.007    0.030    0.198
##     task_Posner_P2    0.000                               0.000    0.000
##     task_Posner_N2    0.602    0.067    9.017    0.000    0.471    0.733
##     task_Posner_P3    0.625    0.077    8.120    0.000    0.474    0.776
##     task_CRT_P2       0.000                               0.000    0.000
##     task_CRT_N2       0.242    0.066    3.638    0.000    0.112    0.372
##     task_CRT_P3       0.244    0.076    3.217    0.001    0.095    0.393
##     tsk_Strnbrg_P2    0.000                               0.000    0.000
##     tsk_Strnbrg_N2    0.664    0.058   11.505    0.000    0.551    0.777
##     tsk_Strnbrg_P3    0.681    0.093    7.299    0.000    0.498    0.864
##     rel_Posner_P2     0.432    0.066    6.533    0.000    0.303    0.562
##     rel_Posner_N2     0.665    0.062   10.684    0.000    0.543    0.787
##     rel_Posner_P3     0.786    0.073   10.793    0.000    0.643    0.929
##     rel_CRT_P2        0.398    0.065    6.089    0.000    0.270    0.526
##     rel_CRT_N2        0.307    0.059    5.200    0.000    0.192    0.423
##     rel_CRT_P3        0.407    0.092    4.401    0.000    0.226    0.588
##     rel_Strnbrg_P2    0.452    0.087    5.216    0.000    0.282    0.622
##     rel_Strnbrg_N2    0.731    0.050   14.726    0.000    0.634    0.828
##     rel_Strnbrg_P3    0.850    0.079   10.794    0.000    0.696    1.005
##    Std.lv  Std.all
##     0.000    0.000
##     0.391    0.393
##     0.345    0.345
##     0.000    0.000
##     0.344    0.344
##     0.305    0.305
##     0.000    0.000
##     0.404    0.403
##     0.353    0.353
##     0.641    0.638
##     0.079    0.080
##     0.234    0.234
##     0.608    0.624
##     0.070    0.070
##     0.207    0.207
##     0.659    0.646
##     0.082    0.082
##     0.240    0.239
##     0.000    0.000
##     0.393    0.395
##     0.347    0.347
##     0.000    0.000
##     0.346    0.346
##     0.307    0.307
##     0.000    0.000
##     0.407    0.406
##     0.356    0.355
##     0.641    0.638
##     0.863    0.868
##     0.926    0.926
##     0.608    0.624
##     0.760    0.760
##     0.820    0.818
##     0.659    0.646
##     0.893    0.891
##     0.949    0.947
summary(fit_mas_32Hz_FA, fit.measures=TRUE,standardized = TRUE,rsquare=T, ci = TRUE)
## lavaan 0.6.14 ended normally after 41 iterations
## 
##   Estimator                                         ML
##   Optimization method                           NLMINB
##   Number of model parameters                        26
## 
##   Number of observations                           148
##   Number of missing patterns                        15
## 
## Model Test User Model:
##                                               Standard      Scaled
##   Test Statistic                               167.071     166.179
##   Degrees of freedom                                91          91
##   P-value (Chi-square)                           0.000       0.000
##   Scaling correction factor                                  1.005
##     Yuan-Bentler correction (Mplus variant)                       
## 
## Model Test Baseline Model:
## 
##   Test statistic                               591.001     572.083
##   Degrees of freedom                                91          91
##   P-value                                        0.000       0.000
##   Scaling correction factor                                  1.033
## 
## User Model versus Baseline Model:
## 
##   Comparative Fit Index (CFI)                    0.848       0.844
##   Tucker-Lewis Index (TLI)                       0.848       0.844
##                                                                   
##   Robust Comparative Fit Index (CFI)                         0.847
##   Robust Tucker-Lewis Index (TLI)                            0.847
## 
## Loglikelihood and Information Criteria:
## 
##   Loglikelihood user model (H0)              -2338.439   -2338.439
##   Scaling correction factor                                  1.121
##       for the MLR correction                                      
##   Loglikelihood unrestricted model (H1)      -2254.903   -2254.903
##   Scaling correction factor                                  1.031
##       for the MLR correction                                      
##                                                                   
##   Akaike (AIC)                                4728.877    4728.877
##   Bayesian (BIC)                              4806.805    4806.805
##   Sample-size adjusted Bayesian (SABIC)       4724.524    4724.524
## 
## Root Mean Square Error of Approximation:
## 
##   RMSEA                                          0.075       0.075
##   90 Percent confidence interval - lower         0.057       0.056
##   90 Percent confidence interval - upper         0.093       0.092
##   P-value H_0: RMSEA <= 0.050                    0.014       0.015
##   P-value H_0: RMSEA >= 0.080                    0.341       0.326
##                                                                   
##   Robust RMSEA                                               0.079
##   90 Percent confidence interval - lower                     0.060
##   90 Percent confidence interval - upper                     0.098
##   P-value H_0: Robust RMSEA <= 0.050                         0.009
##   P-value H_0: Robust RMSEA >= 0.080                         0.475
## 
## Standardized Root Mean Square Residual:
## 
##   SRMR                                           0.099       0.099
## 
## Parameter Estimates:
## 
##   Standard errors                             Sandwich
##   Information bread                           Observed
##   Observed information based on                Hessian
## 
## Latent Variables:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   P2 =~                                                                 
##     zPs_P2_FA_32H_    1.000                               1.000    1.000
##     zCRT_P2_FA_32H    1.000                               1.000    1.000
##     zSt_P2_FA_32H_    1.000                               1.000    1.000
##   N2 =~                                                                 
##     zPs_N2_FA_32H_    1.000                               1.000    1.000
##     zCRT_N2_FA_32H    1.000                               1.000    1.000
##     zSt_N2_FA_32H_    1.000                               1.000    1.000
##   P3 =~                                                                 
##     zPs_P3_FA_32H_    1.000                               1.000    1.000
##     zCRT_P3_FA_32H    1.000                               1.000    1.000
##     zSt_P3_FA_32H_    1.000                               1.000    1.000
##   ERP =~                                                                
##     N2                1.000                               1.000    1.000
##     P3                1.000                               1.000    1.000
##   Posner =~                                                             
##     zPs_N2_FA_32H_    1.000                               1.000    1.000
##     zPs_P3_FA_32H_    1.000                               1.000    1.000
##   CRT =~                                                                
##     zCRT_N2_FA_32H    1.000                               1.000    1.000
##     zCRT_P3_FA_32H    1.000                               1.000    1.000
##   Sternberg =~                                                          
##     zSt_N2_FA_32H_    1.000                               1.000    1.000
##     zSt_P3_FA_32H_    1.000                               1.000    1.000
##   gf =~                                                                 
##     zPC               1.000                               1.000    1.000
##     zPS               0.897    0.164    5.469    0.000    0.575    1.218
##     zM                0.758    0.145    5.241    0.000    0.475    1.042
##     zC                0.549    0.126    4.361    0.000    0.302    0.796
##    Std.lv  Std.all
##                   
##     0.660    0.680
##     0.660    0.628
##     0.660    0.672
##                   
##     0.292    0.288
##     0.292    0.291
##     0.292    0.293
##                   
##     0.430    0.433
##     0.430    0.439
##     0.430    0.428
##                   
##     1.000    1.000
##     0.678    0.678
##                   
##     0.788    0.779
##     0.788    0.794
##                   
##     0.426    0.425
##     0.426    0.435
##                   
##     0.823    0.827
##     0.823    0.818
##                   
##     0.748    0.757
##     0.671    0.678
##     0.567    0.572
##     0.411    0.413
## 
## Regressions:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   ERP ~                                                                 
##     Age               0.002    0.002    1.036    0.300   -0.001    0.005
##   gf ~                                                                  
##     Age              -0.004    0.002   -1.530    0.126   -0.008    0.001
##    Std.lv  Std.all
##                   
##     0.006    0.077
##                   
##    -0.005   -0.067
## 
## Covariances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##   Posner ~~                                                             
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##   CRT ~~                                                                
##     Sternberg         0.000                               0.000    0.000
##  .ERP ~~                                                                
##    .gf               -0.171    0.046   -3.682    0.000   -0.262   -0.080
##  .N2 ~~                                                                 
##    .gf                0.000                               0.000    0.000
##  .P3 ~~                                                                 
##    .gf                0.000                               0.000    0.000
##   Posner ~~                                                             
##    .gf                0.000                               0.000    0.000
##   CRT ~~                                                                
##    .gf                0.000                               0.000    0.000
##   Sternberg ~~                                                          
##    .gf                0.000                               0.000    0.000
##   P2 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##    .ERP               0.000                               0.000    0.000
##  .N2 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##  .P3 ~~                                                                 
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##  .ERP ~~                                                                
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##    Std.lv  Std.all
##                   
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##    -0.788   -0.788
##                   
##       NaN      NaN
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##       NaN      NaN
##       NaN      NaN
##       NaN      NaN
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##                   
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
## 
## Intercepts:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .zPs_P2_FA_32H_    0.000                               0.000    0.000
##    .zPs_N2_FA_32H_    0.000                               0.000    0.000
##    .zPs_P3_FA_32H_    0.000                               0.000    0.000
##    .zCRT_P2_FA_32H    0.000                               0.000    0.000
##    .zCRT_N2_FA_32H    0.000                               0.000    0.000
##    .zCRT_P3_FA_32H    0.000                               0.000    0.000
##    .zSt_P2_FA_32H_    0.000                               0.000    0.000
##    .zSt_N2_FA_32H_    0.000                               0.000    0.000
##    .zSt_P3_FA_32H_    0.000                               0.000    0.000
##    .zPC               0.000                               0.000    0.000
##    .zPS               0.000                               0.000    0.000
##    .zM                0.000                               0.000    0.000
##    .zC                0.000                               0.000    0.000
##     P2                0.000                               0.000    0.000
##    .N2                0.000                               0.000    0.000
##    .P3                0.000                               0.000    0.000
##    .ERP               0.000                               0.000    0.000
##     Posner            0.000                               0.000    0.000
##     CRT               0.000                               0.000    0.000
##     Sternberg         0.000                               0.000    0.000
##    .gf                0.000                               0.000    0.000
##    Std.lv  Std.all
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
##     0.000    0.000
## 
## Variances:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##    .ERP     (v_rp)    0.085    0.048    1.777    0.076   -0.009    0.178
##     CRT     (v_cr)    0.182    0.083    2.201    0.028    0.020    0.344
##     Strnb   (v_st)    0.677    0.093    7.280    0.000    0.495    0.859
##     Posnr   (v_ps)    0.621    0.118    5.270    0.000    0.390    0.852
##     P2      (v_p2)    0.436    0.074    5.894    0.000    0.291    0.581
##    .N2                0.000                               0.000    0.000
##    .P3      (v_p3)    0.100    0.034    2.951    0.003    0.034    0.166
##    .zP_P2 (v_P_P2)    0.507    0.100    5.069    0.000    0.311    0.704
##    .zP_N2  (v_P_N)    0.318    0.065    4.870    0.000    0.190    0.446
##    .zP_P3 (v_P_P3)    0.179    0.076    2.362    0.018    0.030    0.327
##    .zCRT_ (v_C_P2)    0.668    0.126    5.310    0.000    0.422    0.915
##    .zCRT_  (v_C_N)    0.740    0.121    6.122    0.000    0.503    0.977
##    .zCRT_ (v_C_P3)    0.594    0.151    3.945    0.000    0.299    0.889
##    .zS_P2 (v_S_P2)    0.531    0.146    3.636    0.000    0.245    0.817
##    .zS_N2  (v_S_N)    0.228    0.049    4.623    0.000    0.131    0.324
##    .zS_P3 (v_S_P3)    0.150    0.067    2.228    0.026    0.018    0.281
##    .zPC               0.417    0.098    4.270    0.000    0.226    0.608
##    .zPS               0.530    0.093    5.726    0.000    0.348    0.711
##    .zM                0.662    0.098    6.740    0.000    0.469    0.854
##    .zC                0.819    0.098    8.382    0.000    0.628    1.011
##    .gf                0.557    0.131    4.267    0.000    0.301    0.813
##    Std.lv  Std.all
##     0.994    0.994
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     1.000    1.000
##     0.000    0.000
##     0.540    0.540
##     0.507    0.538
##     0.318    0.311
##     0.179    0.181
##     0.668    0.605
##     0.740    0.735
##     0.594    0.618
##     0.531    0.549
##     0.228    0.230
##     0.150    0.148
##     0.417    0.427
##     0.530    0.541
##     0.662    0.673
##     0.819    0.829
##     0.995    0.995
## 
## R-Square:
##                    Estimate
##     ERP               0.006
##     N2                1.000
##     P3                0.460
##     zPs_P2_FA_32H_    0.462
##     zPs_N2_FA_32H_    0.689
##     zPs_P3_FA_32H_    0.819
##     zCRT_P2_FA_32H    0.395
##     zCRT_N2_FA_32H    0.265
##     zCRT_P3_FA_32H    0.382
##     zSt_P2_FA_32H_    0.451
##     zSt_N2_FA_32H_    0.770
##     zSt_P3_FA_32H_    0.852
##     zPC               0.573
##     zPS               0.459
##     zM                0.327
##     zC                0.171
##     gf                0.005
## 
## Defined Parameters:
##                    Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
##     trait_Posnr_P2    0.000                               0.000    0.000
##     trait_Posnr_N2    0.083    0.047    1.748    0.080   -0.010    0.175
##     trait_Posnr_P3    0.086    0.048    1.774    0.076   -0.009    0.181
##     trait_CRT_P2      0.000                               0.000    0.000
##     trait_CRT_N2      0.084    0.048    1.767    0.077   -0.009    0.177
##     trait_CRT_P3      0.088    0.051    1.741    0.082   -0.011    0.187
##     trt_Strnbrg_P2    0.000                               0.000    0.000
##     trt_Strnbrg_N2    0.085    0.049    1.760    0.078   -0.010    0.181
##     trt_Strnbrg_P3    0.084    0.046    1.804    0.071   -0.007    0.174
##     comp_Posner_P2    0.462    0.072    6.440    0.000    0.322    0.603
##     comp_Posner_N2    0.000                               0.000    0.000
##     comp_Posner_P3    0.102    0.035    2.910    0.004    0.033    0.170
##     comp_CRT_P2       0.395    0.062    6.383    0.000    0.274    0.516
##     comp_CRT_N2       0.000                               0.000    0.000
##     comp_CRT_P3       0.104    0.034    3.065    0.002    0.038    0.171
##     cmp_Strnbrg_P2    0.451    0.095    4.759    0.000    0.265    0.637
##     cmp_Strnbrg_N2    0.000                               0.000    0.000
##     cmp_Strnbrg_P3    0.099    0.034    2.871    0.004    0.031    0.166
##     task_Posner_P2    0.000                               0.000    0.000
##     task_Posner_N2    0.607    0.065    9.363    0.000    0.480    0.734
##     task_Posner_P3    0.631    0.089    7.109    0.000    0.457    0.805
##     task_CRT_P2       0.000                               0.000    0.000
##     task_CRT_N2       0.181    0.076    2.387    0.017    0.032    0.329
##     task_CRT_P3       0.189    0.086    2.196    0.028    0.020    0.358
##     tsk_Strnbrg_P2    0.000                               0.000    0.000
##     tsk_Strnbrg_N2    0.684    0.054   12.688    0.000    0.579    0.790
##     tsk_Strnbrg_P3    0.670    0.074    9.067    0.000    0.525    0.814
##     rel_Posner_P2     0.462    0.072    6.440    0.000    0.322    0.603
##     rel_Posner_N2     0.689    0.045   15.438    0.000    0.602    0.777
##     rel_Posner_P3     0.819    0.077   10.639    0.000    0.668    0.969
##     rel_CRT_P2        0.395    0.062    6.383    0.000    0.274    0.516
##     rel_CRT_N2        0.265    0.068    3.899    0.000    0.132    0.398
##     rel_CRT_P3        0.382    0.097    3.915    0.000    0.191    0.573
##     rel_Strnbrg_P2    0.451    0.095    4.759    0.000    0.265    0.637
##     rel_Strnbrg_N2    0.770    0.040   19.298    0.000    0.692    0.848
##     rel_Strnbrg_P3    0.852    0.063   13.576    0.000    0.729    0.975
##    Std.lv  Std.all
##     0.000    0.000
##     0.430    0.431
##     0.366    0.366
##     0.000    0.000
##     0.364    0.364
##     0.318    0.315
##     0.000    0.000
##     0.447    0.447
##     0.370    0.371
##     0.663    0.650
##     0.000    0.000
##     0.199    0.199
##     0.599    0.623
##     0.000    0.000
##     0.173    0.171
##     0.653    0.646
##     0.000    0.000
##     0.201    0.201
##     0.000    0.000
##     0.432    0.434
##     0.369    0.368
##     0.000    0.000
##     0.366    0.366
##     0.320    0.317
##     0.000    0.000
##     0.450    0.450
##     0.373    0.373
##     0.663    0.650
##     0.862    0.865
##     0.934    0.933
##     0.599    0.623
##     0.729    0.731
##     0.810    0.804
##     0.653    0.646
##     0.898    0.897
##     0.944    0.945

Controlling for age made all model fits unacceptable. As in Schubert et al.’s presented results, the effect of age on the relationship between ERP-g and BIS-g was minuscule, as they became -0.941 and -0.788.

Discussion

Schubert et al. provided some fascinating data. It seems that intelligence can be measured from ERPs. So to answer the age-old question “What do the intelligence tests test?” We could say “neural latency”. But this should be considered carefully because that might make it seem like reduced neural latency is what drives intelligence, and this is not the case. Intelligence may be influenced by neural latency, but despite neural latency measures being capable of measuring it practically perfectly, successfully modifying speed does not impact intelligence (e.g., Stough et al., 1995; Schubert et al., 2018). The same is true for working memory and interventions on it (Sala et al., 2019).

This is very theoretically informative. If the causal structure of intelligence is validated and interventions produce real gains and they are not gains that transfer to g, we are dealing with a trait that demands reflective measurement. So, all measures of cognitive ability and sufficiently-advanced measures of potential underlying causes or influences on it may just be influenced by it. In other words, we have measurement with sufficiently-advanced indication coupled with unidirectional causation.

I will be using these estimates for my just one g meta-analysis.

References

Schubert, A.-L., Loeffler, C., Hagemann, D., & Sadus, K. (2023). How robust is the relationship between neural processing speed and cognitive abilities? Psychophysiology, 60(2), e14165. https://doi.org/10.1111/psyp.14165

Source: https://onlinelibrary.wiley.com/doi/10.1111/psyp.14165 Code: https://osf.io/7qruk

I am immensely thankful that Schubert et al. provided their code and data for reanalysis.

Valerius, S., & Sparfeldt, J. R. (2014). Consistent g- as well as consistent verbal-, numerical- and figural-factors in nested factor models? Confirmatory factor analyses using three test batteries. Intelligence, 44, 120–133. https://doi.org/10.1016/j.intell.2014.04.003

Brody, N. (2003). Construct validation of the Sternberg Triarchic Abilities Test: Comment and reanalysis. Intelligence, 31(4), 319–329. https://doi.org/10.1016/S0160-2896(01)00087-3

Brody, N. (2003). What Sternberg should have concluded. Intelligence, 31(4), 339–342. https://doi.org/10.1016/S0160-2896(02)00190-3

Koke, L. C., & Vernon, P. A. (2003). The Sternberg Triarchic Abilities Test (STAT) as a measure of academic achievement and general intelligence. Personality and Individual Differences, 35(8), 1803–1807. https://doi.org/10.1016/S0191-8869(03)00005-9

Johnson, W., Nijenhuis, J. te, & Bouchard, T. J. (2008). Still just 1 g: Consistent results from five test batteries. Intelligence, 36(1), 81–95. https://doi.org/10.1016/j.intell.2007.06.001

Yang, P., Fan, C., Wang, M., & Li, L. (2017). A Comparative Study of Average, Linked Mastoid, and REST References for ERP Components Acquired during fMRI. Frontiers in Neuroscience, 11. https://www.frontiersin.org/articles/10.3389/fnins.2017.00247

Dong, L., Liu, X., Zhao, L., Lai, Y., Gong, D., Liu, T., & Yao, D. (2019). A Comparative Study of Different EEG Reference Choices for Event-Related Potentials Extracted by Independent Component Analysis. Frontiers in Neuroscience, 13. https://www.frontiersin.org/articles/10.3389/fnins.2019.01068

Yao, D., Qin, Y., Hu, S., Dong, L., Bringas Vega, M. L., & Valdés Sosa, P. A. (2019). Which Reference Should We Use for EEG and ERP practice? Brain Topography, 32(4), 530–549. https://doi.org/10.1007/s10548-019-00707-x

Stough, C., Mangan, G., Bates, T., Kerkin, B., Pellett, O., & Frank, N. (1995). Effects of nicotine on perceptual speed. Psychopharmacology, 119(3), 305–310. https://doi.org/10.1007/BF02246296

Schubert, A.-L., Hagemann, D., Frischkorn, G. T., & Herpertz, S. C. (2018). Faster, but not smarter: An experimental analysis of the relationship between mental speed and mental abilities. Intelligence, 71, 66–75. https://doi.org/10.1016/j.intell.2018.10.005

Sala, G., Aksayli, N. D., Tatlidil, K. S., Tatsumi, T., Gondo, Y., & Gobet, F. (2019). Near and Far Transfer in Cognitive Training: A Second-Order Meta-Analysis. Collabra: Psychology, 5(1), 18. https://doi.org/10.1525/collabra.203 (It should also be noted that interventions produce fadeouts.)

sessionInfo()
## R version 4.2.2 (2022-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19045)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=English_United States.utf8 
## [2] LC_CTYPE=English_United States.utf8   
## [3] LC_MONETARY=English_United States.utf8
## [4] LC_NUMERIC=C                          
## [5] LC_TIME=English_United States.utf8    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] psych_2.2.9   lavaan_0.6-14 pacman_0.5.1 
## 
## loaded via a namespace (and not attached):
##  [1] rstudioapi_0.14 knitr_1.42      MASS_7.3-58.1   mnormt_2.1.1   
##  [5] pbivnorm_0.6.0  lattice_0.20-45 R6_2.5.1        rlang_1.0.6    
##  [9] quadprog_1.5-8  fastmap_1.1.0   tools_4.2.2     parallel_4.2.2 
## [13] grid_4.2.2      nlme_3.1-160    xfun_0.37       cli_3.6.0      
## [17] jquerylib_0.1.4 htmltools_0.5.4 yaml_2.3.7      digest_0.6.31  
## [21] vctrs_0.5.2     sass_0.4.5      cachem_1.0.6    evaluate_0.20  
## [25] rmarkdown_2.20  compiler_4.2.2  bslib_0.4.2     stats4_4.2.2   
## [29] jsonlite_1.8.4