Incorporating demographic controls in hierarchical factor analysis for cognitive ability

I’m working on a multi-level factor analysis to measure intelligence using lavaan. My model has three tiers: individual test scores, specific ability factors, and a general intelligence factor. Here’s a simplified version of my current setup:

intelligence_model <- '
    spatial =~ Test1 + Test2 + Test3 + Test4
    verbal =~ Test5 + Test6 + Test7
    recall =~ Test8 + Test9
    processing =~ Test10 + Test11
    g_factor =~ spatial + verbal + recall + processing
'

I want to add age and sex as control variables but I’m not sure about the best approach. Should I link them to the g_factor, the specific abilities, or all the individual tests? I’ve tried adding them to each test like this:

Test1 ~~ Age
Test2 ~~ Age
# ... and so on for all tests and Sex

Does this make sense? Or is there a better way to include these controls in my model? I’d really appreciate some guidance on this. Thanks!

Hey there! I’m really intrigued by your hierarchical factor analysis model for cognitive ability. Have you considered another approach? What if you treated age and sex as predictors of both the g_factor and the specific ability factors? Something like this:

intelligence_model <- '
    spatial =~ Test1 + Test2 + Test3 + Test4
    verbal =~ Test5 + Test6 + Test7
    recall =~ Test8 + Test9
    processing =~ Test10 + Test11
    g_factor =~ spatial + verbal + recall + processing

    g_factor ~ Age + Sex
    spatial ~ Age + Sex
    verbal ~ Age + Sex
    recall ~ Age + Sex
    processing ~ Age + Sex
'

This way, you can see how age and sex influence both general intelligence and specific cognitive domains. It might give you a more comprehensive picture. What do you think? Have you tried anything like this before?

Also, I’m curious - what made you choose these particular tests for each factor? Do you have any hypotheses about which abilities might be more influenced by age or sex?

I’ve worked on similar models, and I’d recommend a different approach. Instead of attaching age and sex to g_factor or individual tests, consider incorporating them as covariates for the specific ability factors. This method allows you to examine how demographic variables influence different cognitive domains.

Your model could look like this:

intelligence_model <- '
    spatial =~ Test1 + Test2 + Test3 + Test4
    verbal =~ Test5 + Test6 + Test7
    recall =~ Test8 + Test9
    processing =~ Test10 + Test11
    g_factor =~ spatial + verbal + recall + processing

    spatial ~ Age + Sex
    verbal ~ Age + Sex
    recall ~ Age + Sex
    processing ~ Age + Sex
'

This approach allows for more nuanced interpretation of age and sex effects on cognitive abilities while maintaining model parsimony. It’s worth comparing this to your original model using fit indices to see which performs better with your data.

hey, interesting approach! i suggest attaching age and sex to g_factor rather than every test. it simplifies your model and captures the general impact. try g_factor ~ Age + Sex and check fit. good luck!