Estimate meta-analytic difference in means across multiple two-group studies.
Source:R/meta_mdiff_two.R
meta_mdiff_two.Rd
meta_mdiff_two
is suitable for synthesizing across multiple two-group
studies (paired or independent) with a continuous outcome measure. It takes
in raw data from each study. If all studies used the same measurement scale,
a meta-analytic raw-score difference can be returned. If studies used
different scales, a standardized mean difference can be returned.
Studies can be all paired, all independent, or a mix. Equal variance can
be assumed, or not. If standardized mean difference is the output, it is
d_s when equal variance is assumed and d_avg when equal variance is not
assumed.
Usage
meta_mdiff_two(
data,
comparison_means,
comparison_sds,
comparison_ns,
reference_means,
reference_sds,
reference_ns,
r = NULL,
labels = NULL,
moderator = NULL,
contrast = NULL,
effect_label = "My effect",
reported_effect_size = c("mean_difference", "smd_unbiased", "smd"),
assume_equal_variance = FALSE,
random_effects = TRUE,
conf_level = 0.95
)
Arguments
- data
A data frame or tibble
- comparison_means
Set of comparison_group means, 1 per study
- comparison_sds
Set of comparison_group standard deviations, 1 per study, all > 0
- comparison_ns
Set of comparison_group sample sizes, positive integers, 1 for each study
- reference_means
Set of reference_group means, 1 per study
- reference_sds
Set of comparison_group standard deviations, 1 per study, all > 0
- reference_ns
Set of reference_group sample sizes, positive integers, 1 for each study
- r
Optional correlation between measures for w-s studies, NA otherwise
- labels
An optional collection of study labels
- moderator
An optional factor to analyze as a categorical moderator, must have k > 2 per groups
- contrast
An optional contrast to estimate between moderator levels; express as a vector of contrast weights with 1 weight per moderator level.
- effect_label
Optional character giving a human-friendly name of the effect being synthesized
- reported_effect_size
Character specifying effect size to return: Must be one of 'mean_difference', 'smd_unbiased' (to return an unbiased Cohen's d_s or d_avg) or 'smd' (to return d_s or d_avg without correction for bias). Defaults to mean_difference.
- assume_equal_variance
Defaults to FALSE
- random_effects
TRUE for random effect model; FALSE for fixed effects
- conf_level
The confidence level for the confidence interval. Given in decimal form. Defaults to 0.95.
Value
An esci-estimate object; a list of data frames and properties. Returned tables include:
es_meta - A data frame of meta-analytic effect sizes. If a moderator was defined, there is an additional row for each level of the moderator.
effect_label - Study label
effect_size - Effect size
LL - Lower bound of conf_level% confidence interval
UL - Upper bound of conf_level% confidence interval
SE - Expected standard error
k - Number of studies
diamond_ratio - ratio of random to fixed effects meta-analytic effect sizes
diamond_ratio_LL - lower bound of conf_level% confidence interval for diamond ratio
diamond_ratio_UL - upper bound of conf_level% confidence interval for diamond ratio
I2 - I2 measure of heterogeneity
I2_LL - Lower bound of conf_level% confidence interval for I2
I2_UL - upper bound of conf_level% confidence interval for I2
PI_LL - lower bound of conf_level% of prediction interval
PI_UL - upper bound of conf_level% of prediction interval
p - p value for the meta-analytic effect size, based on null of exactly 0
*width - width of the effect-size confidence interval
FE_effect_size - effect size of the fixed-effects model (regardless of if fixed effects was selected
RE_effect_size - effect size of the random-effects model (regardless of if random effects was selected
FE_CI_width - width of the fixed-effects confidence interval, used to calculate diamond ratio
RE_CI_width - width of the fixed-effects confidence interval, used to calculate diamond ratio
es_heterogeneity - A data frame of of heterogeneity values and conf_level% CIs for the meta-analytic effect size. If a moderator was defined also reports heterogeneity estimates for each level of the moderator.
effect_label - study label
moderator_variable_name - if moderator passed, gives name of the moderator
moderator_level - 'Overall' and each level of moderator, if passed
measure - Name of the measure of heterogeneity
estimate - Value of the heterogeneity estimate
LL - lower bound of conf_level% confidence interval
UL - upper bound of conf_level% confidence interval
raw_data - A data from with one row for each study that was passed
label - study label
effect_size - effect size
weight - study weight in the meta analysis
sample_variance - expected level of sampling variation
SE - expected standard error
LL - lower bound of conf_level% confidence interval
UL - upper bound of conf_level% confidence interval
mean - used to calculate study p value; this is the d value entered for the study
sd - use to calculate study p value; set to 1 for each study
n - study sample size
p - p value for the study, based on null of exactly 0
Details
Once you generate an estimate with this function, you can visualize
it with plot_meta()
.
The meta-analytic effect size, confidence interval and heterogeneity
estimates all come from metafor::rma()
.
The diamond ratio and its confidence interval come from
CI_diamond_ratio()
.
If reported_effect_size is smd_unbiased or smd the conversion to Cohen's d
is handled by CI_smd_ind_contrast()
.
Examples
# Data set -- see Introduction to the New Statistics, 2nd edition
data("data_mccabemichael_brain")
# Meta-analysis: random effects, no moderator
estimate <- esci::meta_mdiff_two(
data = esci::data_mccabemichael_brain,
comparison_means = "M Brain",
comparison_sds = "s Brain",
comparison_ns = "n Brain",
reference_means = "M No Brain",
reference_sds = "s No Brain",
reference_ns = "n No Brain",
labels = "Study name",
effect_label = "Brain Photo Rating - No Brain Photo Rating",
assume_equal_variance = TRUE,
random_effects = TRUE
)
# Forest plot
myplot_forest <- esci::plot_meta(estimate)
# Meta-analysis: random effects, moderator
estimate_moderator <- esci::meta_mdiff_two(
data = esci::data_mccabemichael_brain,
comparison_means = "M Brain",
comparison_sds = "s Brain",
comparison_ns = "n Brain",
reference_means = "M No Brain",
reference_sds = "s No Brain",
reference_ns = "n No Brain",
labels = "Study name",
moderator = "Research group",
effect_label = "Brain Photo Rating - No Brain Photo Rating",
assume_equal_variance = TRUE,
random_effects = TRUE
)
# Forest plot
myplot_forest_moderator <- esci::plot_meta(estimate_moderator)
#> Scale for x is already present.
#> Adding another scale for x, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.
# Meta-analysis: random effects, moderator, output d_s
estimate_moderator_d <- esci::meta_mdiff_two(
data = esci::data_mccabemichael_brain,
comparison_means = "M Brain",
comparison_sds = "s Brain",
comparison_ns = "n Brain",
reference_means = "M No Brain",
reference_sds = "s No Brain",
reference_ns = "n No Brain",
labels = "Study name",
moderator = "Research group",
effect_label = "Brain Photo Rating - No Brain Photo Rating",
assume_equal_variance = TRUE,
random_effects = TRUE
)
# Forest plot
myplot_forest_moderator_d <- esci::plot_meta(estimate_moderator_d)
#> Scale for x is already present.
#> Adding another scale for x, which will replace the existing scale.
#> Scale for y is already present.
#> Adding another scale for y, which will replace the existing scale.