Hi everybody

I have a question. I am looking into the difference between public and outsourced employees regarding job engagement. I usually use an interaction term to conduct this analysis. However, I have been asked by a reviewer to include a subgroup analysis to test differences in slopes. My intuition told me this difference would be identical to the interaction term. What I find is that without control variables, everything is similar in terms of point estimates and SE (except for minor differences, which I assume is due to using a z-test (in suest) and t-test (in the interaction analysis)). However, when introducing control variables, the approaches differ in terms of SE but also, surprisingly, in point estimates. Can anybody elaborate on this difference?

Without control variables:
Code:
reg engagement i.treatment_matched##c.workload [iw =cem_weights], vce(robust)
 
foreach var1 of varlist engagement  {
foreach var2 of varlist  workload {
qui reg `var1' c.`var2'  [iw =cem_weights] if treatment_matched == 0 // , vce(robust)
est store treatment_matched0
qui reg `var1' c.`var2'  [iw =cem_weights] if treatment_matched == 1 // , vce(robust)
est store treatment_matched1
di "`var1'" " & " "`var2'"
qui suest treatment_matched0 treatment_matched1, vce(robust) coefl
lincom (_b[treatment_matched1_mean:`var2']-_b[treatment_matched0_mean:`var2'])
}
}
With control variables:
Code:
reg engagement i.treatment_matched##c.workload c.alder_alt ib(1).kon ib(2).uddannelse [iw =cem_weights] , vce(robust)
 
foreach var1 of varlist engagement  {
foreach var2 of varlist  workload {
qui reg `var1' c.`var2'  c.alder_alt ib(1).kon ib(2).uddannelse [iw =cem_weights] if treatment_matched == 0 // , vce(robust)
est store treatment_matched0
qui reg `var1' c.`var2'  c.alder_alt ib(1).kon ib(2).uddannelse [iw =cem_weights] if treatment_matched == 1 // , vce(robust)
est store treatment_matched1
di "`var1'" " & " "`var2'"
qui suest treatment_matched0 treatment_matched1, vce(robust) coefl
lincom (_b[treatment_matched1_mean:`var2']-_b[treatment_matched0_mean:`var2'])
}
}
Thanks!

Best
Gustav