Announcement

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

  • Using -xtologit- postestimation tools (particularly margins) when independent variables include an interaction of two binary variables

    Hi Users,

    Long time quiet reader, first time poster - I hope I have followed the community recommended approach properly. I apologise if not and thank you in advance for any help.

    I am using the xtologit command in Stata 17.0. I have consulted as many previous questions to this forum and help guides as I can but I am still missing some understanding.

    I have an ordinal dependent variable which is the number of visits to the GP (general practitioner doctor surgery in the UK) in the last 12 months. Categorised as follows: 1 (Very poor health (10+ visits)); 2 (Poor health (4-6 visits)); 3 (Average health (2-3 visits); 4 (Good health (1-2 visits); 5 (Perfect health (0 visits). Whereby this variable is a proxy for health - those in a low category (1, or 2) are visiting the GP more times and are believed to be in worse health.

    In my dataset I have a group of individuals who are 'treated' (by receiving an exogenous increase in income) and a group who are 'control' (who are the untreated / counterfactual). I have control variables for female (1= female; 0=male); furthereduc (1= achieved higher education; 0= did not) and age (continuous). I am using a two period difference-in-differences approach to determine if the increase in income has a causal effect on decreasing the number of GP visits - which is why I am most interested in the interpretation of the estimate on the interaction term.

    Please may I seek clarification and advice on the following questions:

    (1) in the below -xtologit- output, is my general interpretation correct?
    "being a treated individual in the post period (atet) there is a higher probability (likelihood) of being in the lower categories of GP visits - given negative coefficients"

    (2) is my code for trying to output margins correct? I am trying to reach an output where I can make a comment such as "The ATET (being treated and in the post period) means an individual is X% less likely to be in category 1 of visit_gp (i.e. very poor health) and the individual is Y% less likely to be in the category 2 of visit_gp (i.e. poor health) and the individual is Z% more likely to be in the category 5 (i.e. perfect health). I am not sure my current code is delivering the required output because I would have expected some positive and some negative marginal effects



    Here is the code I am using:
    Code:
    xtset pidp year
    keep if year==2015 | year==2016
    *Remove observations which have missing values
    drop if treated2016_basecase==. | visit_gp==. | age==. | female==. | furthereduc==.
    *Any individual that only appears once must be dropped because otherwise regression may capture effects of leaving the labour market
    bysort pidp: drop if _N==1
    *Check to ensure that the size of treatment and control groups is the same in both the pre and post intervention periods
    tab year treated2016_basecase
    
    *Generating Average Treatment Effect of Treated (ATET)
    g atet=.
    replace atet =(treated2016_basecase*post2016)
    label define atet 1 "ATET" 0 "Baseline", replace
    label values atet atet
    label variable atet "ATET"
    
    *Ordered logistic regression for GP visits
    xtologit visit_gp i.post2016 i.treated2016_basecase i.atet c.age i.furthereduc i.female

    This is the output I currently have:
    Code:
    Fitting comparison model:
    
    Iteration 0:   log likelihood = -1894.1805  
    Iteration 1:   log likelihood = -1878.6944  
    Iteration 2:   log likelihood = -1878.6672  
    Iteration 3:   log likelihood = -1878.6672  
    
    Refining starting values:
    
    Grid node 0:   log likelihood = -1836.7557
    
    Fitting full model:
    
    Iteration 0:   log likelihood = -1836.7557  
    Iteration 1:   log likelihood = -1772.2448  
    Iteration 2:   log likelihood = -1768.3413  
    Iteration 3:   log likelihood = -1768.2766  
    Iteration 4:   log likelihood = -1768.2765  
    
    Random-effects ordered logistic regression           Number of obs    =  1,362
    Group variable: pidp                                 Number of groups =    681
    
    Random effects u_i ~ Gaussian                        Obs per group:
                                                                      min =      2
                                                                      avg =    2.0
                                                                      max =      2
    
    Integration method: mvaghermite                      Integration pts. =     12
    
                                                         Wald chi2(6)     =  27.67
    Log likelihood = -1768.2765                          Prob > chi2      = 0.0001
    
    ----------------------------------------------------------------------------------------------
                        visit_gp | Coefficient  Std. err.      z    P>|z|     [95% conf. interval]
    -----------------------------+----------------------------------------------------------------
                                 |
                        post2016 |
              Post Intervention  |  -.0708782   .1365138    -0.52   0.604    -.3384403    .1966839
                                 |
            treated2016_basecase |
                        Treated  |   .3639954   .2394449     1.52   0.128    -.1053079    .8332988
                                 |
                            atet |
                           ATET  |  -.5966812   .2292338    -2.60   0.009    -1.045971   -.1473911
                             age |  -.0139749   .0088376    -1.58   0.114    -.0312964    .0033465
                                 |
                     furthereduc |
     Achieved Further Education  |  -.0769321   .2039696    -0.38   0.706    -.4767051    .3228409
                                 |
                          female |
                         female  |  -.7140386   .2144538    -3.33   0.001     -1.13436   -.2937168
    -----------------------------+----------------------------------------------------------------
                           /cut1 |  -5.816949   .5220329                     -6.840115   -4.793783
                           /cut2 |  -4.394885   .4991386                     -5.373179   -3.416591
                           /cut3 |   -2.28405   .4776321                     -3.220192   -1.347908
                           /cut4 |   .7056797   .4685216                     -.2126058    1.623965
    -----------------------------+----------------------------------------------------------------
                       /sigma2_u |   4.578534   .5849712                      3.564295     5.88138
    ----------------------------------------------------------------------------------------------
    LR test vs. ologit model: chibar2(01) = 220.78        Prob >= chibar2 = 0.0000
    
    .
    . margins atet
    
    Predictive margins                                       Number of obs = 1,362
    Model VCE: OIM
    
    1._predict: Pr(1.visit_gp), predict(pr outcome(1))
    2._predict: Pr(2.visit_gp), predict(pr outcome(2))
    3._predict: Pr(3.visit_gp), predict(pr outcome(3))
    4._predict: Pr(4.visit_gp), predict(pr outcome(4))
    5._predict: Pr(5.visit_gp), predict(pr outcome(5))
    
    -------------------------------------------------------------------------------
                  |            Delta-method
                  |     Margin   std. err.      z    P>|z|     [95% conf. interval]
    --------------+----------------------------------------------------------------
    _predict#atet |
      1#Baseline  |   .0458419   .0062402     7.35   0.000     .0336114    .0580724
          1#ATET  |   .0691755     .01205     5.74   0.000     .0455578    .0927932
      2#Baseline  |   .0703647   .0072393     9.72   0.000      .056176    .0845534
          2#ATET  |   .0933941   .0116942     7.99   0.000      .070474    .1163142
      3#Baseline  |   .2122565   .0118731    17.88   0.000     .1889857    .2355273
          3#ATET  |   .2466207   .0160977    15.32   0.000     .2150697    .2781716
      4#Baseline  |   .4070927   .0141687    28.73   0.000     .3793227    .4348628
          4#ATET  |   .3909165   .0158156    24.72   0.000     .3599184    .4219146
      5#Baseline  |   .2644442   .0148508    17.81   0.000     .2353372    .2935512
          5#ATET  |   .1998932   .0221671     9.02   0.000     .1564464      .24334
    -------------------------------------------------------------------------------

    Below is a snippet of my dataset using the dataex command

    Code:
    * Example generated by -dataex-. For more info, type help dataex
    clear
    input long pidp float(female education treated2016_basecase post2016 atet visit_gp)
     68017687 1 3 1 0 0 4
     68017687 1 4 1 1 1 3
     68137365 1 1 0 0 0 5
     68137365 1 1 0 1 0 4
     68150967 0 3 0 0 0 2
     68150967 0 3 0 1 0 1
     68150975 0 3 0 0 0 2
     68150975 0 3 0 1 0 3
     68155047 1 3 0 0 0 4
     68155047 1 3 0 1 0 3
     68166607 1 6 1 0 0 4
     68166607 1 6 1 1 1 3
     68197895 0 2 1 0 0 5
     68197895 0 2 1 1 1 5
     68244807 1 3 0 0 0 3
     68244807 1 3 0 1 0 4
     68273371 1 2 1 0 0 3
     68273371 1 2 1 1 1 2
     68317567 0 3 1 0 0 4
     68317567 0 3 1 1 1 2
     68347487 0 2 1 0 0 3
     68347487 0 2 1 1 1 1
     68351571 0 4 0 0 0 3
     68351571 0 4 0 1 0 4
     68356331 0 3 0 0 0 5
     68356331 0 3 0 1 0 5
     68439289 1 3 0 0 0 3
     68439289 1 3 0 1 0 3
     68469887 1 4 0 0 0 5
     68469887 1 4 0 1 0 4
     68474647 1 1 1 0 0 4
     68474647 1 1 1 1 1 1
     68569173 1 4 0 0 0 1
     68569173 1 4 0 1 0 1
     68573253 1 4 0 0 0 4
     68573253 1 4 0 1 0 2
     68622207 1 3 0 0 0 1
     68622207 1 3 0 1 0 4
     68636487 1 3 0 0 0 4
     68636487 1 3 0 1 0 4
     69078487 1 4 0 0 0 3
     69078487 1 4 0 1 0 3
     69264127 1 3 0 0 0 5
     69264127 1 3 0 1 0 4
     69269571 0 3 0 0 0 3
     69269571 0 3 0 1 0 3
     69280447 0 4 1 0 0 3
     69280447 0 4 1 1 1 4
     69625205 1 6 0 0 0 3
     69625205 1 6 0 1 0 5
     69831249 1 3 1 0 0 3
     69831249 1 3 1 1 1 3
     70154249 1 4 0 0 0 4
     70154249 1 4 0 1 0 5
     70625485 1 2 0 0 0 2
     70625485 1 2 0 1 0 3
     70786645 1 1 1 0 0 4
     70786645 1 1 1 1 1 5
     71148405 0 3 1 0 0 4
     71148405 0 3 1 1 1 4
     71148409 1 3 0 0 0 5
     71148409 1 3 0 1 0 4
     71434005 1 4 1 0 0 5
     71434005 1 4 1 1 1 5
     71461209 1 4 1 0 0 4
     71461209 1 4 1 1 1 4
     73997888 1 5 1 0 0 5
     73997888 1 5 1 1 1 4
     77031164 0 3 1 0 0 2
     77031164 0 3 1 1 1 2
     81731933 0 1 0 0 0 5
     81731933 0 1 0 1 0 5
     82171885 1 3 1 0 0 3
     82171885 1 3 1 1 1 2
     88916809 1 6 1 0 0 4
     88916809 1 6 1 1 1 4
     89099729 1 3 1 0 0 4
     89099729 1 3 1 1 1 3
     89272445 1 2 1 0 0 4
     89272445 1 2 1 1 1 2
     95416925 1 3 0 0 0 1
     95416925 1 3 0 1 0 4
     95575369 0 3 0 0 0 4
     95575369 0 3 0 1 0 3
     96029609 1 1 0 0 0 4
     96029609 1 1 0 1 0 3
     96088769 1 3 1 0 0 2
     96088769 1 3 1 1 1 1
    105610882 0 1 0 0 0 5
    105610882 0 1 0 1 0 5
    136071407 1 3 1 0 0 4
    136071407 1 3 1 1 1 4
    136123767 1 5 0 0 0 3
    136123767 1 5 0 1 0 4
    136214215 0 5 1 0 0 5
    136214215 0 5 1 1 1 5
    136235967 1 4 1 0 0 5
    136235967 1 4 1 1 1 5
    136303285 0 6 0 0 0 5
    136303285 0 6 0 1 0 5
    end
    label values female female
    label def female 0 "male", modify
    label def female 1 "female", modify
    label values education education
    label def education 1 "No qualification", modify
    label def education 2 "Other qualification", modify
    label def education 3 "GCSE etc", modify
    label def education 4 "A-level etc", modify
    label def education 5 "Other higher degree", modify
    label def education 6 "Degree", modify
    label values treated2016_basecase treated2016_basecase
    label def treated2016_basecase 0 "Control", modify
    label def treated2016_basecase 1 "Treated", modify
    label values post2016 post2016
    label def post2016 0 "Pre Intervention", modify
    label def post2016 1 "Post Intervention", modify
    label values atet atet
    label def atet 0 "Baseline", modify
    label def atet 1 "ATET", modify
    label values visit_gp visit_gp
    label def visit_gp 1 "V. Poor Health (>10 visits)", modify
    label def visit_gp 2 "Poor Health (6-10 visits)", modify
    label def visit_gp 3 "Average Health (3-5 visits)", modify
    label def visit_gp 4 "Good Health (1-2 visits)", modify
    label def visit_gp 5 "Perfect Health (0 visits)", modify
    Last edited by Elliott Brown; 19 Apr 2023, 17:31.
Working...
X