Presentation: metacart 3.0 — Accessible transcript of slides. July 2026.

Slide 1 / 13

metacart 3.0

Classification and Regression Trees for
Exploratory Moderator Analysis in Meta-Analysis

Juan Claramunt Gonzalez, Xinru Li, Elise Dusseldorp, Xiaogang Su, and Jacqueline Meulman

Universiteit Leiden
The Netherlands
The University of Texas
at El Paso

July 2026

Slide 2 / 13

Why CART in Meta-analysis

Slide 3 / 13

Recent innovations (overview 1 of 4)

Problems

  1. The split may be based on a local optimum.

Solutions

  1. Splitting using look-ahead.

Slide 4 / 13

Tree construction, convergence and stability — look-ahead splitting

The look-ahead approach finds the best split scenario by considering multiple splits across different layers and maximizing Q*B, the between-subgroups heterogeneity.

Example R code

REtree_lookahead <- REmrt(form_Levine, vi = vi, c.pruning = 0,
                           data = SpermCon, lookahead = TRUE)
Figure: Look-ahead split comparison. Two decision tree diagrams are shown side by side, illustrating two possible split scenarios considered by the look-ahead algorithm.

Left tree (Scenario A): The root node contains all N studies. It splits on predictor Xi at threshold s1 into a left child (Xi ≤ s1) and a right child (Xi > s1). The left child splits further on Xi at threshold s2 into two terminal leaf nodes: one for Xi ≤ s2 and one for Xi > s2. The right child from the root is itself a terminal node.

Right tree (Scenario B): The same root node splits on Xi at s1 in the same way. Here the right child (Xi > s1) is further split at threshold s2 into two terminal leaf nodes. The left child from the root is now the terminal node.

The look-ahead algorithm evaluates both scenarios and selects the one that maximizes the between-subgroups heterogeneity Q*B. Terminal (leaf) nodes are shown as rectangles; internal nodes are shown as ovals.

Slide 5 / 13

Recent innovations (overview 2 of 4)

Problems

  1. The split may be based on a local optimum.
  2. The algorithm might favor continuous study characteristics over categorical ones.

Solutions

  1. Splitting using look-ahead.
  2. Use smooth sigmoid surrogate (SSS) strategy.

Slide 6 / 13

Tree construction, convergence and stability — smooth sigmoid surrogate

The smooth sigmoid surrogate (SSS) strategy transforms the discrete step functions used in tree splits into smooth spline functions (logistic/sigmoid curves) that closely approximate those step functions. This addresses the bias toward continuous variables.

Example R code

REtree_sss <- REmrt(form_Levine, vi = vi, c.pruning = 0,
                     data = SpermCon, sss = TRUE)
Figure: Sigmoid surrogate functions for different sharpness parameters. A line plot with the x-axis ranging from −1.0 to 1.0 and the y-axis (labeled expit(ax)) ranging from 0.0 to 1.0. Five sigmoid curves are overlaid, each corresponding to a different value of the sharpness parameter a:
  • a = 5 — the gentlest, widest S-curve (red).
  • a = 10 — moderately steep (green).
  • a = 20 — steeper (blue).
  • a = 30 — very steep (violet/magenta).
  • a = 50 — nearly a vertical step function, the sharpest curve (pink/light).
All curves pass through the point (0, 0.5). As a increases, the sigmoid approaches a Heaviside step function centered at 0, which is the limit used in standard decision tree splits. This approximation allows gradient-based optimization to be applied during tree construction.

Slide 7 / 13

Recent innovations (overview 3 of 4)

Problems

  1. The split may be based on a local optimum.
  2. The algorithm might favor continuous study characteristics over categorical ones.
  3. Subgroups are identified and tested using the same data.

Solutions

  1. Splitting using look-ahead.
  2. Use smooth sigmoid surrogate (SSS) strategy.
  3. Permutation test of Q*B.

Slide 8 / 13

Permutation procedure

Q*B obtained via permutation is used to determine the statistical significance of the between-subgroups heterogeneity. This avoids the circular problem of using the same data to both identify and test subgroups.

Example R code

set.seed(111)
REtree_perm <- REmrt(form_Levine, vi = vi, c.pruning = 0, data = SpermCon,
                      lookahead = TRUE, sss = TRUE, perm = TRUE)
summary(REtree_perm)

Output

Test for Between-Subgroups Heterogeneity under RE assumption: Qb = 61.371 (df = 2), Permutation p-value 0.001996; The estimate without bootstrap for the residual heterogeneity tau2 = 227.914

The permutation test yields a statistically significant result: Qb = 61.371 on 2 degrees of freedom, with a permutation p-value of 0.001996, indicating significant between-subgroups heterogeneity.

Random Effects Meta-analysis Results (without Bootstrap)

Random Effects Meta-analysis Results without Bootstrap
K (subgroup node) est se zval pval ci.lb ci.ub Significance
2 (K = 69) 76.530 2.021 37.875 0.000 72.570 80.490 ***
4 (K = 87) 90.627 1.900 47.701 0.000 86.904 94.351 ***
5 (K = 88) 70.764 1.739 40.700 0.000 67.357 74.172 ***

*** indicates p < 0.001. K = number of studies in each subgroup node.

Slide 9 / 13

Recent innovations (overview 4 of 4)

Problems

  1. The split may be based on a local optimum.
  2. The algorithm might favor continuous study characteristics over categorical ones.
  3. Subgroups are identified and tested using the same data.
  4. Confidence intervals of summary effect sizes in subgroups are too optimistic.

Solutions

  1. Splitting using look-ahead.
  2. Use smooth sigmoid surrogate (SSS) strategy.
  3. Permutation test of Q*B.
  4. Bootstrap-based confidence intervals.

Slide 10 / 13

Bias correction bootstrap procedure

A new bootstrap procedure reduces bias in the confidence interval estimates for subgroup effect sizes. The bootstrap CIs are compared with the non-bootstrap CIs to illustrate the correction.

Example R code

set.seed(111)
Results_boot <- BootCI(REplustree, nboot = 50)
summary(Results_boot)

Random Effects Meta-analysis Results with Bootstrap

Random Effects Meta-analysis Results with Bootstrap
K (subgroup node) est se ci.lb ci.ub
2 (K = 69) 77.378 2.635 72.213 82.542
4 (K = 87) 91.154 2.435 86.381 95.926
5 (K = 88) 71.029 2.290 66.540 75.519

Comparison: Results without Bootstrap

Random Effects Meta-analysis Results without Bootstrap (for comparison)
K (subgroup node) est se zval pval ci.lb ci.ub Significance
2 (K = 69) 76.530 2.021 37.875 0.000 72.570 80.490 ***
4 (K = 87) 90.627 1.900 47.701 0.000 86.904 94.351 ***
5 (K = 88) 70.764 1.739 40.700 0.000 67.357 74.172 ***

The bootstrap procedure widens the confidence intervals, correcting for the optimism in the unadjusted CIs. For example, subgroup 2 CI widens from [72.570, 80.490] to [72.213, 82.542].

Slide 11 / 13

Visualization of tree stability (node frequency)

Cross-validation is used to check how often each node appears across repeated tree-building runs, providing a measure of tree stability.

Example R code

PLOT_PV <- plotPV(REtree, iter = 100, c.pruning = 0)
Figure: Decision tree with node frequency shading (all nodes). A decision tree is displayed. Node fill color indicates the frequency with which each node appeared across 10 cross-validation iterations (scale: 0–20 = lightest, 21–40, 41–60, 61–80, 81–100 = darkest).

Tree structure:
  • Root node (oval): K = 106 studies. Splits on predictor T1 = 0.
    • Left branch (Yes, T1 = 0): Terminal leaf node, K = 69 studies. This node appears in the 81–100 frequency range (darkest blue fill), indicating it is very stable.
    • Right branch (No, T1 ≠ 0): Internal node, K = 37 studies. Splits on T4 = 0.
      • Left branch (Yes, T4 = 0): Internal node, K = 15 studies. Splits on T2 = 0.
        • Left branch (Yes): Terminal leaf, K = 5 studies.
        • Right branch (No): Terminal leaf, K = 10 studies.
      • Right branch (No, T4 ≠ 0): Internal node, K = 22 studies. Splits on T2 = 0.
        • Left branch (Yes): Terminal leaf, K = 5 studies.
        • Right branch (No): Internal node, K = 17 studies. Splits on T25 = 0.
          • Left branch (Yes): Terminal leaf, K = 13 studies.
          • Right branch (No): Terminal leaf, K = 4 studies.
The legend on the right shows node frequency ranges mapped to fill shading from dark (81–100) to light (0–20).

Slide 12 / 13

Visualization of tree stability (terminal node frequency)

The same tree is displayed again, but the shading now reflects the terminal node frequency — how often each leaf node (rather than any node) was selected as a terminal node across the cross-validation runs.

Figure: Decision tree with terminal node frequency shading. The tree structure is identical to the previous slide (slide 11): a six-leaf tree with the root at K = 106, splitting on T1 = 0.

In this version, the fill color encodes terminal node frequency — how often each node ended up as a terminal (leaf) node across iterations (scale: 0–20 = lightest, 81–100 = darkest).
  • The left child of the root (K = 69, T1 = 0) is filled darkest (81–100), confirming it is very frequently a terminal node — the most stable leaf.
  • Internal nodes and less-stable terminal nodes appear in lighter shades, indicating they were less consistently terminal across cross-validation runs.
The legend is labeled "Terminal Node Frequency" with the same five-level color scale as the previous figure.

Slide 13 / 13

MetaCART — Closing slide

Thank you for your attention!

The metacart R package is available on CRAN:
https://cran.r-project.org/package=metacart

QR code linking to the metacart package page on CRAN: https://cran.r-project.org/package=metacart. Scan with a mobile device to open the package page directly.