Additive Information & Details of Evidence Synthesis 

The aides, a R package, emerges as a collection of functions designed to provide supplementary information and intricacies in the processes of data synthesis and evidence evaluation. In the realm of evidencebased decisionmaking, these processes are pivotal, shaping the foundation upon which informed conclusions are drawn. The aides, essentially a toolkit for pooled analysis of aggregated data, is crafted to enhance the inclusivity and depth of this decisionmaking approach.
Developed with core values of flexibility, ease of use, and comprehensibility, aides plays a crucial role in simplifying the often complex analysis process. This accessibility extends to both seasoned professionals and the broader public, fostering a more widespread engagement with synthesized evidence. The significance of such engagement cannot be overstated, as it empowers individuals to navigate through the intricacies of data, promoting a better understanding of the evidence at hand.
Moreover, aides is committed to staying at the forefront of advances in the methodology of data synthesis and evidence evaluation. This commitment ensures that users have access to some advanced methods, further enhancing the robustness and reliability of their decisionmaking processes. In the long term, the overarching goal of the aides package is to contribute to knowledge translation, enabling individuals to make decisions based on a comprehensive understanding of the evidence. In essence, aides serves as a beacon, guiding users through the complex terrain of data synthesis and evidence evaluation, ultimately facilitating informed and impactful decisionmaking.
Users are suggested to use functions in aides by calling the library with following syntax:
library(aides)
Briefly, aides currently consists of three focuses as follows:
Disparity: a newly proposed assumption regarding disparities in sample size analysis.
Discordance: a newly proposed assumption regarding discordance in rank of study size analysis.
Sequential analysis: a method to examine the sufficiency of information size.
Users can import their data and do relevant tests or graphics using functions in package aides. The present package consists of eight functions listed as follows:
Disparity test:  
PlotDistrSS()

In the section of Disparity test (Step 3)  
TestDisparity()

In the section of Disparity test (Step 4)  
PlotDisparity()

In the section of Disparity test (Step 5)  
Discordance test:  
TestDiscordance()

In the section of Discordance test (Step 3)  
Sequential analysis:  
DoSA()

In the section of Sequential analysis (Step 2)  
DoOSA()

In the section of Sequential analysis (additional)  
PlotOSA()

In the section of Sequential analysis (additional)  
PlotPower()

In the section of Sequential analysis (additional) 
The following descriptions and syntax outline the process for conducting a disparity test. Users begin by assessing the distribution of sample sizes among studies and visually inspecting them to determine the suitable method for the disparity test. Subsequently, two types of disparity tests are performed: outlierbased and variabilitybased disparity assessments. Due to the nuanced nature of disparity assumptions, it is advisable to evaluate both outlierbased and variabilitybased disparities.
Step 1: Import data (example of the study by Olkin 1995)
library(meta)
data("Olkin1995")
< Olkin1995 dataOlkin1995
$n < dataOlkin1995$n.exp + dataOlkin1995$n.cont dataOlkin1995
Step 3: Check distribution of study sizes
The statistical analysis in this phase relies on normality tests such as the Shapiro–Wilk test and the Kolmogorov–Smirnov test (Conover, 1971; Royston, 1982). While both tests assume normality as the null hypothesis and generate a test statistic based on the sample, they differ in their sensitivity to features of normal distributions. The ShapiroWilk test is specifically designed for testing normality, whereas the KolmogorovSmirnov test is more general but less powerful, meaning it is less likely to correctly reject the null hypothesis of normality.
The ShapiroWilk test is specifically designed to assess the normality assumption by evaluating whether a given sample of data comes from a normally distributed population (Royston, 1982). It computes a test statistic (\(W\)) based on the deviation of sample data from a hypothetical normal distribution. The application of the Shapiro–Wilk method for evaluating the normality of sample sizes entails substituting sample values and sample mean with the respective parameters of interest, namely the number of individuals (\(i\)) and the average study size (\(\overline{i}\)). Subsequent to this substitution, the test statistic for assessing the normality of sample sizes (\(W_k\)) can be computed by incorporating the provided information alongside the study size of each individual study (\(i_{(j)}\)), while accounting for constants (\(c_j\)) derived from the number of studies and expected values under the null hypothesis of normality.
Similarly, the Kolmogorov–Smirnov test compares the empirical distribution function (EDF) of the sample dataset to the cumulative distribution function (CDF) of a specified theoretical distribution, such as the normal distribution (Conover, 1971). The test statistic (\(D\)) represents the maximum absolute difference between the EDF and the CDF. Both tests are commonly employed to ascertain the normality of data before proceeding with further statistical analyses. A straightforward approach to assess normality utilizing the Kolmogorov–Smirnov method involves inputting the study sizes of the individual studies into the designated formula. The test statistic (\(D_k\)) is then computed accordingly.
As both tests are commonly employed methods, users can simply employ the shapiro.test()
or ks.test()
functions in R core package stats for testing of sample normality.
shapiro.test(dataOlkin1995$n)
ks.test(dataOlkin1995$n, "pnorm")
#>
#> ShapiroWilk normality test
#>
#> data: dataOlkin1995$n
#> W = 0.2596, pvalue < 2.2e16
#>
#> Asymptotic onesample KolmogorovSmirnov test
#>
#> data: dataOlkin1995$n
#> D = 1, pvalue < 2.2e16
#> alternative hypothesis: twosided
The aides package utilizes them for testing distribution before conducting disparity tests. The analysis can be visualized using the PlotDistrSS()
function (Figure 2.1). Default of thePlotDistrSS()
function is based on the ShapiroWilk test.
PlotDistrSS(n = n,
data = dataOlkin1995,
study = author,
time = year)
Additionally, if users would like to check normality using KolmogorovSmirnov test, they can set parameter method
with argument "ks"
in the function PlotDistrSS()
.
PlotDistrSS(n = n,
data = dataOlkin1995,
study = author,
time = year,
method = "ks")
Step 4: Test assumption of disparity in study size
Essentially, the assessment of outlierbased disparity can be conducted using the function TestDisparity()
, which requires parameters such as n
, data
, study
, and time
. The syntax for implementing this analysis is as follows:
TestDisparity(n = n,
data = dataOlkin1995,
study = author,
time = year)
#> Summary of disparities in sample size test:
#> Number of outliers = 13 (Excessive cases = 36509; Pvalue < 0.001)
#> Variability = 3.658 (Pvalue < 0.001)
#>
#> Outlier detection method: MAD
#> Variability detection method: CV
Figure 2.2 visualizes the outlierbased disparity based on the excessive cases of oulier(s).
TestDisparity(n = n,
data = dataOlkin1995,
study = author,
time = year,
plot = TRUE)
Step 5: Illustrate disparity plot
Due to nonnormal distribution among the study sizes as shown in Step 3 (Figure 2.1 and also see the results of normality tests), robust method is recommended for testing variability, which can be carried out by the following syntax:
< TestDisparity(n = n,
rsltDisparity data = dataOlkin1995,
study = author,
time = year,
vrblty = "MAD")
#> Summary of disparities in sample size test:
#> Number of outliers = 13 (Excessive cases = 36509; Pvalue < 0.001)
#> Variability = 0.951 (Pvalue < 0.001)
#>
#> Outlier detection method: MAD
#> Variability detection method: MAD
The following syntax instead of step 5 aforementioned is recommended for illustrating disparity plot of variability based on robust coefficient of variation:
PlotDisparity(rsltDisparity,
which = "CV",
szFntAxsX = 1)
The following steps and syntax demonstrate how user can carry out discordance test. Figure 2.4 visualizes the test.
Step 1: Import data (example of the study by Fleiss 1993)
library(meta)
data("Fleiss1993bin")
< Fleiss1993bin dataFleiss1993bin
$n < dataFleiss1993bin$n.asp + dataFleiss1993bin$n.plac
dataFleiss1993bin$se < sqrt((1 / dataFleiss1993bin$d.asp)  (1 / dataFleiss1993bin$n.asp) + (1 / dataFleiss1993bin$d.plac)  (1 / dataFleiss1993bin$n.plac)) dataFleiss1993bin
Step 3: Test assumption of discordance in study size
TestDiscordance(n = n,
se = se,
study = study,
data = dataFleiss1993bin)
#> Summary of discordance in ranks test:
#> Statistics (Bernoulli exact): 2
#> Pvalue: 0.423
#> Note: No significant finding in the test of discordance in study size ranks.
Step 4: Illustrate discordance plot
TestDiscordance(n = n,
se = se,
study = study,
data = dataFleiss1993bin,
plot = TRUE)
Sequential analysis in evidencebased medicine is a statistical approach applied in clinical trials and metaanalyses to continually assess accumulating data, allowing for interim decisions on the effectiveness or safety of medical interventions (Kang, 2021; Jennison & Turnbull, 2005; Wetterslev et al., 2017; Wetterslev et al., 2008). In contrast to traditional methods that wait for all data to be collected, sequential analysis enables periodic assessments during a trial. This method is especially valuable when ongoing assessment is ethically or practically necessary. It seeks to balance the need for robust statistical inference with the ethical duty to ensure participant safety and prompt decisionmaking that can influence clinical practice. Traditional sequential analysis is proposed for prospective design in terms of trial, and could be adapted for prospective metaanalysis (PMA). Proper planning and prespecification in study protocols are crucial for maintaining the integrity of sequential analysis (Thomas et al., 2019). In other words, it is generally discouraged to employ sequential analysis methodologies for conventional metaanalysis (CMA) lacking preestablished parameters within the study protocol. However, it is imperative to acknowledge the persistent relevance of sequential methodologies in facilitating the assessment of error control mechanisms by researchers and clinicians. In scenarios where relevant parameters for sequential analysis remain unspecified, conducting observed sequential analysis serves as a valuable strategy for evaluating the efficacy of error control measures within a synthesis.
Sequential method has the capability to manage the overall Type I error in clinical trials and cumulative metaanalyses through the utilization of an alpha spending function, exemplified by the approach introduced by O’Brien & Fleming (1979). Based on required sample size (RSS) or required information size (RIS), sequential analysis applies the alpha spending function to allocate less significance level to early interim analyses, demanding more substantial evidence for declaring statistical significance. Critical boundaries for significance are determined by this function, becoming less stringent as more data accumulates. Sequential analysis uses these boundaries to monitor effects at each interim analysis, declaring statistical significance if the cumulative Zscore crosses them. This approach minimizes the risk of false positives in sequential analyses, where multiple interim analyses are conducted, while maintaining the ability to detect true effects.
Therefor, the essentials of sequential metaanalysis encompass various elements including study time, sample size, and cumulative Zscores derived from cumulative metaanalysis following a temporal order. Additionally, integral to this analysis are the anticipated effects of intervention or exposure, which are either predetermined or established through prior estimates, along with their respective variances. Moreover, the formulation accounts for predefined probabilities associated with Type I error (denoted as \(\alpha\)) and Type II error (denoted as \(\beta\)). Leveraging this comprehensive set of parameters, particularly the anticipated effects and their associated variances in conjunction with \(\alpha\) and \(\beta\), this methodology facilitates the computation of the RIS and the establishment of alphaspending monitoring boundaries. By charting the information size axis, the analysis offers a comprehensive visualization of the cumulative Zscores and the accompanying alphaspending monitoring boundaries (Wetterslev et al., 2008; Wetterslev et al., 2009; Wetterslev et al., 2017).
Within the realm of sequential method, the concept of the RIS holds paramount significance as it serves as the cornerstone for establishing spending monitoring boundaries, necessitated by adjustments to accommodate multiple interim analyses (Wetterslev et al., 2017). Essentially, sequential methods encompass considerations pertinent to sample size determination, albeit employing an approach divergent from conventional methodologies employed in hypothesis testing or estimation. The determination of the information size, delineating the RSS, hinges crucially upon various parameters including the anticipated effect size, statistical power, significance level, and any requisite adjustments tailored for multiple testing scenarios. Conventionally, the determination of the RSS encompasses an assessment of intervention or exposure effects, their variance, as well as the predefined probabilities associated with Type I error (\(\alpha\)) and Type II error (\(\beta\)). The formula governing the calculation of the RSS is as follows:
\[\begin{equation} RSS = 4 \times (Z_{1\alpha/2} + Z_{1  \beta})^2 \times \frac{\sigma^2} {\delta^2} \tag{2.1} \end{equation}\]
In the context of dichotomous outcomes, the parameter \(\delta\) can be substituted with the effect size that a trial aims to address, denoted by \(\mu\), derived from the difference in proportions between the control and experimental groups, represented by \(P_{control}  P_{experiment}\). Here, \(P_{control}\) and \(P_{experiment}\) signify the proportions of observed events in the control and experimental groups, respectively. The variance \(\sigma^2\) is computed as \(P_{average} \times (1  P_{average})\), where \(P_{average}\) is derived from \((P_{control} + P_{experiment}) / 2\) (Wetterslev et al., 2017). For continuous outcomes, the RSS can be determined as follows:
\[\begin{equation} RSS_{continuous} = 4 \times (Z_{1\alpha/2} + Z_{1  \beta})^2 \times \frac{MD^2} {SD^2} \tag{2.2} \end{equation}\]
Based on the basic formula for calculating RSS, RIS in sequential method could be calculated by using assumed pooled effect and the variance that associated with the assumed pooled effect (Wetterslev et al., 2017). Thus, the formula for the calculation of the RIS for metaanalysis in fixedeffect model is as follows:
\[\begin{equation} RIS_{fixed} = 4 \times (Z_{1\alpha/2} + Z_{1  \beta})^2 \times \frac{V_{fixed}} {\theta^2} \tag{2.3} \end{equation}\]
In metaanalysis employing the randomeffects model, the calculation of the RIS follows a similar formula, but with a substitution of the variance associated with the assumed pooled effect by the variance specific to the randomeffects model. RIS for metasequential analysis in randomeffects model can be denoted as \(RIS_{random}\). For a conservative estimation of the RIS in metaanalyses featuring heterogeneity, it is advisable to incorporate a heterogeneity correction factor (Wetterslev et al., 2008), also referred to as the Adjusted Factor (AF) in Trial Sequential Analysis (TSA) (Wetterslev et al., 2009; Wetterslev et al., 2017). Obviously, the calculation of the heterogeneity correction factor is inherently tied to the heterogeneity statistics. The Isquared statistic (denoted as \(I^2\)) is particularly suited for this purpose, serving as a widely utilized measure for quantifying and assessing heterogeneity (Higgins & Thompson, 2002). \(I^2\)based AF (denoted as \(AF_{I^2}\)) can be derived from the formula as follow:
\[\begin{equation} AF_{I^2} = \frac{1} {(1  I^2)} \tag{2.4} \end{equation}\]
However, \(I^2\) may provide misleading estimates due to uncertainties in the sampling error could introduce bias or inaccuracies into the analysis. Alternative measures or adjustments that are less susceptible to issues related to sampling error estimation should be considered (Wetterslev et al., 2009). Diversity (denoted as \(D^2\)) has been proposed as a pivotal parameter in the computation of AF for the RIS in randomeffects metaanalysis (Wetterslev et al., 2009; Wetterslev et al., 2017). It is derived from the variances observed in both the randomeffects model (\(V_{random}\)) and the fixedeffect model (\(V_{fixed}\)). The formula for calculating \(D^2\) is as follows:
\[\begin{equation} D^2 = \frac{(V_{random}  V_{fixed})} {V_{random}} \tag{2.5} \end{equation}\]
Then, the calculation of \(D^2\)based AF (denoted as \(AF_{D^2}\)) is similar to the formula of \(AF_{I^2}\) with replacement of \(I^2\) by \(D^2\). When addressing concerns regarding sampling error or bias, \(AF_{D^2}\) offers notable advantages over \(AF_{I^2}\) because \(D^2\) operates without the prerequisite of assuming a typical sampling error (usually denoted as \(\sigma^2\)). Besides, it accurately mirrors the relative variance expansion resultant from the betweentrial variance estimate, and exhibits a propensity to diminish as the estimate decreases, even when applied to identical study sets (Wetterslev et al., 2009).
To provide a conservative estimation of the RIS for metaanalyses with heterogeneity, it is recommended to utilize an adjusted RIS. This can be achieved by multiplying \(RIS_{random}\) by the AF (Wetterslev et al., 2009). Subsequently, there are two the Isquaredadjusted information size (HIS) can be derived by further multiplying \(RIS_{random}\) by \(AF_{I^2}\). Similarly, the diversityadjusted information size (DIS) is obtained by calculating \(RIS_{random}\) multiplied by \(AF_{D^2}\), as suggested by Wetterslev et al. (2009).
The following steps and syntax demonstrate how user can carry out sequential analysis. Figure 2.5 sequential analysis plot. This demonstration serves as a guide for users intending to conduct a prospective metaanalysis with predefined parameters such as Type I error (\(\alpha\)), Type II error (\(\beta\)), presumed effect size (relative risk reduction, denoted as \(RRR\), for dichotomous outcomes; mean difference, denoted as \(MD\), for continuous outcomes), an estimate of the variability associated with the presumed effect. However, this demonstration may not be applicable for metaanalyses conducted without such prespecified parameters.
Step 1: Import data (example of the study by Fleiss 1993)
library(meta)
data("Fleiss1993bin")
< Fleiss1993bin dataFleiss1993bin
Step 2: Do sequential analysis
DoSA(Fleiss1993bin,
source = study,
time = year,
r1 = d.asp,
n1 = n.asp,
r2 = d.plac,
n2 = n.plac,
measure = "RR",
PES = 0.1,
RRR = 0.2,
group = c("Aspirin", "Placebo"))
#> Summary of sequential analysis (main information)
#> Acquired sample size: 28003
#> Required sample size (heterogeneity adjusted): 21279
#> Cumulative z score: 2.035
#> Alphaspending boundary: 1.709 and 1.709
#> Adjusted confidence interval is not necessary to be performed.
#>
#> Summary of sequential analysis (additional information)
#> 1. Assumed information
#> 1.1. Defined type I error: 0.05
#> 1.2. Defined type II error: 0.2
#> 1.3. Defined power: 0.8
#> 1.4. Presumed effect: 0.025
#> (risks in group 1 and 2 were 9.90061431% (expected) and 12.37576788% respectively; RRR = 0.2)
#> 1.5. Presumed variance: 0.101
#>
#> 2. Metaanalysis
#> 2.1. Setting of the metaanalysis
#> Data were pooled using inverse variance approach in randomeffects model with DL method.
#> 2.2. Result of the metaanalysis
#> Log RR: 0.113 (95% CI: 0.222 to 0.004)
#>
#> 3. Adjustment factor
#> The required information size is calculated with adjustment factor based on diversity (Dsquared). Relevant parameters are listed as follows.
#> 3.1. Heterogeneity (Isquared): 39.6%
#> 3.2. Diversity (Dsquared): 76%
#> 3.3. Adjustement factor: 4.103
Step 3: Visualize sequential analysis
DoSA(Fleiss1993bin,
source = study,
time = year,
r1 = d.asp,
n1 = n.asp,
r2 = d.plac,
n2 = n.plac,
measure = "RR",
PES = 0.1,
RRR = 0.2,
group = c("Aspirin", "Placebo"),
plot = TRUE)
Observed sequential analysis is recommended for those pooled analysis without prespecified parameters for sequential analysis. In this situation, thus, Step 2 should use following syntax:
DoOSA(Fleiss1993bin,
source = study,
time = year,
r1 = d.asp,
n1 = n.asp,
r2 = d.plac,
n2 = n.plac,
measure = "RR",
group = c("Aspirin", "Placebo"))
#> Summary of observed sequential analysis (main information)
#> Acquired sample size: 28003
#> Optimal sample size (heterogeneity adjusted): 36177
#> Cumulative z score: 2.035
#> Alphaspending boundary: 2.228 and 2.228
#> Adjusted confidence interval is suggested to be performed.
#>
#> Adjusted confidence interval based on type I error 0.0129503288310862:
#> 0.252 to 0.025
#>
#> Summary of observed sequential analysis (additional information)
#> 1. Observed information
#> 1.1. Defined type I error: 0.05
#> 1.2. Defined type II error: 0.2
#> 1.3. Defined power: 0.8
#> 1.4. Observed effect size 0.019
#> (risks in group 1 and 2 were 10.47748283% and 12.37576788% respectively; logit transformation with Inverse method for pooling the proportion; RRR = 0.153)
#> 1.5. Observed variance: 0.101
#>
#> 2. Metaanalysis
#> 2.1. Setting of the metaanalysis
#> Data were pooled using inverse variance approach in randomeffects model with DL method.
#> 2.2. Result of the metaanalysis
#> Log RR: 0.113 (95% CI: 0.222 to 0.004)
#>
#> 3. Adjustment factor
#> The optimal information size is calculated with adjustment factor based on diversity (Dsquared). Relevant parameters are listed as follows.
#> 3.1. Heterogeneity (Isquared): 39.6%
#> 3.2. Diversity (Dsquared): 76%
#> 3.3. Adjustment factor: 4.103
Observed sequential analysis could be visualized using the same function in terms of DoOSA()
with argument TRUE
for the parameter plot
. The syntax and graph are shown as follows.
DoOSA(Fleiss1993bin,
source = study,
time = year,
r1 = d.asp,
n1 = n.asp,
r2 = d.plac,
n2 = n.plac,
measure = "RR",
group = c("Aspirin", "Placebo"),
plot = TRUE)
If users would like to show colorful zones of observed sequential analysis, two steps are recommended. Firstly, they need to store the output of function DoOSA()
with argument TRUE
for parameter Plot
, then colorfur zones on the observed sequential analysis can be carried out using function PlotOSA()
with argument TRUE
for parameter lgcZone
.
Step 1: Store observed sequential analysis with argument TRUE
for parameter Plot
< DoOSA(Fleiss1993bin,
output source = study,
time = year,
r1 = d.asp,
n1 = n.asp,
r2 = d.plac,
n2 = n.plac,
measure = "RR",
group = c("Aspirin", "Placebo"),
SAP = TRUE)
Step 2: Show colorful zone on the observed sequential analysis with argument TRUE
for parameter lgcZone
PlotOSA(output,
lgcZone = TRUE)
If users would like to further illustrate power curve of the observed sequential analysis, two steps are recommended. Firstly, they need to store the output of function DoOSA()
with argument TRUE
for parameter SAP
, then plot power curve of the observed sequential analysis using function PlotPower()
.
Step 1: Store output of observed sequential analysis with argument TRUE
for parameter SAP
< DoOSA(Fleiss1993bin,
output source = study,
time = year,
r1 = d.asp,
n1 = n.asp,
r2 = d.plac,
n2 = n.plac,
measure = "RR",
group = c("Aspirin", "Placebo"),
SAP = TRUE)
Step 2: Power curve of observed sequential analysis
PlotPower(output)
Conover, W. J. (1971). Practical Nonparametric Statistics. New York: John Wiley & Sons. Pages 295–301.
Higgins, J. P., & Thompson, S. G. (2002). Quantifying heterogeneity in a meta‐analysis. Statistics in medicine, 21(11), 15391558. https://doi.org/10.1002/sim.1186
Jennison, C., & Turnbull, B. W. (2005). Metaanalyses and adaptive group sequential designs in the clinical development process. Journal of biopharmaceutical statistics, 15(4), 537–558. https://doi.org/10.1081/BIP200062273
Kang, H. (2021). Trial sequential analysis: novel approach for metaanalysis. Anesthesia and Pain Medicine, 16(2), 138150. https://doi.org/10.17085/apm.21038
O’Brien, P. C., & Fleming, T. R. (1979). A multiple testing procedure for clinical trials. Biometrics, 35(3), 549556. https://doi.org/10.2307/2530245
Royston, P. (1982). An extension of Shapiro and Wilk’s WW test for normality to large samples. Applied Statistics, 31, 115–124. doi:10.2307/2347973. https://www.jstor.org/stable/2347973
Thomas, J., Askie, L. M., Berlin, J. A., Elliott, J. H., Ghersi, D., Simmonds, M., Takwoingi, Y., Tierney, J. F., Higgins, J. P. T. (2019). Prospective approaches to accumulating evidence. In Higgins J. P. T., & Green, S., (Eds.), Cochrane Handbook for Systematic Reviews of Interventions. Chichester (UK): John Wiley & Sons. https://training.cochrane.org/handbook/archive/v6/chapter22
Wetterslev, J., Thorlund, K., Brok, J., & Gluud, C. (2008). Trial sequential analysis may establish when firm evidence is reached in cumulative metaanalysis. Journal of clinical epidemiology, 61(1), 6475. https://doi.org/10.1016/j.jclinepi.2007.03.013
Wetterslev, J., Thorlund, K., Brok, J., & Gluud, C. (2009). Estimating required information size by quantifying diversity in randomeffects model metaanalyses. BMC medical research methodology, 9(1), 112. https://doi.org/10.1186/14712288986
Wetterslev, J., Jakobsen, J. C., & Gluud, C. (2017). Trial sequential analysis in systematic reviews with metaanalysis. BMC medical research methodology, 17(1), 118. https://doi.org/10.1186/s1287401703157