Title

metamiss -- Meta-analysis with missing data

Description

metamiss performs a meta-analysis of studies comparing a binary outcome between two groups (such as in a randomised controlled trial) where the outcome may be missing. Three methods are available:

(i) imputation methods as described in Higgins et al (2008).
Missing values may be imputed as failures, successes, same as control group, same as
experimental group, same as own group, or using Informative Missingness Odds Ratios (IMORs).
When reasons for missingness are known, a mixture of the methods may be used.

The IMOR is defined as the odds ratio between the outcome (success/failure) and the missingness of the outcome (missing/observed), within groups.
A value of 1 indicates that the data are missing at random (MAR), while IMOR = 0 means that missing values are all failures, and IMOR = infinity means that missing values are all successes.

or

(ii) methods allowing for uncertainty about how informative the missing data are, as in White et al (2008) based on Forster and Smith (1998).
These use the following model for outcome Y, missingness M and group X:

M|X=i ~ Bernoulli(alpha_i)
Y|M=0,X=i ~ Bernoulli(pi_i)
OR(Y,M|X=i) = IMOR_i (informative missingness odds ratio)

The values of logIMOR_i in the two groups can be specified exactly or through a Normal prior distribution.

or

(iii) the "uncertainty method" of Gamble and Hollis (2005).

With all three methods, metamiss only prepares the data for each study: it then calls metan to
perform the meta-analysis.
A note "(Calling metan ...)" is printed at this point
to help the user identify the source of any error messages.
We have tried to make metamiss compatible with all versions of metan.

Data

metamiss requires 6 variables specifying the numbers of successes,
failures and missing values in each group. The first group is considered to be the experimental group and the second group the control group, although applications outside randomised controlled trials are also possible.
The 6 variables are described as rE fE mE rC fC mC in the syntax descriptions below.

Syntax

Simple imputation:

metamiss rE fE mE rC fC mC, imputation_type w1|w2|w3|w4
[meta_options imor_spec]

where imputation_type is aca|ica0|ica1|icapc|icape|icap|icab|icaw|icaimor

Imputation using reasons:

metamiss rE fE mE rC fC mC, imputation_type_1(#|var [#|var])
[imputation_type_2(#|var [#|var]) [...]]
w1|w2|w3|w4 [meta_options imor_spec]

where imputation_type_1, imputation_type_2 etc. are ica0|ica1|icapc|icape|icap|icaimor.

Bayesian analysis using priors:

metamiss rE fE mE rC fC mC, sdlogimor(#|var [#|var])
[meta_options imor_spec corrlogimor(#|var)
method(GH|Taylor|MC) reps(#) nip(#) missprior(# # [# #])
respprior(# # [# #]) details nodots]

Gamble-Hollis analysis:

metamiss rE fE mE rC fC mC, gamblehollis [meta_options]

meta_options are meta-analysis options including or rr rd log id(varname)
and any valid option for metan including random, by(), xlab().

imor_spec is imor(#|var [#|var]) or logimor(#|var [#|var]).

Meta-analysis options

rr, or, rd specify the measures to be analysed.
Usually, only one measure may be specified; the default is rr.
The exception is using method(mc), when all 3 measures may be obtained for no extra effort,
so any combination is allowed, and the default is all 3. However, the formal meta-analysis
is not performed if more than 1 measure is specified.

log has the results reported on the log RR or log OR scale.

id(var) specifies a trial identifier for the forest plot.

All other options allowed with metan are allowed: for example, by(), random.

Imputation options

aca performs an available cases analysis.

ica0 imputes missing values as zeroes.

ica1 imputes missing values as ones.

icab performs best-case analysis, which imputes missing values as ones
in the experimental group and zeroes in the control group.
Note that if rE and rC count adverse events,
not beneficial events, then icab will yield a worst-case analysis.

icaw performs worst-case analysis, which imputes missing values as
zeroes in the experimental group and ones in the control group.
Note that if rE and rC count adverse events,
not beneficial events, then icaw will yield a best-case analysis.

icape imputes missing values using the observed probability in the experimental group.

icapc imputes missing values using the observed probability in the control group.

icap imputes missing values using the observed probability within groups.

icaimor imputes missing values using the IMORs specified by imor() or logimor() within groups.

The default is icaimor if imor() or logimor() is specified, and otherwise aca.

Imputation using reasons

Alternatively, different subgroups of missing values may be assigned using
different reasons. Thus for example ica0(mfE mfC) icap(mpE mpC) indicates
that mfE individuals in group E and mfC individuals in group C are imputed using
ICA0, while mpE individuals in group E and mpC individuals in group C are imputed
using ICAp. If, for some group, the total over all reasons does not equal the number of missing observations (e.g. if mfE+mpE does not equal mE), then
the missing observations are shared between imputation types in the given ratio.
If the total is zero for some group then the missing observations are shared
between imputation types in the ratio formed by summing over all studies.
If the total is zero for all groups then an error is returned.
Numerical values may also be given: e.g. ica0(50 50) icap(50 50) indicates that 50%
missing values in each group are imputed using ICA0 and the rest are imputed
using ICAp.

Imputation weight options

w1 specifies that standard errors be computed treating the imputed
values as if they were observed. This is included for didactic purposes
and should not be used in real analyses.

w2 specifies that standard errors from the available cases analysis should be used.

w3 specifies that standard errors be computed by scaling the imputed data down to the number
of available cases in each group, and treating these data as if they were observed.

w4 specifies that standard errors be computed algebraically, conditional
on the IMORs. Note that conditioning on the IMORs is not strictly correct for
schemes including ICA-pE or ICA-pC, but the conditional standard errors appear
to be more realistic than the unconditional standard errors in this setting.

Imputation debugging options

listnum lists the reason counts for each study implied by the ica0 etc. options.

listall lists the reason counts for each study after scaling to match the number
of missing values and imputing missing for studies with no reasons.

listp lists the imputed probabilities for each study.

Bayes options

logimor() sets the prior means for the log IMOR in the experimental and control groups.
Both values default to 0.
The arguments must be expressions, not variables.

imor() is an alternative to logimor().
It sets the exponentiated values of the prior means for the log IMOR in the experimental and control groups.
Both values default to 1.
The arguments must be expressions, not variables.

sdlogimor() sets the prior standard deviation for the log IMOR in the experimental and
control groups. Both values default to 0.
The arguments must be expressions, not variables.

corrlogimor() sets the prior correlation between the logIMORs in the experimental and
control groups. Default is 0.
The argument must be an expression, not a variable.

method(MC|Taylor|GH). method(GH) uses 2-dimensional Gauss-Hermite quadrature to integrate over the distribution of the IMORs and is the recommended
method (and the default). method(MC) performs a full Bayesian analysis by sampling
directly from the posterior. This is time-consuming, so dots display progress, and you can request
more than one of the measures RR, OR, RD. method(Taylor) uses a Taylor series approximation
as in section 4 of Forster and Smith (1998) and is faster than the default but inaccurate
for wide log IMOR distributions.

nip(#) specifies the number of integration points under method(gh). Default is 10.

reps(#) specifies the number of MC draws under method(mc). Default is 100.

missprior(# # [# #]) and respprior(# # [# #]) specify beta(#,#) priors for alpha and pi under method(mc).
The 3rd and 4th arguments, if present, apply to the control group; otherwise the 1st and 2nd arguments are applied to both groups. Defaults are beta(1,1).

nodots suppresses the dots that are displayed to mark the number of MC draws completed.

Saved variables

metamiss saves variables in the same way as metan: _ES _selogES etc. _SS,
the sample size, excludes the missing values, but an additional variable _SSmiss
gives the total number of missing values.

When method(mc) is run, the following variables are saved for each measure:
the available cases analysis estimate ESTRAW_measure,
the available cases analysis variance VARRAW_measure, the corrected
estimate ESTSTAR_measure, and the corrected variance VARSTAR_measure.

Examples

We analyse the haloperidol data as in White and Higgins (2009).

use haloperidol, clear

The data set contains the key variables: author r1 f1 m1 r2 f2 m2

Available case analysis (three equivalent commands):

metan r1 f1 r2 f2, rr fixedi label(namevar=author)

metamiss r1 f1 m1 r2 f2 m2, rr id(author) aca

metamiss r1 f1 m1 r2 f2 m2, rr id(author) imor(1)

ICA-0, impute missing as zeroes (three equivalent commands):

metamiss r1 f1 m1 r2 f2 m2, rr id(author) ica0 w4

metamiss r1 f1 m1 r2 f2 m2, rr id(author) ica0(m1 m2) w4

metamiss r1 f1 m1 r2 f2 m2, rr id(author) imor(0)

Impute using reasons for missingness:

metamiss r1 f1 m1 r2 f2 m2, fixed id(author) ica0(df1 df2) ica1(ds1 ds2) icapc(dc1 dc2) icap(dg1 dg2) w4

Fixed equal IMORs (two equivalent commands):

metamiss r1 f1 m1 r2 f2 m2, rr id(author) imor(2) nograph

metamiss r1 f1 m1 r2 f2 m2, rr id(author) logimor(log(2)) nograph

Fixed opposite IMORs:

metamiss r1 f1 m1 r2 f2 m2, rr id(author) imor(2 1/2) nograph

Random equal IMORs:

metamiss r1 f1 m1 r2 f2 m2, rr id(author) logimor(0) sdlogimor(1) corrlogimor(1)

Random uncorrelated IMORs:

metamiss r1 f1 m1 r2 f2 m2, rr id(author) logimor(0) sdlogimor(1) corrlogimor(0)

Possible ways to improve - unlikely to make much difference in practice:

metamiss r1 f1 m1 r2 f2 m2, rr id(author) logimor(0) sdlogimor(1) corrlogimor(1) method(mc) reps(10000)

metamiss r1 f1 m1 r2 f2 m2, rr id(author) logimor(0) sdlogimor(1) corrlogimor(0) method(gh) nip(50)

Note

Different methods may give slightly different answers due to
different handling of zero cells. For example,

. metamiss r1 f1 m1 r2 f2 m2, ica1 w4

and

. metamiss r1 f1 m1 r2 f2 m2, logimor(99) w4

differ slightly in the haloperidol data: the logimor analysis adds 1/2 to r1, f1, r2 and f2 for 6 studies with r2==0, whereas the ica0 analysis
only does this for 3 studies with r2+m2==0.

Authors and Updates

Ian White, MRC Clinical Trials Unit at UCL, London, UK.

Julian Higgins, School of Social and Community Medicine, University of Bristol, UK.

We thank David Fisher for help in making this version compatible with version 4 of metan.

You can get the latest version of this package by visiting https://github.com/UCL/metamiss
or within Stata by running
net from https://raw.githubusercontent.com/UCL/metamiss/master.

For assistance please email ian.white@ucl.ac.uk.

References

Forster JJ, Smith PWF (1998). Model-based inference for categorical survey data
subject to non-ignorable non-response. Journal of the Royal Statistical
Society (B) 60: 57-70.

Gamble C, Hollis S (2005). Uncertainty method improved on best-worst case analysis
in a binary meta-analysis. Journal of Clinical Epidemiology 58: 579-588.

Higgins JPT, White IR, Wood A (2008).
Imputation methods for missing outcome data in meta-analysis of clinical trials.
Clinical Trials 2008; 5: 225-239.

White IR, Higgins JPT, Wood AM (2008).
Allowing for uncertainty due to missing data in meta-analysis.
1. Two-stage methods. Statistics in Medicine 27: 711-727.

White IR, Higgins JPT (2016). Meta-Analysis with missing data.
In: Palmer TM, Sterne JAC, editors. Meta-Analysis in Stata: An Updated Collection from the Stata Journal. 2nd ed.
https://www.stata.com/bookstore/meta-analysis-in-stata/

Chaimani A, Mavridis D, Higgins J, Salanti G, White IR (2018).
Allowing for informative missingness in aggregate data meta-analysis with continuous or binary outcomes: extensions to metamiss.
Stata J. 3:716–40.

Please cite this program as

White IR, Higgins JPT. Meta-analysis with missing data. Stata J. 2009;9:57–69.
http://www.stata-journal.com/article.html?article=st0157

See also

metan
metamiss2 if installed.