*! version 1.0.0 13oct2021
help metatef Patrick Royston

Title

metatef -- IPD meta analysis of an interaction between treatment and a continuous covariate

Syntax

metatef [, metatef_options]
: regression_cmd [yvar] xvar [if] [in] [weight] [, regression_cmd_options ]

metatef_options

adjust(varlist) adjustment variables

by(varlist) (required) study indicator variable(s)

centre(#|mean) centre xvar on its mean or on #

ebayes(stubname) store empirical Bayes estimates of functions

fixpowers(#[# ...]|matrixname) (required) fractional polynomial powers for transforming xvar

function(stubname) store treatment effect functions

generate(newvarname) stores overall treatment effect function

random fits random-effects model

strata(varlist) stratify by variables in varlist

studywise fits studywise fractional polynomial functions

tau(newvarname) stores random-effects variance function in newvarname

with(trtvar) (required) binary indicator variable for treatment groups

regression_cmd_options options appropriate to the regression command in use

where

regression_cmd may be
clogit,
cnreg,
glm,
logistic,
logit,
mlogit,
nbreg,
ologit,
oprobit,
poisson,
probit,
qreg,
regress,
rreg,
stcox,
stpm,
stpm2,
streg,
or
xtgee.

All weight types supported by regression_cmd are allowed; see help
weights.

Important: if you wish to use flexible parametric survival models
(a.k.a. Royston-Parmar models) with metatef, you must install
or update to the current version of stpm2 from SSC:

. ssc install stpm2, replace

Description

metatef models an interaction between a response variable
(yvar) and a fractional polynomial (FP) function of a continuous
covariate (xvar), optionally adjusting for other variable(s)
specified in adjust(). Estimated "treatment effect functions" are
averaged across the studies specified by by().

metatef assembles a weighted mean curve and pointwise confidence
interval based on a treatment x covariate interaction estimated in several
studies. The variables used to adjust for confounding in multivariable models
may differ between the studies, in which case adjust() may
consist of an 'index' (linear predictor) representing the estimated
confounder adjustment from each study. It is strongly recommended
that the index be standardised to have mean zero.

The user must specify, in fixpowers(), the FP powers to be used to
model the main effect of xvar and its interaction with trtvar.
To specify a linear function, enter fixpowers(1).
See Sauerbrei & Royston (2011) for a description of a closely related
problem.

Options

adjust(varlist) adjusts each estimated function for the variables
in varlist.

by(varlist) is not optional. varlist defines the
studies (typically, varlist will be a single categorical variable).

centre(#|mean) centres the covariate xvar on
#. mean denotes the mean of xvar over the entire dataset.

cutpoints(numlist) replaces an FP analysis of xvar with one in
which xvar is categorised according to the cutpoints in numlist.

ebayes(stubname) stores the empirical Bayes estimate of the
treatment effect function in study #j (j = 1, 2, ...) in a new variable called
stubnamej. This option only applies if random is also used.

fixpowers(#[# ...]|matrixname) forces
the FP powers to be # [# ...] for each individual
study and overall. If # = 1 then linear functions are fitted.
Alternatively, if matrixname is specified then the powers must
be stored in a matrix; each row of matrixname contains set of powers
per study. The first row gives the powers for use in the overall
(stratified) model. The number of columns corresponds to the maximum
number of powers required. If some studies have less than the maximum
number of powers, missing values should be used to fill the empty positions
in the matrix. fixpowers(matrixname) is valid only with studywise.

function(stubname) stores the estimated treatment effect
function from study #j (j = 1, 2, ...) in a new variable called
stubnamej.

generate(newvarname) specifies thatnewvarname is a
new variable containing the mean fitted treatment effect function,
centered at the value set by the centre() option.
Furthermore, newvarname_se is a new variable containing the
standard error of the fitted function, and newvarname_ll and
newvarname_ul contain respectively the lower and upper pointwise
confidence limits of the function.

random adds a component of variance between studies to the estimated
pointwise variance of the mean fitted curve, which may change
the weights used to calculate the weighted mean function. The default
is that the weight for a given study equals the reciprocal of the estimated
variance of the estimated function. random also allows empirical Bayes
(shrunken) estimates of the individual function for each study
to be made (see the ebayes() option).

strata(varlist) stratifies each model according to the variables
in varlist, in addition to stratification using the by()
variable. Stratification applies only to models fit using stcox
or stpm.

studywise uses the FP powers specified in fixpowers(),
both per-study and overall. For the overall model, a
stratified or adjusted regression model is fitted, with stratification
or adjustment by study. With streg and stcox, the
strata() option is used; with stpm, the stratify()
option is used; with all other regression commands, dummy variables
are created for each study except the first and the regression is
adjusted for these dummy variables.

with(trtvar) defines the treatment variable. This must have exactly
two distinct non-missing values. Therefore, only trials with two treatment
arms are supported by this version of metatef.

regression_cmd_options may be any of the options appropriate to
regression_cmd.

Remarks

metatef does not support the selection of FP functions by applying
mfpi. Rather, you must determine best-fitting FP functions of given
degree by applying mfpi first, and recording the required FP powers,
overall and optionally for each study. If mfpi is not available or
out of date, it may be installed or updated by using the command
ssc install mfpi, replace.

Full details of the methodology with an application in breast cancer
clinical trials are given by Sauerbrei and Royston (2021).

Examples

. metatef, by(cohort) fixpowers(0.5) with(trt) generate(d): regress bloodpress age

. line d d_ll d_ul age, sort

. matrix p = -2,0 \ -1,2 \ 0,3 \ -2,.5 \ -2,.5 \ -2,.5 \ -1,3 \ 0,2 \-.5,0 \ -.5,1

. metatef, dist(weibull) by(study) with(trt) fixpowers(p) adjust(xb) generate(fx1) function(fx1): streg x1

. line fx1? x1, sort

. metatef, dist(weibull) by(study) with(trt) fixpowers(p) adjust(xb) generate(fx1) function(fx1) ebayes(ebf) random: streg x1

. metatef, by(study) with(trt) strata(sex) fixpowers(p) generate(fx1) studywise: stcox x1

Author

Patrick Royston

MRC Clinical Trials Unit at UCL

London, UK

j.royston@ucl.ac.uk

References

Sauerbrei W, Royston P. 2011. A new strategy for meta-analysis of continuous
covariates in observational studies. Statistics in Medicine 30: 3341-3360.
https://doi.org/10.1002/sim.4333.

Kasenda B, Sauerbrei W, Royston P, Mercat A, Slutsky AS, Cook D, Guyatt GH,
Brochard L, Richard J-C M, Stewart TE, Meade M, Briel M. 2016.
Multivariable fractional polynomial interaction to investigate continuous effect
modifiers in a meta-analysis on higher versus lower PEEP for patients with ARDS.
BMJ Open 6. https://doi.org/10.1136/bmjopen-2016-011148.

Sauerbrei W, Royston P. 2021. Investigating treatment-effect modification by a
continuous covariate in IPD meta-analysis: an approach using fractional
polynomials. Submitted.

Also see

Manual: [R] fp, [R] mfp

Online: help for fp, mfp, mfpi (if installed),
stpm2 (if installed)