Announcement

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

  • Problem with Mundlak approach

    Dear all,

    I am pretty new to Stata and just beginning my research journey.

    I am trying to estimate the effect of bank specific variables like Size (Ln Assets), Risk Leverage, Gross NPA, Provision Coverage Ratio, NIM, non-Interest Income, Contingent Liabilities and Operating Efficiency on Stress level of banks. I have included GDP growth Rate, G-sec Yield, Call Money Rate, Stability, Inflation and USD-INR Exchange Rate as my macroeconomic control variables. The period of my study is from 2005 to 2022 and my sample consists of 39 banks.

    In the analysis, I am trying to execute the Mundlak approach to decide between FE and RE (Ref: https://blog.stata.com/2015/10/29/fi...dlak-approach/). However, what I got in my results is that the constraints are getting dropped, although I am getting the chi value, (which supports the inference drawn from Hausman test, i.e. appropriateness of RE model). The commands entered are as follows (all variables are set as -xtset-).

    Code:
    . bysort LN_ASSETS: egen mean_LN_ASSETS = mean( LN_ASSETS)
    (21 missing values generated)
    
    . bysort RISK_LEV: egen mean_RISK_LEV=mean( RISK_LEV)
    (21 missing values generated)
    
    . bysort GNPA : egen mean_GNPA = mean( GNPA )
    (21 missing values generated)
    
    . bysort PCR : egen mean_PCR = mean( PCR )
    (21 missing values generated)
    
    . bysort NIM : egen mean_NIM = mean( NIM )
    (21 missing values generated)
    
    . bysort NONINT_INC : egen mean_NONINT_INC = mean( NONINT_INC )
    (21 missing values generated)
    
    . bysort CONT_LIAB : egen mean_CONT_LIAB = mean( CONT_LIAB )
    (21 missing values generated)
    
    . bysort OP_EFF : egen mean_OP_EFF = mean( OP_EFF )
    (21 missing values generated)
    
    . bysort GDP_GR : egen mean_GDP_GR = mean( GDP_GR )
    
    . bysort GSEC_YLD : egen mean_GSEC_YLD = mean( GSEC_YLD )
    
    .  bysort WTAVG_CMR : egen mean_WTAVG_CMR = mean( WTAVG_CMR )
    
    .  bysort STABILITY : egen mean_STABILITY = mean( STABILITY )
    
    .  bysort CP_INFL : egen mean_CP_INFL = mean( CP_INFL )
    
    .  bysort USDINR_EXC : egen mean_USDINR_EXC = mean( USDINR_EXC )

    Code:
    . quietly xtreg STRESS_SCORE LN_ASSETS RISK_LEV GNPA PCR NIM NONINT_INC CONT_LIAB OP_EFF GDP_GR WTAVG_CMR STABILITY CP
    > _INFL USDINR_EXC mean_LN_ASSETS mean_RISK_LEV mean_GNPA mean_PCR mean_NIM mean_NONINT_INC mean_CONT_LIAB mean_OP_EFF
    >  mean_GDP_GR mean_GSEC_YLD mean_WTAVG_CMR mean_STABILITY mean_CP_INFL mean_USDINR_EXC, re vce(robust)
    I have used the robust(vce) command as used in the example.

    Code:
    . estimates store mundlak
    
    . test mean_LN_ASSETS mean_RISK_LEV mean_GNPA mean_PCR mean_NIM mean_NONINT_INC mean_CONT_LIAB mean_OP_EFF mean_GDP_GR
    >  mean_GSEC_YLD mean_WTAVG_CMR mean_STABILITY mean_CP_INFL mean_USDINR_EXC
    
     ( 1)  o.mean_LN_ASSETS = 0
     ( 2)  o.mean_RISK_LEV = 0
     ( 3)  o.mean_GNPA = 0
     ( 4)  o.mean_PCR = 0
     ( 5)  o.mean_NIM = 0
     ( 6)  o.mean_NONINT_INC = 0
     ( 7)  o.mean_CONT_LIAB = 0
     ( 8)  o.mean_OP_EFF = 0
     ( 9)  o.mean_GDP_GR = 0
     (10)  mean_GSEC_YLD = 0
     (11)  o.mean_WTAVG_CMR = 0
     (12)  o.mean_STABILITY = 0
     (13)  o.mean_CP_INFL = 0
     (14)  o.mean_USDINR_EXC = 0
           Constraint 1 dropped
           Constraint 2 dropped
           Constraint 3 dropped
           Constraint 4 dropped
           Constraint 5 dropped
           Constraint 6 dropped
           Constraint 7 dropped
           Constraint 8 dropped
           Constraint 9 dropped
           Constraint 11 dropped
           Constraint 12 dropped
           Constraint 13 dropped
           Constraint 14 dropped
    
               chi2(  1) =    0.39
             Prob > chi2 =    0.5309
    My questions are as follows.

    i) Whether the approach is correct and the inference thus obtained is reliable? Or are there some issues ? If so, kindly suggest the correct way to proceed. What exactly should we interpret by the expression "constraint dropped"?

    ii) The macroeconomic control variables, I'm considering in my model, don't change across banks (cross-sections), but are time-variant. In that case, would it be appropriate to consider them in the model. (I know it is pretty basic, but, I'm not sure whether such control variables would make any difference to the model outcomes, as they don't change between banks.)

    I would really appreciate any help and suggestions for improvement.

    Thanks and regards
    pankaj

  • #2
    Your code is wrong. You need to compute the averaged variables by firm id.

    You can put macro variables if you want to. But if you put a full set of time dummies, it would control for all omitted variables varying only across time.

    Comment


    • #3
      Thanks a lot, Sir Joro Kolev for your clarifications. I appreciate it.

      After doing as suggested by you, I got the following.

      Code:
      bysort BankID : egen mean_LN_ASSETS = mean( LN_ASSETS)
      
      . bysort BankID : egen mean_RISK_LEV = mean( RISK_LEV )
      
      . bysort BankID : egen mean_GNPA = mean( GNPA )
      
      . bysort BankID : egen mean_PCR = mean( PCR )
      
      . bysort BankID : egen mean_NIM = mean( NIM )
      
      . bysort BankID : egen mean_NONINT_INC = mean( NONINT_INC )
      
      . bysort BankID : egen mean_CONT_LIAB = mean( CONT_LIAB )
      
      . bysort BankID : egen mean_OP_EFF = mean( OP_EFF )
      
      . bysort BankID : egen mean_GDP_GR = mean( GDP_GR )
      
      . bysort BankID : egen mean_GSEC_YLD = mean( GSEC_YLD )
      
      . bysort BankID : egen mean_WTAVG_CMR = mean( WTAVG_CMR )
      
      . bysort BankID : egen mean_STABILITY = mean( STABILITY )
      
      . bysort BankID : egen mean_CP_INFL = mean( CP_INFL )
      
      . bysort BankID : egen mean_USDINR_EXC = mean( USDINR_EXC )
      
      . quietly xtreg STRESS_SCORE LN_ASSETS RISK_LEV GNPA PCR NIM NONINT_INC CONT_LIAB OP_EFF GDP_GR WTAVG_CMR STABILITY CP
      > _INFL USDINR_EXC mean_LN_ASSETS mean_RISK_LEV mean_GNPA mean_PCR mean_NIM mean_NONINT_INC mean_CONT_LIAB mean_OP_EFF
      >  mean_GDP_GR mean_GSEC_YLD mean_WTAVG_CMR mean_STABILITY mean_CP_INFL mean_USDINR_EXC, re vce(robust)
      
      . estimates store mundlak1
      
      . test mean_LN_ASSETS mean_RISK_LEV mean_GNPA mean_PCR mean_NIM mean_NONINT_INC mean_CONT_LIAB mean_OP_EFF mean_GDP_GR
      >  mean_GSEC_YLD mean_WTAVG_CMR mean_STABILITY mean_CP_INFL mean_USDINR_EXC
      
       ( 1)  mean_LN_ASSETS = 0
       ( 2)  mean_RISK_LEV = 0
       ( 3)  mean_GNPA = 0
       ( 4)  mean_PCR = 0
       ( 5)  mean_NIM = 0
       ( 6)  mean_NONINT_INC = 0
       ( 7)  mean_CONT_LIAB = 0
       ( 8)  mean_OP_EFF = 0
       ( 9)  o.mean_GDP_GR = 0
       (10)  o.mean_GSEC_YLD = 0
       (11)  o.mean_WTAVG_CMR = 0
       (12)  o.mean_STABILITY = 0
       (13)  o.mean_CP_INFL = 0
       (14)  o.mean_USDINR_EXC = 0
             Constraint 9 dropped
             Constraint 10 dropped
             Constraint 11 dropped
             Constraint 12 dropped
             Constraint 13 dropped
             Constraint 14 dropped
      
                 chi2(  8) =   13.62
               Prob > chi2 =    0.0923
      What I could understand was, the constraints pertaining to the macro-economic control variables (those remained unchanged across cross-sections) have been dropped.

      Sir, whether inference based on the chi value obtained above is correct?

      Kind regards
      pankaj

      Comment


      • #4
        Pankaj:
        assuming that you have plugged in the panel-level average of all your time-varying covariates, -test- outcome points you out to -re- specification.
        Stata dropped the constraints about the o.(omitted) predictors, whose omission is possibly due to perfect collinearity.
        Kind regards,
        Carlo
        (Stata 19.0)

        Comment


        • #5
          Thanks Sir Carlo Lazzaro for your inputs.

          However, I'm concerned that existence of perfect collinearity among the control variables, as in the extant case, would render the estimates biased and inefficient. In that case, would it be ok to include such variables in the model or should I drop them from my model? Please clarify.

          Kind regards
          pankaj

          Comment


          • #6
            Pankaj:
            I think that the issue rests on your original code: does Stata omit those variables in -xtreg-, too?
            And what is the reason of the omission?
            That said, I would not be concerned about biases and inefficiency, as those variables, once omitted, have no more bearing on regression results.
            Kind regards,
            Carlo
            (Stata 19.0)

            Comment


            • #7
              No, Sir. No variables have been omitted in the original -xtreg- code.

              So, as per your suggestion, I presume I can proceed ahead with RE specification. Is it so?
              Thanks a lot for your patient understanding of my concerns.

              Kind regards
              pankaj

              Comment


              • #8
                Pankay:
                yes, go -re- and, please, call me Carlo. Thanks.
                Kind regards,
                Carlo
                (Stata 19.0)

                Comment


                • #9
                  Thanks Carlo.

                  Warm regards
                  pankaj

                  Comment

                  Working...
                  X