Hello Statalisters,.

I am running a triple differences linear probability regression, where I am evaluating the effects of a state-level insurance policy change (i.policy -- ie, the treated group), that could have been implemented anytime after 2010 (i.post -- i.e., TWFE not DID/DDD), that we are theorizing had differential effects on two different age-groups of people (i.age). Our outcome is binary (i.screened -- i.e.,screened for cancer). We have a large national data set.

My objective is to get not only the "DDD" coefficient, but also the predicted screening rates for the each of the two age groups both pre- and post- the policy change in treated vs control states, however I am both confused as to the proper margins command to be using and also confused about margins output I am getting.

The regression I am using is:

Code:
reghdfe screen i.age##i.post#i.policy ib2.RACE i.EDUC, absorb(state year) vce(cluster state) pool(1)
(MWFE estimator converged in 4 iterations)
note: 1.age#1.post omitted because of collinearity
note: 1.post#0b.policy omitted because of collinearity
note: 1.post#1.policy omitted because of collinearity

HDFE Linear regression                            Number of obs   =  9,130,961
Absorbing 2 HDFE groups                           F(  11,     36) =     214.87
Statistics robust to heteroskedasticity           Prob > F        =     0.0000
                                                  R-squared       =     0.0329
                                                  Adj R-squared   =     0.0329
                                                  Within R-sq.    =     0.0111
Number of clusters (state_num) =         37       Root MSE        =     0.4595

                                            (Std. Err. adjusted for 37 clusters in state_num)
---------------------------------------------------------------------------------------------
                            |               Robust
                     screen |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
----------------------------+----------------------------------------------------------------
                 age#policy |
                 younger#1  |  -.0208939   .0221751    -0.94   0.352     -.065867    .0240792
                   older#0  |   .0778104   .0140845     5.52   0.000     .0492457    .1063752
                   older#1  |          0  (omitted)
                            |
                post#policy |
                       0 1  |   .0101914     .00729     1.40   0.171    -.0045934    .0249762
                       1 0  |          0  (omitted)
                       1 1  |          0  (omitted)
                            |
            age#post#policy |
                 older#1#0  |  -.0032618   .0067761    -0.48   0.633    -.0170043    .0104808
                 older#1#1  |   .0129391    .007872     1.64   0.109     -.003026    .0289041
                            |
                       RACE |
                  Hispanic  |    .018485   .0070756     2.61   0.013     .0041351     .032835
                 Black, NH  |   .0871647    .007065    12.34   0.000     .0728363    .1014932
                 Asian, NH  |   .0334286   .0105761     3.16   0.003     .0119793    .0548778
                            |
                  EDUCATION |
                        HS  |  -.0457087   .0028512   -16.03   0.000    -.0514911   -.0399263
                  Some Col  |  -.0610266   .0045289   -13.47   0.000    -.0702116   -.0518415
                 Bach/Grad  |  -.0554348   .0064723    -8.56   0.000    -.0685612   -.0423083
                            |
                      _cons |   .2794276   .0089781    31.12   0.000     .2612192     .297636
---------------------------------------------------------------------------------------------

Absorbed degrees of freedom:
-----------------------------------------------------+
 Absorbed FE | Categories  - Redundant  = Num. Coefs |
-------------+---------------------------------------|
   state_num |        37          37           0    *|
        year |         9           1           8     |
-----------------------------------------------------+
* = FE nested within cluster; treated as redundant for DoF computation
When I run margins, I get "not estimable". I am assuming this is because my policy variable is correlated with the state FEs, and that post is correlated with the year FEs, so I thought it would still be kosher to run the margins with -noestimcheck option, however the following happens:

Code:
margins i.age##i.post##policy, atmeans noestimcheck

Adjusted predictions                            Number of obs     =  9,130,961
Model VCE    : Robust

Expression   : Linear prediction, predict()
at           : 0.age          =     .681696 (mean)
               1.age          =     .318304 (mean)
               0.policy       =    .4287486 (mean)
               1.policy       =    .5712514 (mean)
               0.post         =    .4573222 (mean)
               1.post         =    .5426778 (mean)
               1.RACE         =     .393269 (mean)
               2.RACE         =    .4001108 (mean)
               3.RACE         =    .1699526 (mean)
               4.RACE         =    .0366676 (mean)
               2.EDUCATION    =    .3711704 (mean)
               3.EDUCATION    =    .3085791 (mean)
               4.EDUCATION    =    .1976261 (mean)
               5.EDUCATION    =    .0968208 (mean)

---------------------------------------------------------------------------------------------
                            |            Delta-method
                            |     Margin   Std. Err.      z    P>|z|     [95% Conf. Interval]
----------------------------+----------------------------------------------------------------
                        age |
                   younger  |   .3067197   .0035853    85.55   0.000     .2996927    .3137467
                     older  |   .3552687   .0073577    48.29   0.000     .3408478    .3696897
                            |
                       post |
                         0  |   .3242972   .0025805   125.67   0.000     .3192396    .3293549
                         1  |    .320383   .0023248   137.81   0.000     .3158265    .3249395
                            |
                   age#post |
                 younger#0  |   .3098791   .0040138    77.20   0.000     .3020122     .317746
                 younger#1  |   .3040572   .0042475    71.59   0.000     .2957324    .3123821
                   older#0  |   .3551759   .0100741    35.26   0.000      .335431    .3749208
                   older#1  |    .355347   .0063635    55.84   0.000     .3428747    .3678193
                            |
                     policy |
                         0  |   .3401969    .008783    38.73   0.000     .3229825    .3574113
                         1  |   .3086454   .0067858    45.48   0.000     .2953455    .3219453
                            |
                 age#policy |
                 younger#0  |   .3159929    .009111    34.68   0.000     .2981357    .3338502
                 younger#1  |   .2997598   .0126543    23.69   0.000     .2749578    .3245617
                   older#0  |   .3920333   .0121487    32.27   0.000     .3682222    .4158443
                   older#1  |   .3276754   .0072428    45.24   0.000     .3134799    .3418709
                            |
                post#policy |
                       0 0  |   .3407603   .0089327    38.15   0.000     .3232524    .3582681
                       0 1  |    .311941    .007286    42.81   0.000     .2976608    .3262213
                       1 0  |   .3397221   .0087769    38.71   0.000     .3225197    .3569244
                       1 1  |   .3058682   .0085404    35.81   0.000     .2891293     .322607
                            |
            age#post#policy |
               younger#0#0  |   .3159929    .009111    34.68   0.000     .2981357    .3338502
               younger#0#1  |   .3052904   .0128555    23.75   0.000     .2800941    .3304868
               younger#1#0  |   .3159929    .009111    34.68   0.000     .2981357    .3338502
               younger#1#1  |    .295099   .0134205    21.99   0.000     .2687954    .3214026
                 older#0#0  |   .3938034   .0144269    27.30   0.000     .3655271    .4220796
                 older#0#1  |   .3261843   .0121676    26.81   0.000     .3023363    .3500323
                 older#1#0  |   .3905416   .0108428    36.02   0.000       .36929    .4117931
                 older#1#1  |    .328932   .0065028    50.58   0.000     .3161868    .3416772
---------------------------------------------------------------------------------------------
I have a few questions/confusions:
(1) Is it ok to be using -noestimcheck in this case?

(2) If it is (or regardless), why am I getting identical predictions for younger#0 (ie, younger age group, in non-treated states) as for the triple interaction predictions of younger#0#0 (ie, younger, pre-policy, in non-treated states) and younger#1#0 (ie, younger, post-policy, non-treated states)? I guess I was expecting that even if my regession coefficients were not statistically significant (which the DDD coefficient is not), these numbers still shouldn't be exactly the same.

(3) Am I using the corrent margins command? It confuses me that Stata puts up all the "at" means of all of the variables, when (I think) I am asking it to evaluate the predicted probabilities at specific values of variables (or at least my 3 interaction variables).

I have read a lot on this listserv and other places, but still couldn't answer these questions -- any insights greatly appreciated!