Title: | Meta-Analysis of Studies with Non-Statistically Significant Unreported Effects |
---|---|
Description: | Novel method to unbiasedly include studies with Non-statistically Significant Unreported Effects (NSUEs) in a meta-analysis. First, the function calculates the interval where the unreported effects (e.g., t-values) should be according to the threshold of statistical significance used in each study. Afterward, the method uses maximum likelihood techniques to impute the expected effect size of each study with NSUEs, accounting for between-study heterogeneity and potential covariates. Multiple imputations of the NSUEs are then randomly created based on the expected value, variance, and statistical significance bounds. Finally, it conducts a restricted-maximum likelihood random-effects meta-analysis separately for each set of imputations, and it performs estimations from these meta-analyses. Please read the reference in 'metansue' for details of the procedure. |
Authors: | Joaquim Radua [aut, cre] |
Maintainer: | Joaquim Radua <[email protected]> |
License: | GPL-3 |
Version: | 2.6 |
Built: | 2024-11-04 05:34:00 UTC |
Source: | https://github.com/cran/metansue |
Draws a forest plot.
forest(x, width, ...)
forest(x, width, ...)
x |
an object of class |
width |
the width of the plot, expressed as the maximum effect size that would be still plotted. |
... |
other arguments (currently ignored). |
The plot shows the observed or imputed effect sizes of the studies with the corresponding 95% confidence intervals. A light gray shadow shows the interval containing 95% of the imputations for studies with Non-statistically Significant Unreported Effects (NSUEs).
The effect size of the hypothesis of the model with the corresponding 95% confidence intervals is added to the bottom of the forest plot.
The function invisibly returns the optimal width and height of the plot, useful when calling the function pdf
.
Joaquim Radua
funnel
for plotting funnel plots.
meta
for conducting a meta-analysis.
pdf
for saving the plot in a PDF file.
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) m <- meta(smc_from_t(t, n)) forest(m)
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) m <- meta(smc_from_t(t, n)) forest(m)
Draws a funnel plot.
funnel(x, ...)
funnel(x, ...)
x |
an object of class |
... |
other arguments (currently ignored). |
The plot shows the residual effect size of the studies on the x-axis against their standard errors on the y-axis. A light gray shadow shows the ellipse approximately containing 95% of the imputations for studies with Non-statistically Significant Unreported Effects (NSUEs). A pseudo confidence interval region is drawn with a dashed line.
Asymmetry in the funnel plot may be an indication of publication bias, but this should be taken with caution, especially if sample sizes are too similar, if there are subgroups, or if dichotomous outcomes have been used (some effect estimates are naturally correlated with their standard errors).
Also, publication bias cannot be excluded in case of negative results, whereas it is only one of the possible explanations in case of positive results - others being selective outcome reporting, poor methodological quality in the smaller studies, true heterogeneity (i.e. effect size truly depends on study size), and etcetera.
Joaquim Radua
Egger, M., Smith, G.D., Schneider, M., Minder, C. (1997) Bias in meta-analysis detected by a simple, graphical test. BMJ, 315, 629–634, doi:10.1136/bmj.315.7109.629.
metabias
for testing for funnel plot asymmetry.
forest
for plotting forest plots.
meta
for conducting a meta-analysis.
pdf
for saving the plot in a PDF file.
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) m <- meta(smc_from_t(t, n)) funnel(m)
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) m <- meta(smc_from_t(t, n)) funnel(m)
Repeatedly fits the specified model, leaving out one study at a time.
leave1out(x, ...) ## S3 method for class 'nsue' leave1out(x, formula = ~1, hypothesis = NULL, n.imp = 500, maxiter = 200, tol = 1e-06, ...)
leave1out(x, ...) ## S3 method for class 'nsue' leave1out(x, formula = ~1, hypothesis = NULL, n.imp = 500, maxiter = 200, tol = 1e-06, ...)
x |
an object of class |
formula |
an object of class |
hypothesis |
a hypothesis, or |
n.imp |
number of imputations of NSUEs per study. |
maxiter |
maximum number of iterations in the REML estimation of |
tol |
tolerance in the REML estimation of |
... |
other arguments (currently ignored). |
Use nsue
, smc_from_t
, smd_from_t
or zcor_from_r
to create objects of class "nsue"
.
Models for meta
and leave1out
are specified symbolically. The formula
is a series of terms which specify a linear predictor for x
. A formula specification of the form first + second
indicates a multiple regression by first
and second
. A specification of the form first:second
indicates the interaction of first
with second
. The specification first*second
is the same as first + second + first:second
.
Each hypothesis must be a matrix (or vector) giving linear combinations of coefficients by rows.
leave1out
returns an object of class "leave1out.nsue"
, which is a list containing a list for each iteration with the component study
(the study discarded) and the component meta
, which is an object of class "meta.nsue"
.
The functions print
and summary
may be used to print the details or a summary of the results.
Joaquim Radua
Radua, J., Schmidt, A., Borgwardt, S., Heinz, A., Schlagenhauf, F., McGuire, P., Fusar-Poli, P. (2015) Ventral striatal activation during reward processing in psychosis. A neurofunctional meta-analysis. JAMA Psychiatry, 72, 1243–51, doi:10.1001/jamapsychiatry.2015.2196.
Albajes-Eizagirre, A., Solanes, A, Radua, J. (2019) Meta-analysis of non-statistically significant unreported effects. Statistical Methods in Medical Research, 28, 3741–54, doi:10.1177/0962280218811349.
nsue
, smc_from_t
, smd_from_t
and zcor_from_r
for creating objects of class "nsue"
.
meta
for conducting a meta-analysis.
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) leave1out(smc_from_t(t, n))
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) leave1out(smc_from_t(t, n))
Conduct a meta-analysis. MetaNSUE is a meta-analytic method that allows an unbiased inclusion of studies with Non-statistically Significant Unreported Effects (NSUEs).
meta(x, ...) ## S3 method for class 'nsue' meta(x, formula = ~1, hypothesis = NULL, n.imp = 500, maxiter = 200, tol = 1e-06, ...)
meta(x, ...) ## S3 method for class 'nsue' meta(x, formula = ~1, hypothesis = NULL, n.imp = 500, maxiter = 200, tol = 1e-06, ...)
x |
an object of class |
formula |
an object of class |
hypothesis |
a hypothesis, or NULL to test the main coefficient of the model. |
n.imp |
number of imputations of NSUEs. |
maxiter |
maximum number of iterations in the REML estimation of |
tol |
tolerance in the REML estimation of |
... |
other arguments (currently ignored). |
Use nsue
, smc_from_t
, smd_from_t
or zcor_from_r
to create objects of class "nsue"
.
Models for meta
and leave1out
are specified symbolically. The formula
is a series of terms which specify a linear predictor for x
. A formula specification of the form first + second
indicates a multiple regression by first
and second
. A specification of the form first:second
indicates the interaction of first
with second
. The specification first*second
is the same as first + second + first:second
.
Each hypothesis must be a matrix (or vector) giving linear combinations of coefficients by rows.
meta
returns an object of class "meta.nsue"
, which is a list containing the following components:
aux |
information required for |
y2var |
a function to derive the variances of the effect sizes. |
mi |
a function to multiply impute effect sizes. |
backtransf |
a function to back-transform the effect sizes. |
measure |
a description of the effect-size measure used. |
labels |
the labels of the studies. |
known |
a list with the known effect sizes and their indexs. |
unknown |
a list with the imputations of NSUEs and their indexs. |
model |
a list with the formula, matrix and coefficients of the model. |
heterogeneity |
a list with |
hypothesis |
the matrixs and coefficients of the hypothesis. |
The functions print
and summary
may be used to print the details or a summary of the results. The generic accessor functions coefficients
, fitted.values
and residuals
extract various useful features of the value returned by meta
.
Joaquim Radua
Radua, J., Schmidt, A., Borgwardt, S., Heinz, A., Schlagenhauf, F., McGuire, P., Fusar-Poli, P. (2015) Ventral striatal activation during reward processing in psychosis. A neurofunctional meta-analysis. JAMA Psychiatry, 72, 1243–51, doi:10.1001/jamapsychiatry.2015.2196.
Albajes-Eizagirre, A., Solanes, A, Radua, J. (2019) Meta-analysis of non-statistically significant unreported effects. Statistical Methods in Medical Research, 28, 3741–54, doi:10.1177/0962280218811349.
nsue
, smc_from_t
, smd_from_t
and zcor_from_r
for creating objects of class "nsue"
.
forest
for plotting forest plots.
funnel
for plotting funnel plots.
metabias
for testing for funnel plot asymmetry.
leave1out
for computing leave-one-out diagnostics.
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) meta(smc_from_t(t, n))
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) meta(smc_from_t(t, n))
Test for funnel plot asymmetry.
metabias(x, ...) ## S3 method for class 'meta.nsue' metabias(x, maxiter = 100, tol = 1e-06, ...)
metabias(x, ...) ## S3 method for class 'meta.nsue' metabias(x, maxiter = 100, tol = 1e-06, ...)
x |
an object of class |
maxiter |
maximum number of iterations in the REML estimation of |
tol |
tolerance in the REML estimation of |
... |
other arguments (currently ignored). |
The test, based on a meta-regression by the standard error, aims to detect asymmetry in the funnel plot, which may be an indication of publication bias.
However, results should be taken with caution, especially if there are too few studies (at least 10 studies were suggested by Sterne et al. (2011)), if sample sizes are too similar, if there are outliers or influential studies or subgroups in the plot, or if dichotomous outcomes have been used (some effect estimates are naturally correlated with their standard errors).
Also, publication bias cannot be excluded in case of negative results, whereas it is only one of the possible explanations in case of positive results - others being selective outcome reporting, poor methodological quality in the smaller studies, true heterogeneity (i.e. effect size truly depends on study size), and etcetera (Egger 1997).
A list with class "htest"
containing the following components:
data.name |
a character string giving the name of the data. |
method |
a character string indicating that a |
statistic |
the value of the z-statistic. |
p.value |
the p-value for the test. |
Joaquim Radua
Egger, M., Smith, G.D., Schneider, M., Minder, C. (1997) Bias in meta-analysis detected by a simple, graphical test. BMJ, 315, 629–634, doi:10.1136/bmj.315.7109.629.
Radua, J., Schmidt, A., Borgwardt, S., Heinz, A., Schlagenhauf, F., McGuire, P., Fusar-Poli, P. (2015) Ventral striatal activation during reward processing in psychosis. A neurofunctional meta-analysis. JAMA Psychiatry, 72, 1243–51, doi:10.1001/jamapsychiatry.2015.2196.
Albajes-Eizagirre, A., Solanes, A, Radua, J. (2019) Meta-analysis of non-statistically significant unreported effects. Statistical Methods in Medical Research, 28, 3741–54, doi:10.1177/0962280218811349.
Sterne, J.A., Sutton, A.J., Ioannidis, J.P., Terrin, N., Jones, D.R., Lau, J., Carpenter, J., Rucker, G., Harbord, R.M., Schmid, C.H., Tetzlaff, J., Deeks, J.J., Peters, J., Macaskill, P., Schwarzer, G., Duval, S., Altman, D.G., Moher, D., Higgins, J.P. (2011) Recommendations for examining and interpreting funnel plot asymmetry in meta-analyses of randomised controlled trials. BMJ, 343, d4002, doi:10.1136/bmj.d4002.
funnel
for plotting funnel plots.
meta
for conducting a meta-analysis.
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) m <- meta(smc_from_t(t, n)) metabias(m)
t <- c(3.4, NA, NA, NA, NA, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) m <- meta(smc_from_t(t, n)) metabias(m)
These functions create objects of class "nsue"
, ready to be used by meta
and leave1out
.
nsue(y, y_lo = -y_up, y_up, aux, y2var, mi, backtransf = .backtransf_identity, measure = "effect size", labels = "study") smc_from_t(t, n, alpha = 0.05, labels = "study") smd_from_t(t, n1, n2, alpha = 0.05, labels = "study") zcor_from_r(r, n, alpha = 0.05, labels = "study")
nsue(y, y_lo = -y_up, y_up, aux, y2var, mi, backtransf = .backtransf_identity, measure = "effect size", labels = "study") smc_from_t(t, n, alpha = 0.05, labels = "study") smd_from_t(t, n1, n2, alpha = 0.05, labels = "study") zcor_from_r(r, n, alpha = 0.05, labels = "study")
y |
a vector to specify the effect-sizes. Use NA in studies with Non-statistically Significant Unreported Effects (NSUEs). |
t |
a vector to specify the t-values of the studies. Use NA in studies with Non-statistically Significant Unreported Effects (NSUEs). |
r |
a vector to specify the correlation coefficients of the studies. Use NA in studies with Non-statistically Significant Unreported Effects (NSUEs). |
y_lo |
a vector to specify the effect-sizes corresponding to the lower statistical threshold. |
y_up |
a vector to specify the effect-sizes corresponding to the upper statistical threshold. |
aux |
a data.frame to specify information required for |
n |
a vector to specify the sample sizes of the studies. |
n1 |
a vector to specify the sample sizes of the first group (e.g. patients) of studies. |
n2 |
a vector to specify the sample sizes of the second group (e.g. controls) of the studies. |
y2var |
a function to derive the variances of the effect sizes. |
mi |
a function to multiply impute effect sizes. |
backtransf |
a function to back-transform the effect sizes. |
measure |
a description of the effect-size measure used. |
labels |
a vector to specify the labels of the studies. |
alpha |
a vector to specify the p-value thresholds used in the studies (e.g. 0.05). |
Use nsue
for creating an object of class "nsue"
.
Use smc_from_t
for creating an object of class "nsue"
for standardized mean changes from the t-values of the paired Student t-tests, e.g. in repeated-measures studies analyzing the amount of change in within a group.
Use smd_from_t
for creating an object of class "nsue"
for standardized mean differences from t-values of the two-sample Student t-tests, e.g. in studies comparing a quantitative (normally-distributed) variable between two groups.
Use zcor_from_r
for creating an object of class "nsue"
for Pearson correlation coefficients (using the Fisher's transform), e.g. in studies examining the association between two quantitative (normally-distributed) variables.
nsue
, smc_from_t
, smd_from_t
, and zcor_from_r
return objects of class "nsue"
.
The function print
may be used to print a summary of the results. The function subset
returns the subset of studies that meets a condition.
An object of class "nsue"
is a list containing the following components:
y |
the effect-sizes. |
y_lo |
the effect-sizes corresponding to the lower statistical threshold. |
y_up |
the effect-sizes corresponding to the upper statistical threshold. |
aux |
information required for |
y2var |
a function to derive the variances of the effect sizes. |
mi |
a function to multiply impute effect sizes. |
backtransf |
a function to back-transform the effect sizes. |
measure |
a description of the effect-size measure used. |
labels |
the labels of the studies. |
Users can create their objects of class "nsue"
for effect sizes not included in the package.
Joaquim Radua
Radua, J., Schmidt, A., Borgwardt, S., Heinz, A., Schlagenhauf, F., McGuire, P., Fusar-Poli, P. (2015) Ventral striatal activation during reward processing in psychosis. A neurofunctional meta-analysis. JAMA Psychiatry, 72, 1243–51, doi:10.1001/jamapsychiatry.2015.2196.
Albajes-Eizagirre, A., Solanes, A, Radua, J. (2019) Meta-analysis of non-statistically significant unreported effects. Statistical Methods in Medical Research, 28, 3741–54, doi:10.1177/0962280218811349.
meta
for conducting a meta-analysis.
leave1out
for computing leave-one-out diagnostics.
# Standardized mean change in one sample: t <- c(3.4, NA, NA, NA, 3.2, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) smc <- smc_from_t(t, n) m0 <- meta(smc) smc m0 # Standardized mean difference between two samples: t <- c(4.8, 3.2, NA, NA, NA, 3.2, 2.0, 2.3, 2.7, 3.1) n1 <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) n2 <- c(38, 20, 22, 25, 20, 28, 25, 30, 18, 23) smd <- smd_from_t(t, n1, n2) m1 <- meta(smd) smd m1 # Pearson correlation: r <- c(0.80, NA, NA, NA, 0.32, 0.45, 0.53, 0.67, 0.74, 0.56) n <- c(40, 22, 13, 12, 28, 22, 27, 28, 15, 23) zr <- zcor_from_r(r, n) m2 <- meta(zr) zr m2
# Standardized mean change in one sample: t <- c(3.4, NA, NA, NA, 3.2, 2.8, 2.1, 3.1, 2.0, 3.4) n <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) smc <- smc_from_t(t, n) m0 <- meta(smc) smc m0 # Standardized mean difference between two samples: t <- c(4.8, 3.2, NA, NA, NA, 3.2, 2.0, 2.3, 2.7, 3.1) n1 <- c(40, 20, 22, 24, 18, 30, 25, 30, 16, 22) n2 <- c(38, 20, 22, 25, 20, 28, 25, 30, 18, 23) smd <- smd_from_t(t, n1, n2) m1 <- meta(smd) smd m1 # Pearson correlation: r <- c(0.80, NA, NA, NA, 0.32, 0.45, 0.53, 0.67, 0.74, 0.56) n <- c(40, 22, 13, 12, 28, 22, 27, 28, 15, 23) zr <- zcor_from_r(r, n) m2 <- meta(zr) zr m2