Treatmentcovariate interactions

A twostage IPD metaanalysis for summarising treatmentcovariate interactions is a straightforward extension of the twostage approach for synthesising a treatment effect.

In the first stage, the treatmentcovariate interactions are estimated using the IPD in each trial separately; in the second stage, these interaction estimates are pooled using a chosen metaanalysis model. This can be implemented in Stata using ipdmetan.

By only pooling interaction estimates derived from withintrial information (i.e. based at the participantlevel), this approach automatically avoids triallevel confounding and aggregation bias that may occur in metaregression models or in onestage models that do not separate out withintrial and acrosstrial information.

In Figure 7.2 of our book, an example is given for a continuous outcome, and a treatmentsex interaction is of interest. The Stata code to produce this forest plot of interactions and undertake the twostage approach is as follows:
ipdmetan, study(trialid) interaction keepall re(reml) : mixed sbpl treat##sex sbpi
Here, the 'interaction' option ensures that the interaction estimates are pooled in the second stage.

A onestage approach of equation (7.11) could also be used, which centers the sex covariate by the proportion male in each trial, and include the proportion male as a separate covariate, in order to remove aggregation bias. It also allows a random interaction effect. The code is as follows:
gen ws_interaction = treat*sex_cent
gen acr_interaction = sex_mean*treat
mixed sbpl trial* sbpi_trial* sex_trial* treat ws_interaction , nocons ///
 trialid: treat ws_interaction, nocons reml residuals(ind, by(trialid))
where trial*, sbpi_trial* and sex_trial* is just shorthand for specifying 10 terms for each parameter (one for each of ten trials in the analysis), so that we stratify by trial the intercept, the prognostic effect of baseline SBP, and the prognostic effect of sex. the residuals() option also ensures 10 residual variances (one for each trial). Rather than modelling the acrosstrial relationship, we could alternatively stratify the reference treatment effect by trial (to mimic the twostage approach more exactly):
mixed sbpl trial* sbpi_trial* sex_trial* treat_trial* ws_interaction, nocons ///
 trialid: treat ws_interaction, nocons reml residuals(ind, by(trialid))
In R, the equivalent code would be something like:
ipdresults<lme(sbpl~ 0 + trialdummy.f + sbpi*trialdummy.f + sex*trialdummy.f + treat*trialdummy.f + ws.interaction , random=list(trialdummy=~0+ws.interaction), weights=varIdent(form=~1trialdummy),
na.action = na.omit, method = "REML")