Title: | Assessment of Inconsistency in Meta-Analysis using Decision Thresholds |
---|---|
Description: | Assessment of inconsistency in meta-analysis by calculating the Decision Inconsistency index (DI) and the Across-Studies Inconsistency (ASI) index. These indices quantify inconsistency taking into account outcome-level decision thresholds. |
Authors: | Bernardo Sousa-Pinto [cre, aut] , Rafael Jose Vieira [aut], Manuel Marques-Cruz [aut], James Steele [aut], Guido Schwarzer [aut] |
Maintainer: | Bernardo Sousa-Pinto <[email protected]> |
License: | GPL (>= 2) |
Version: | 0.2-0 |
Built: | 2024-12-10 06:31:10 UTC |
Source: | CRAN |
Assessment of inconsistency in meta-analysis by calculating the Decision Inconsistency index (DI) and the Across-Studies Inconsistency (ASI) index. These indices quantify inconsistency taking into account outcome-level decision thresholds.
The following possibilities are available in 'metainc':
Generating or extracting samples of effect sizes from primary studies
included in a meta-analysis (getsamples
)
Calculating the Decision Inconsistency and Across-Studies Inconsistency
index (inc
)
In addition, the following methods for sensitivity and subset analysis are available:
Sensitivity analysis based on the baseline risk (sens_br
)
Sensitivity analysis based on decision thresholds
(sens_dt
)
Leave-one-out analysis (sens_inf
)
Subset analysis (subset.inc
)
Type help(package = "metainc")
for a listing of R functions
available in 'metainc'.
Type citation("metainc")
on how to cite 'metainc' in
publications.
Bernardo Sousa-Pinto [email protected], Guido Schwarzer [email protected]
Cohen J. (1998). “Statistical Power Analysis in the Behavioral Sciences”, 2nd edition ed. Hillsdale (NJ): Lawrence Erlbaum Associates, Inc.
Schunemann HJ, Higgins JPT, Vist GE, et al. (2019). “Completing ‘Summary of findings’ tables and grading the certainty of the evidence.” Cochrane Handbook for Systematic Reviews of Interventions, 375–402.
Schunemann HJ, Vist GE, Higgins JPT, et al. (2019). “Interpreting results and drawing conclusions.” Cochrane Handbook for Systematic Reviews of Interventions, 403–431.
Skoetz N, Goldkuhle M, van Dalen EC, et al. (2020). “GRADE guidelines 27: how to calculate absolute effects for time-to-event outcomes in summary of findings tables and Evidence Profiles.” Journal of Clinical Epidemiology, 118, 124–131.
Matrix with sampled odds ratios from meta-analysis on the association between parenteral anticoagulation and mortality in patients with cancer (Akl et al., 2017).
A matrix with 5000 sampled odds ratios (rows) for 18 studies (columns) following a Bayesian meta-analysis.
Data from Akl et al. (2017) and displaying results presented as odds ratios. Each column corresponds to a different primary study.
Akl, E. A., Kahale, L. A., Hakoum, M. B., Matar, C. F., Sperati, F., Barba, M., et al. (2017). “Parenteral anticoagulation in ambulatory patients with cancer.” Cochrane Database of Systematic Reviews, 9: CD006652.
data(anticoagulation) # Since the results are already presented as odds ratios, we need # to indicate that effects have not been transformed to log odds # ratios yet (\code{transf = FALSE}). dis1 <- inc(anticoagulation, br = 0.504, dt1 = 16, sm = "OR", transf = FALSE) dis1 # Alternatively, we may simply apply the \code{inc()} function to # log odds ratios. data(anticoagulation) dis2 <- inc(log(anticoagulation), br = 0.504, dt1 = 16, sm = "OR") dis2
data(anticoagulation) # Since the results are already presented as odds ratios, we need # to indicate that effects have not been transformed to log odds # ratios yet (\code{transf = FALSE}). dis1 <- inc(anticoagulation, br = 0.504, dt1 = 16, sm = "OR", transf = FALSE) dis1 # Alternatively, we may simply apply the \code{inc()} function to # log odds ratios. data(anticoagulation) dis2 <- inc(log(anticoagulation), br = 0.504, dt1 = 16, sm = "OR") dis2
Data set from meta-analysis on the association between parenteral anticoagulation and mortality in patients with cancer (Akl et al., 2017). For each primary study, results are expressed as a log odds ratio.
Data frame containing, for each primary study of the meta-analysis from Akl et al. (2017):
number of events (variables rA
and rB
) and
total number of participants (nA
and nB
) for each
group,
effect sizes [ln OR] (yi
),
respective variances (vi
),
risk of bias assessment (RoB
).
Akl, E. A., Kahale, L. A., Hakoum, M. B., Matar, C. F., Sperati, F., Barba, M., et al. (2017). “Parenteral anticoagulation in ambulatory patients with cancer.” Cochrane Database of Systematic Reviews, 9: CD006652.
data(anticoagulation_df) m1 <- meta::metagen(yi, sqrt(vi), sm = "OR", data = anticoagulation_df, studlab = LETTERS[1:18]) set.seed(1090) # Make sampled effect sizes reproducible sample1 <- getsamples(m1) dis1 <- inc(sample1, dt1 = 16, dt2 = 31, dt3 = 60, br = 0.504, sm = "OR") dis1 if(requireNamespace("metafor")){ # Same sampled effect sizes using R package 'metafor' (must be installed) m2 <- metafor::rma(anticoagulation_df, measure = "OR", slab = LETTERS[1:18]) set.seed(1090) # Make sampled effect sizes reproducible sample2 <- getsamples(m2) dis2 <- inc(sample2, dt1 = 16, dt2 = 31, dt3 = 60, br = 0.504, sm = "OR") dis2 all.equal(sample1, sample2) # Only difference: package name }
data(anticoagulation_df) m1 <- meta::metagen(yi, sqrt(vi), sm = "OR", data = anticoagulation_df, studlab = LETTERS[1:18]) set.seed(1090) # Make sampled effect sizes reproducible sample1 <- getsamples(m1) dis1 <- inc(sample1, dt1 = 16, dt2 = 31, dt3 = 60, br = 0.504, sm = "OR") dis1 if(requireNamespace("metafor")){ # Same sampled effect sizes using R package 'metafor' (must be installed) m2 <- metafor::rma(anticoagulation_df, measure = "OR", slab = LETTERS[1:18]) set.seed(1090) # Make sampled effect sizes reproducible sample2 <- getsamples(m2) dis2 <- inc(sample2, dt1 = 16, dt2 = 31, dt3 = 60, br = 0.504, sm = "OR") dis2 all.equal(sample1, sample2) # Only difference: package name }
Obtains a matrix containing sampled effect sizes from primary studies of a meta-analysis.
getsamples( obj, param = NULL, package = NULL, n.samples = 10000, sm, transf = TRUE )
getsamples( obj, param = NULL, package = NULL, n.samples = 10000, sm, transf = TRUE )
obj |
Meta-analysis object (see Details). |
param |
Parameters for effect sizes (see Details). |
package |
Character string with name of R package used to
create the meta-analysis object |
n.samples |
Number of samples per study if meta-analysis had been
performed with R package 'meta' or
|
sm |
A character string indicating the summary measure used in primary studies. |
transf |
A logical indicating whether effect sizes are
transformed or on the original scale. If |
Creates a matrix with sampled effect sizes of primary studies (number of rows equal to the number of samples, number of columns equal to the number of studies in the meta-analysis).
Main input to this function is argument obj
containing a
meta-analysis object created with bugs
from R package
'R2OpenBUGS', jags
from 'R2jags',
jags.samples
from 'rjags', brm
from 'brms',
rma
from 'metafor', or metabin
, metacont
or metagen
from 'meta'.
Argument param
corresponds to the effect size measures of
the primary studies (for R packages 'R2OpenBUGS', 'R2jags',
and 'rjags') or to the name of the column that contains the unique
identification of each primary study in the data frame containing the
results of primary studies used for meta-analysis ('brms' package).
This argument is not required if the meta-analysis has been performed using
R package 'meta' or 'metafor'.
Information of the R package used to conduct the meta-analysis can
be provided in argument package
. The value of package
can be 'R2OpenBUGS', 'R2jags', 'rjags', 'meta', 'metafor' or
'brms'. This information is not required for an object created with
'meta', 'metafor' or 'brms'.
Argument n.samples
contains the number of samples per study for
meta-analyses created with 'meta' or 'metafor'. Default
is 10000 samples.
Summary measure used in primary studies (argument sm
) can be
either "OR" (odds ratio), "RR" (risk ratio), "HR" (hazard ratio),
"RD" (risk difference), "MD" (mean difference), "SMD" (standardised
mean difference), "GEN_ratio" (generic ratio) or "GEN_diff"
(generic difference). Does not need to be provided if the meta-analysis
was performed with 'meta' or 'metafor'.
A matrix containing sampled effect sizes (rows) for primary study (columns).
Bernardo Sousa-Pinto [email protected]
# Example with an object obtained using the 'R2OpenBUGS' package ("es", # whose simulations on the effect sizes of primary studies are those # of the "delta" parameter). If the object had been obtained using a # different package, all remaining arguments would be the same and only # the "package" argument would have a different input. # In this example, argument \code{transf = TRUE} (default), as sampled # effect sizes are log odds ratios. load(url("https://raw.github.com/BernardoSousaPinto/metainc_extra_files/main/es.Rdata")) sample <- getsamples(es, param = "delta", package = "R2OpenBUGS", sm = "OR") sample # Example using a dataset providing effect sizes for primary studies (yi) # and respective variances (vi). A frequentist meta-analysis using the 'meta' # package is conducted. data("anticoagulation_df") m1 <- meta::metagen(yi, sqrt(vi), sm = "OR", data = anticoagulation_df, studlab = LETTERS[1:18]) set.seed(1090) # Make sampled effect sizes reproducible sample1 <- getsamples(m1) sample1 if(requireNamespace("metafor")){ # Same samples of effect sizes using R package 'metafor' (must be installed) m2 <- metafor::rma(anticoagulation_df, measure = "OR", slab = LETTERS[1:18]) set.seed(1090) # Make sampled effect sizes reproducible sample2 <- getsamples(m2) sample2 all.equal(sample1, sample2) # Only difference: package name }
# Example with an object obtained using the 'R2OpenBUGS' package ("es", # whose simulations on the effect sizes of primary studies are those # of the "delta" parameter). If the object had been obtained using a # different package, all remaining arguments would be the same and only # the "package" argument would have a different input. # In this example, argument \code{transf = TRUE} (default), as sampled # effect sizes are log odds ratios. load(url("https://raw.github.com/BernardoSousaPinto/metainc_extra_files/main/es.Rdata")) sample <- getsamples(es, param = "delta", package = "R2OpenBUGS", sm = "OR") sample # Example using a dataset providing effect sizes for primary studies (yi) # and respective variances (vi). A frequentist meta-analysis using the 'meta' # package is conducted. data("anticoagulation_df") m1 <- meta::metagen(yi, sqrt(vi), sm = "OR", data = anticoagulation_df, studlab = LETTERS[1:18]) set.seed(1090) # Make sampled effect sizes reproducible sample1 <- getsamples(m1) sample1 if(requireNamespace("metafor")){ # Same samples of effect sizes using R package 'metafor' (must be installed) m2 <- metafor::rma(anticoagulation_df, measure = "OR", slab = LETTERS[1:18]) set.seed(1090) # Make sampled effect sizes reproducible sample2 <- getsamples(m2) sample2 all.equal(sample1, sample2) # Only difference: package name }
Calculates the Decision Inconsistency (DI) and Across-Studies Inconsistency (ASI) indices.
inc( x, dt1, dt2 = NULL, dt3 = NULL, sm, br = NULL, utility = NULL, scale = 1000, transf = TRUE, transf.dt = FALSE ) ## S3 method for class 'inc' print(x, digits = 1, ...) ## S3 method for class 'inc' summary(object, ...) ## S3 method for class 'summary.inc' print(x, digits = 1, ...)
inc( x, dt1, dt2 = NULL, dt3 = NULL, sm, br = NULL, utility = NULL, scale = 1000, transf = TRUE, transf.dt = FALSE ) ## S3 method for class 'inc' print(x, digits = 1, ...) ## S3 method for class 'inc' summary(object, ...) ## S3 method for class 'summary.inc' print(x, digits = 1, ...)
x |
An R object created with |
dt1 |
A single numeric defining the decision threshold to
distinguish (i) meaningful from trivial effects, if arguments
|
dt2 |
A single numeric defining the decision threshold to
distinguish (i) positive / beneficial from trivial effects if
argument |
dt3 |
A single numeric defining the decision threshold to distinguish large from moderate effects. |
sm |
A character string indicating the summary measure used in primary studies (see Details). |
br |
Baseline risk (only considered for odds, risk or hazard ratio). |
utility |
Utility value. |
scale |
The number of people per which absolute decision
thresholds are provided (default: 1000, i.e., absolute decision
threshold values are defined per 1000 persons). Only considered if
|
transf |
A logical indicating whether the values of an effect
size matrix (argument |
transf.dt |
A logical indicating whether relative decision
thresholds are transformed or on the original scale. If
|
digits |
Minimal number of significant digits to print
percentages, see |
... |
Additional arguments (ignored) |
object |
R object of class |
Calculates the Decision Inconsistency index (DI) and the Across-Studies Inconsistency index (ASI) for a meta-analysis. The following possibilities are considered depending on the type of effect size measures:
Effect size measure corresponding to a ratio (sm =
"OR"
, "RR"
or "HR"
) with the DI and the ASI being
calculated based on absolute effects: This requires the specification
of a baseline risk (i.e., br
must be defined). The
decision threshold values (dt1
, dt2
and dt3
must be provided as absolute effects (i.e., number of additional
or diminished events per N people. By default, it is assumed that
these threshold values are provided per 1000 people. However,
this can be changed using the scale
argument).
Effect size measure corresponding to a ratio (sm
=
"OR"
, "RR"
, "HR"
or "GEN_ratio"
) with
the DI and the ASI being calculated based on relative effect size
measures: The sampled effect sizes of primary studies are
directly compared with decision thresholds (dt1
,
dt2
, dt3
) also expressed as relative effect sizes.
This is the adopted approach when no information is
provided on the baseline risk (br
).
Effect size measure corresponding to a difference (sm
= "MD"
, "SMD"
, "RD"
or "GEN_diff"
):
The sampled effect sizes of primary studies are directly compared with
decision thresholds (dt1
, dt2
, dt3
) also expressed
as differences.
Of note, when dealing with relative effect size measures, judgements based on absolute effects tend to be considered more important for decision making. The formulae for calculating absolute effects based on relative effect size measures are those used by the GRADE approach (see references below).
Ideally, arguments dt1
, dt2
and dt3
should be
provided. If only one decision threshold is available, it is either
possible to provide (i) only dt1
, or (ii) both dt1
and dt2
(if the threshold distinguishing clinically relevant
benefits vs trivial effects is different from that distinguishing
clinically relevant harms vs trivial effects).
Argument sm
must be "OR"
(odds ratio), "RR"
(risk ratio), "HR"
(hazard ratio), "MD"
(mean
difference), "SMD"
(standardised mean difference),
"RD"
(risk difference), "GEN_diff"
(generic
difference), or "GEN_ratio"
(generic ratio).
The baseline risk (br
) must be a numeric value between 0 and
1. It can be provided when sm = "OR"
, "RR"
or
'"HR"
. The baseline risk is also known as assumed comparator
risk (i.e., the risk that the outcome of interest occurs in the
comparison intervention).
An object of class inc
, for which some standard methods are
available, see metainc-package
. Some of the
components include:
DI |
A percentage corresponding to the Decision Inconsistency index. The higher / closer to 100% the value, the higher the inconsistency. |
ASI |
A percentage corresponding to the Across-Studies Inconsistency index. The higher / closer to 100% the value, the higher the across-studies inconsistency. |
class_distribution |
A data frame containing the proportion of samples indicating (if three decision thresholds had been provided):
|
prop_over_null |
A numeric value indicating the proportion of samples with a value higher than the value representing no difference between the groups. |
Bernardo Sousa-Pinto [email protected], Guido Schwarzer [email protected]
Cohen J. (1998). “Statistical Power Analysis in the Behavioral Sciences”, 2nd edition ed. Hillsdale (NJ): Lawrence Erlbaum Associates, Inc.
Schunemann HJ, Higgins JPT, Vist GE, et al. (2019). “Completing ‘Summary of findings’ tables and grading the certainty of the evidence.” Cochrane Handbook for Systematic Reviews of Interventions, 375–402.
Schunemann HJ, Vist GE, Higgins JPT, et al. (2019). “Interpreting results and drawing conclusions.” Cochrane Handbook for Systematic Reviews of Interventions, 403–431.
Skoetz N, Goldkuhle M, van Dalen EC, et al. (2020). “GRADE guidelines 27: how to calculate absolute effects for time-to-event outcomes in summary of findings tables and Evidence Profiles.” Journal of Clinical Epidemiology, 118, 124–131.
# Example with effect sizes measures expressed as ratios and with # calculation of the Decision Inconsistency index and the Across-Studies # Inconsistency index based on absolute effects: data(anticoagulation) inc_anticoagulation <- inc(anticoagulation, dt1 = 16, dt2 = 31, dt3 = 60, br = 0.5, sm = "OR", transf = FALSE) inc_anticoagulation # Same result inc_anticoagulation <- inc(log(anticoagulation), dt1 = 16, dt2 = 31, dt3 = 60, br = 0.5, sm = "OR") inc_anticoagulation # Example with calculation of the Decision Inconsistency index and the # Across-Studies Inconsistency index based on effect size measures expressed # as mean differences: data(montelukast) inc_montelukast <- inc(montelukast, dt1 = 0.2, dt2 = 0.4, dt3 = 0.6, sm = "md") inc_montelukast
# Example with effect sizes measures expressed as ratios and with # calculation of the Decision Inconsistency index and the Across-Studies # Inconsistency index based on absolute effects: data(anticoagulation) inc_anticoagulation <- inc(anticoagulation, dt1 = 16, dt2 = 31, dt3 = 60, br = 0.5, sm = "OR", transf = FALSE) inc_anticoagulation # Same result inc_anticoagulation <- inc(log(anticoagulation), dt1 = 16, dt2 = 31, dt3 = 60, br = 0.5, sm = "OR") inc_anticoagulation # Example with calculation of the Decision Inconsistency index and the # Across-Studies Inconsistency index based on effect size measures expressed # as mean differences: data(montelukast) inc_montelukast <- inc(montelukast, dt1 = 0.2, dt2 = 0.4, dt3 = 0.6, sm = "md") inc_montelukast
Matrix with sampled effect sizes (mean differences) from a meta-analysis by Krishnamoorthy et al. (2020).
A matrix with 5000 sampled mean differences (rows) for 9 studies (columns) following a Bayesian meta-analysis.
Data from Krishnamoorthy et al. (2020) (Figure 7), displaying results presented as mean differences. Each column corresponds to a different primary study.
Krishnamoorthy, M., Mohd Noor, N., Mat Lazim, N., & Abdullah, B. (2020). “Efficacy of montelukast in allergic rhinitis treatment: a systematic review and meta-analysis.” Drugs, 80, 1381–1851.
data(montelukast) inc(montelukast, dt1 = 0.2, dt2 = 0.4, dt3 = 0.6, sm = "MD")
data(montelukast) inc(montelukast, dt1 = 0.2, dt2 = 0.4, dt3 = 0.6, sm = "MD")
Calculate risk ratios from odds ratios and baseline risk.
or2rr(or, br)
or2rr(or, br)
or |
Odds ratio(s). |
br |
Baseline risk (also known as assumed comparator risk), i.e., risk that the outcome of interest would occur in the comparator intervention. It must be expressed as a value between 0 and 1. |
Converts odds ratios (OR) into risk ratios (RR) using the formula available in Schunemann et al. (2019), Chapter 15:
RR = OR / (1 - br x (1 - OR)),
with br corresponding to the baseline risk (the assumed comparator risk; i.e., the risk that the outcome of interest would occur in the comparison intervention).
A vector or matrix with risk ratios.
Bernardo Sousa-Pinto [email protected], Guido Schwarzer [email protected]
Schunemann HJ, Vist GE, Higgins JPT, et al. (2019). “Interpreting results and drawing conclusions.” Cochrane Handbook for Systematic Reviews of Interventions, 403–431.
data(anticoagulation) RRs <- or2rr(anticoagulation, br = 0.5) head(RRs)
data(anticoagulation) RRs <- or2rr(anticoagulation, br = 0.5) head(RRs)
Sensitivity analysis on the Decision Inconsistency index and the Across-Studies Inconsistency index based on a range of baseline risks. It is applicable only to meta-analyses with a binary outcome (effect size measures expressed as risk ratios, odds ratios or hazard ratios).
sens_br(x, br1, br2, dt1, dt2 = NULL, dt3 = NULL, sm, by = 0.01, scale = 1000) ## S3 method for class 'sens_br' plot( x, ylim1 = c(0, 100), ylim2 = c(0, 100), ylab1 = "DI index (%)", ylab2 = "ASI index (%)", ... )
sens_br(x, br1, br2, dt1, dt2 = NULL, dt3 = NULL, sm, by = 0.01, scale = 1000) ## S3 method for class 'sens_br' plot( x, ylim1 = c(0, 100), ylim2 = c(0, 100), ylab1 = "DI index (%)", ylab2 = "ASI index (%)", ... )
x |
An R object created with |
br1 |
Smallest baseline risk considered. |
br2 |
Largest baseline risk considered. |
dt1 |
A single numeric defining the decision threshold to
distinguish (i) meaningful from trivial effects, if arguments
|
dt2 |
A single numeric defining the decision threshold to distinguish moderate from small effects provided. |
dt3 |
A single numeric defining the decision threshold to distinguish large from moderate effects. |
sm |
A character string indicating the summary measure used in
primary studies (either |
by |
Increment of the sequence from |
scale |
The number of people per which absolute decision thresholds are provided (default: 1000, i.e., absolute decision threshold values are defined per 1000 people). |
ylim1 |
The y limits (min, max) of the plot showing the Decision Inconsistency index. |
ylim2 |
The y limits (min, max) of the plot showing the Across-Studies Inconsistency index. |
ylab1 |
A label for the y-axis (Decision Inconsistency index). |
ylab2 |
A label for the y-axis (Across-Studies Inconsistency index). |
... |
Additional graphical arguments (ignored). |
Computes the Decision Inconsistency index (DI) and the
Across-Studies Inconsistency index (ASI) across a range of baseline risks.
It can only be applied for meta-analyses with binary outcome data (effect
size measures expressed as (log) risk ratios, odds ratios or hazard ratios),
with the DI and the ASI being calculated based on absolute effects.
As a result, the decision threshold values (dt1
, dt2
,
dt3
) must be provided as absolute effects. By default, it is assumed
that threshold values are provided as numbers of events per 1000
persons (scale = 1000
).
A data frame containing
br |
Baseline risk |
ASI |
Decision Inconsistency index at baseline risk |
DI |
Across-Studies Inconsistency index at baseline risk |
Bernardo Sousa-Pinto [email protected], Guido Schwarzer [email protected]
Schunemann HJ, Higgins JPT, Vist GE, et al. (2019). “Completing ‘Summary of findings’ tables and grading the certainty of the evidence.” Cochrane Handbook for Systematic Reviews of Interventions, 375–402.
Skoetz N, Goldkuhle M, van Dalen EC, et al. (2020). “GRADE guidelines 27: how to calculate absolute effects for time-to-event outcomes in summary of findings tables and Evidence Profiles.” Journal of Clinical Epidemiology, 118, 124–131.
data(anticoagulation) dis <- sens_br(log(anticoagulation), br1 = 0.3, br2 = 0.7, dt1 = 20, sm = "OR", by = 0.1) dis plot(dis, ylim1 = c(0, 100), ylim2 = c(0, 50))
data(anticoagulation) dis <- sens_br(log(anticoagulation), br1 = 0.3, br2 = 0.7, dt1 = 20, sm = "OR", by = 0.1) dis plot(dis, ylim1 = c(0, 100), ylim2 = c(0, 50))
Sensitivity analysis on the Decision Inconsistency index and the Across-Studies Inconsistency index based on a range of decision thresholds distinguishing meaningful versus trivial effects. It is applicable only to meta-analyses with binary outcome data (effect size measures expressed as risk ratios, odds ratios or hazard ratios).
sens_dt(x, br = NULL, min1, max1, min2, max2, sm, by = 1, scale = 1000) heatplot(x, limits1 = NULL, limits2 = NULL, ...)
sens_dt(x, br = NULL, min1, max1, min2, max2, sm, by = 1, scale = 1000) heatplot(x, limits1 = NULL, limits2 = NULL, ...)
x |
An R object created with |
br |
Baseline risk. |
min1 |
A single numeric defining the lowest value for the
lower decision threshold. Must be lower than |
max1 |
A single numeric defining the highest value for the
lower decision threshold. Must be higher than |
min2 |
A single numeric defining the lowest value for the
higher decision threshold. Must be higher than |
max2 |
A single numeric defining the highest value for the
higher decision threshold. Must be higher than |
sm |
A character string indicating the summary measure used in
primary studies (either |
by |
Increment of the sequences from |
scale |
The number of people per which absolute decision thresholds are provided (default: 1000, i.e., absolute decision threshold values are defined per 1000 people). |
limits1 |
Limits for the colour range in the heatplot showing the Decision Inconsistency index. |
limits2 |
Limits for the colour range in the heatplot showing the Across-Studies Inconsistency index. |
... |
Additional graphical arguments (ignored). |
Computes the Decision Inconsistency index
(DI) and the Across-Studies Inconsistency index (ASI) across a range of
decision thresholds distinguishing meaningful vs trivial effects. This
function can only be applied to dichotomous outcomes expressed as (log-) odds
ratio, risk ratio and hazard ratio.
Graphical representations can be obtained using the heatplot
function.
A data frame containing
dt1 |
Lower decision threshold |
dt2 |
Higher decision threshold |
ASI |
Decision Inconsistency index for each combination of decision thresholds |
DI |
Across-Studies Inconsistency index for each combination of decision thresholds |
Bernardo Sousa-Pinto [email protected], Guido Schwarzer [email protected]
Schunemann HJ, Higgins JPT, Vist GE, et al. (2019). “Completing ‘Summary of findings’ tables and grading the certainty of the evidence.” Cochrane Handbook for Systematic Reviews of Interventions, 375–402.
Skoetz N, Goldkuhle M, van Dalen EC, et al. (2020). “GRADE guidelines 27: how to calculate absolute effects for time-to-event outcomes in summary of findings tables and Evidence Profiles.” Journal of Clinical Epidemiology, 118, 124–131.
data(anticoagulation) dis <- sens_dt(log(anticoagulation), br = 0.5, min1 = -20, max1 = -10, min2 = 10, max2 = 20, sm = "or") # head(dis) summary(dis$DI) summary(dis$ASI) heatplot(dis)
data(anticoagulation) dis <- sens_dt(log(anticoagulation), br = 0.5, min1 = -20, max1 = -10, min2 = 10, max2 = 20, sm = "or") # head(dis) summary(dis$DI) summary(dis$ASI) heatplot(dis)
Computation of the Decision Inconsistency index for each individual primary study and leave-one-out sensitivity analysis for the Decision Inconsistency index and the Across-Studies Inconsistency index.
sens_inf(x) ## S3 method for class 'sens_inf' print(x, ...) ## S3 method for class 'sens_inf' summary(object, ...) ## S3 method for class 'summary.sens_inf' print(x, ...)
sens_inf(x) ## S3 method for class 'sens_inf' print(x, ...) ## S3 method for class 'sens_inf' summary(object, ...) ## S3 method for class 'summary.sens_inf' print(x, ...)
x |
An R object of class |
... |
Additional arguments (ignored). |
object |
An R object of class |
Computes the Decision Inconsistency index (DI) for each individual primary
study and performs a leave-one-out sensitivity analysis for the DI and for
the Across-Studies Inconsistency index. This function takes, as its
single argument, an object of the class inc
.
This function generates:
di_stud |
A data frame containing the Decision Inconsistency index for each individual primary study. |
di_asi_sens |
A data frame containing results of a leave-one-out sensitivity analysis for the Decision Inconsistency index and the Across-Studies Inconsistency index. |
Bernardo Sousa-Pinto [email protected]
data(anticoagulation) inc_anticoagulation <- inc(log(anticoagulation), dt1 = 16, dt2 = 31, dt3 = 60, br = 0.5, sm = "OR") sens <- sens_inf(inc_anticoagulation) sens
data(anticoagulation) inc_anticoagulation <- inc(log(anticoagulation), dt1 = 16, dt2 = 31, dt3 = 60, br = 0.5, sm = "OR") sens <- sens_inf(inc_anticoagulation) sens
Computation of the Decision Inconsistency index and the Across-Studies Inconsistency index for specific subsets of studies (allowing for subgroup analysis).
## S3 method for class 'inc' subset(x, data, subset, ...)
## S3 method for class 'inc' subset(x, data, subset, ...)
x |
An object created with |
data |
A data frame with the same number of primary studies as those included in the meta-analysis and containing the variables based on which subset analysis is to be performed. |
subset |
A logical vector to select studies for subset analysis. |
... |
Additional arguments (ignored). |
Computes the Decision Inconsistency index and the Across-Studies Inconsistency index for a subset (subgroup) of studies.
An object of class inc
.
Bernardo Sousa-Pinto [email protected], Guido Schwarzer [email protected]
data(anticoagulation) inc_anticoagulation <- inc(anticoagulation, dt1 = 16, dt2 = 31, dt3 = 60, br = 0.5, sm = "OR", transf = FALSE) inc_anticoagulation # Example with subset analysis restricted to studies with a low risk of bias: data(anticoagulation_df) subset1_anticoagulation <- subset(inc_anticoagulation, anticoagulation_df, RoB == "Low") subset1_anticoagulation # Example with subset analysis excluding studies with a high risk of bias # (resulting in the same subset of studies as no study has "Moderate" RoB): subset2_anticoagulation <- subset(inc_anticoagulation, anticoagulation_df, RoB != "High") subset2_anticoagulation
data(anticoagulation) inc_anticoagulation <- inc(anticoagulation, dt1 = 16, dt2 = 31, dt3 = 60, br = 0.5, sm = "OR", transf = FALSE) inc_anticoagulation # Example with subset analysis restricted to studies with a low risk of bias: data(anticoagulation_df) subset1_anticoagulation <- subset(inc_anticoagulation, anticoagulation_df, RoB == "Low") subset1_anticoagulation # Example with subset analysis excluding studies with a high risk of bias # (resulting in the same subset of studies as no study has "Moderate" RoB): subset2_anticoagulation <- subset(inc_anticoagulation, anticoagulation_df, RoB != "High") subset2_anticoagulation