Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Interpretation of total indirect effect after gsem and nlcom commands

    Hello, everyone. Thank you for reading my post and your invaluable feedback in advance.

    I am currently conducting path analysis using STATA gsem commands and nlcom commands for exploring direct, indirect, and total effect, using survey weights.

    My research explores the following pathways:
    • Independent variables: racehisp_2015 (categorical), burden_con_2015 (continuous)
    • Mediators: pp_sumscore_2015 (continuous), ss_sumscore_2015 (continuous)
    • Dependent variables. anxiety_binary_2017 (dichotomous)
    • Remaining variables are covariates to be adjusted for: age_2015 i.gender_2015 i.income_tertile_2015 i.education_2015 i.martstat_2015 i.numchu18_2015 health_2015_sum i.relationship_three_2015 i.coresident_caregiver_2015 i.oneyearduration_2015 hourshelped_lastmonth_2015 i.severe_disability_2015
    I ran this STATA commands for the analysis:

    Code:
    svy, subpop(if lfl7spdied == -1 & dementia_community == 1): gsem (pp_sumscore_2015 <- i.racehisp_2015 burden_con_2015 age_2015 i.gender_2015 i.income_tertile_2015 i.education_2015 i.martstat_2015 i.numchu18_2015 health_2015_sum i.relationship_three_2015 i.coresident_caregiver_2015 i.oneyearduration_2015 hourshelped_lastmonth_2015 i.severe_disability_2015) (ss_sumscore_2015 <- i.racehisp_2015 burden_con_2015 age_2015 i.gender_2015 i.income_tertile_2015 i.education_2015 i.martstat_2015 i.numchu18_2015 health_2015_sum i.relationship_three_2015 i.coresident_caregiver_2015 i.oneyearduration_2015 hourshelped_lastmonth_2015 i.severe_disability_2015)(anxiety_binary_2017 <- pp_sumscore_2015 ss_sumscore_2015 i.racehisp_2015 burden_con_2015 age_2015 i.gender_2015 i.income_tertile_2015 i.education_2015 i.martstat_2015 i.numchu18_2015 health_2015_sum i.relationship_three_2015 i.coresident_caregiver_2015 i.oneyearduration_2015 hourshelped_lastmonth_2015 i.severe_disability_2015, family(bernoulli) link(probit))
    After running this command, I ran nlcom command. Specifically, I would like to seek your feedback on the interpretation of the total indirect effects.

    I ran these nlcom commands:

    <<<<< 1. Direct Effects >>>>>

    Code:
    nlcom (_b[anxiety_binary_2017:burden_con_2015])
    
           _nl_1: _b[anxiety_binary_2017:burden_con_2015]
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |    .045651   .0320695     1.42   0.155    -.0172042    .1085062
    ------------------------------------------------------------------------------
    
    nlcom _b[pp_sumscore_2015:burden_con_2015]
    
           _nl_1: _b[pp_sumscore_2015:burden_con_2015]
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |  -.0565071   .0265703    -2.13   0.033    -.1085839   -.0044303
    ------------------------------------------------------------------------------
    
    nlcom _b[ss_sumscore_2015:burden_con_2015]
    
           _nl_1: _b[ss_sumscore_2015:burden_con_2015]
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |   .0465658   .0227994     2.04   0.041     .0018799    .0912517
    ------------------------------------------------------------------------------
    
    nlcom (_b[anxiety_binary_2017:pp_sumscore_2015])
    
           _nl_1: _b[anxiety_binary_2017:pp_sumscore_2015]
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |  -.1523196   .1060796    -1.44   0.151    -.3602319    .0555926
    ------------------------------------------------------------------------------
    
    nlcom (_b[anxiety_binary_2017:ss_sumscore_2015])
    
           _nl_1: _b[anxiety_binary_2017:ss_sumscore_2015]
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |   .1515167   .1295226     1.17   0.242     -.102343    .4053763
    ------------------------------------------------------------------------------
    ***** Direct effects of (burden_con_2015 ---> pp_sumscore_2015) and (burden_con_2015 ---> ss_sumscore_2015) are significant.

    <<<<< 2) Indirect Effects >>>>>

    Code:
    nlcom (_b[pp_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:pp_sumscore_2015])
    
           _nl_1: _b[pp_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:pp_sumscore_2015]
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |   .0086071   .0065089     1.32   0.186      -.00415    .0213643
    ------------------------------------------------------------------------------

    ===> Indirect effects of (burden_con_2015 --> pp_sumscore_2015 --> anxiety_binary_2017) are not significant.

    Code:
    nlcom (_b[ss_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:ss_sumscore_2015])
           _nl_1: _b[ss_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:ss_sumscore_2015]
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |   .0070555   .0059271     1.19   0.234    -.0045614    .0186724
    ------------------------------------------------------------------------------
    ===> Indirect effects of (burden_con_2015 --> ss_sumscore_2015 --> anxiety_binary_2017) are not significant.

    Code:
    nlcom (_b[pp_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:pp_sumscore_2015])+(_b[ss_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:ss_sumscore_2015])
           _nl_1: (_b[pp_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:pp_sumscore_2015])+(_b[ss_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:ss_sumscore_2015])
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |   .0156626    .007965     1.97   0.049     .0000515    .0312738
    ------------------------------------------------------------------------------
    ===> Indirect effects of (burden_con_2015 --> pp_sumscore_2015/ss_sumscore_2015 --> anxiety_binary_2017) are significant. ************************************************** ******How can I interpret this?

    <<<<< 3) Total Effects >>>>>

    Code:
    nlcom (_b[pp_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:pp_sumscore_2015]) + (_b[anxiety_binary_2017:burden_con_2015])
    
           _nl_1: (_b[pp_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:pp_sumscore_2015]) + (_b[anxiety_binary_2017:burden_con_2015])
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |   .0542581   .0317945     1.71   0.088    -.0080579    .1165742
    ------------------------------------------------------------------------------
    
    nlcom (_b[ss_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:ss_sumscore_2015]) + (_b[anxiety_binary_2017:burden_con_2015])
    
           _nl_1: (_b[ss_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:ss_sumscore_2015]) + (_b[anxiety_binary_2017:burden_con_2015])
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |   .0527065   .0327971     1.61   0.108    -.0115746    .1169876
    ------------------------------------------------------------------------------
    
    nlcom (_b[pp_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:pp_sumscore_2015])+(_b[ss_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:ss_sumscore_2015])+(_b[anxiety_binary_2017:burden_con_2015])
    
           _nl_1: (_b[pp_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:pp_sumscore_2015])+(_b[ss_sumscore_2015:burden_con_2015] * _b[anxiety_binary_2017:ss_sumscore_2015])+(_b[anxiety_binary_2017:burden_con_2015])
    
    ------------------------------------------------------------------------------
                 | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -------------+----------------------------------------------------------------
           _nl_1 |   .0613136   .0323114     1.90   0.058    -.0020155    .1246428
    ------------------------------------------------------------------------------
    ===> Total effects of (burden_con_2015 --> pp_sumscore_2015/ss_sumscore_2015 --> anxiety_binary_2017) are marginally significant.

    Can I interpret these results as follows?


    In this survey-weighted path analysis using a probit link, burden_con_2015 was indirectly associated with having anxiety_binary_2017​​​​​​​ through the combined influence of pp_sumscore_2015 and ss_sumscore_2015 (total indirect effect = 0.016, p = .049). While neither indirect path was individually significant, their combined effect reached statistical significance, suggesting a small mediating effect. The direct effect of burden_con_2015 on anxiety_binary_2017​​​​​​​ was not significant (p = .155), and the total effect was marginally significant (p = .058), indicating that burden_con_2015 may influence anxiety_binary_2017 primarily through its impact on pp_sumscore_2015 and ss_sumscore_2015, rather than through a direct association.

    In this case, I’m wondering how mediation can occur even when the direct effect is not statistically significant. Additionally, is it possible to determine whether burden_con_2015 increases or decreases pp_sumscore_2015 and ss_sumscore_2015 in its influence on anxiety_binary_2017?

    Thank you very much for your review and any feedback.

  • #2
    I’m wondering how mediation can occur even when the direct effect is not statistically significant.
    There is no mystery to this at all. It simply means that after accounting for the part of the effect that is mediated, what is left over is not statistically significant.

    is it possible to determine whether burden_con_2015 increases or decreases pp_sumscore_2015 and ss_sumscore_2015 in its influence on anxiety_binary_2017
    Yes, but it is not possible with the model you have used. This question is not about simple mediation, it is about moderation, aka effect modification. To see that you have to include the interaction terms between burden_con_2015 and each of pp_sumscore_2015 and ss_sumscore_2015 in the regressions. The signs of those interaction coefficients will answer this question.

    Comment


    • #3
      This 'product-of-coefficients' method only makes sense in the context of linear models. For models with two mediators I suggest having a look at his paper. The authors use Monte Carlo integration but it would also be possible to derive a closed-form solution for probit based on the integrals shown under Theorem 1 in the paper. I note that a much easier solution could be to simply have the outcome equation be a linear probability model.

      Comment


      • #4
        Joerg Luedicke (StataCorp)
        Thank you very much for your helpful feedback.

        I would greatly appreciate your clarification on one point: You mentioned that the 'product-of-coefficients' method only applies in the context of linear models. Could you please confirm whether this means that using coefficients through summing or multiplying is not appropriate for dichotomous or categorical outcomes? I have come across several articles that use gsem and nlcom for models with dichotomous outcomes, so I would be grateful for your insight on this matter.

        Additionally, you suggested that a simpler solution could be to use a linear probability model for the outcome equation. Would you be able to share how to implement this in Stata? Is there a specific command or model specification I should consider?

        Thank you again for your time and invaluable guidance.

        Comment


        • #5
          Clyde Schechter
          Thank you so much for your review and invaluable suggestion! I will explore your suggestion to advance my research.

          Comment


          • #6
            KHB might be another option for you.
            https://www.stata.com/meeting/german...g11_kohler.pdf
            Best wishes

            Stata 18.0 MP | ORCID | Google Scholar

            Comment


            • #7
              Sarah Won
              Could you please confirm whether this means that using coefficients through summing or multiplying is not appropriate for dichotomous or categorical outcomes?
              It depends on the model you use, not the type of variable. If the outcome model is nonlinear, in the sense of having a nonlinear 'link function' such as probit or logit, then multiplying coefficients from mediator and outcome equations results in a number that does not represent a theoretically defined object and, thus, has no meaning.

              Additionally, you suggested that a simpler solution could be to use a linear probability model for the outcome equation. Would you be able to share how to implement this in Stata?
              A linear probability model is simply a linear model with a binary outcome. In regards to your gsem specification, you could get rid of options family(bernoulli) link(probit) or replace them with family(gaussian) link(identity).

              Comment


              • #8
                Joerg Luedicke (StataCorp)

                Thank you very much for your detailed explanation.

                In my research, I am working with four outcome variables: anxiety (dichotomous), depression (dichotomous), distress (categorical), and general health (categorical). Based on my understanding, for these types of outcome variables, I can specify family(bernoulli) with different link functions such as link(probit), link(logit), or link(cloglog) in the model.
                • Given your suggestion, I am wondering whether it would be appropriate to instead use family(gaussian) link(identity)—that is, treat the outcomes as continuous—even though they were originally modeled as dichotomous or categorical.
                • Or would treating the outcome variables as continuous (e.g., using their sum scores in the models) and using the sem command be the best approach in this case?
                • Additionally, I would like to confirm whether it is correct that both sem and gsem support models with multiple independent variables, mediators, and outcome variables.
                Thank you again for your time and guidance.

                Comment

                Working...
                X