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
Meta-analysis: summarizes results reported in multiple studies on the same topic and analyzes which predictors have an effect.
Common approach: Meta-regression.
Statistical problem: A linear model is sometimes not suitable, or interaction effects are ignored.
Solution: Use a tree algorithm — MetaCART.
Slide 3 / 13
Recent innovations (overview 1 of 4)
Problems
The split may be based on a local optimum.
Solutions
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
The split may be based on a local optimum.
The algorithm might favor continuous study characteristics over categorical ones.
Solutions
Splitting using look-ahead.
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
The split may be based on a local optimum.
The algorithm might favor continuous study characteristics over categorical ones.
Subgroups are identified and tested using the same data.
Solutions
Splitting using look-ahead.
Use smooth sigmoid surrogate (SSS) strategy.
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.
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
The split may be based on a local optimum.
The algorithm might favor continuous study characteristics over categorical ones.
Subgroups are identified and tested using the same data.
Confidence intervals of summary effect sizes in subgroups are too optimistic.
Solutions
Splitting using look-ahead.
Use smooth sigmoid surrogate (SSS) strategy.
Permutation test of Q*B.
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.
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.