
drmeta implements the DR-Meta model of Hait (2026) — a variance-function random-effects framework that embeds causal design robustness directly into the heterogeneity structure of meta-analysis.
Standard random-effects meta-analysis absorbs design-quality differences into a single constant \(\tau^2\). This allows large-sample but weakly-identified studies to dominate pooled estimates. DR-Meta instead models between-study variance as a monotone-decreasing function of a design robustness index \(\text{DR}_i \in [0,1]\):
\[y_i \sim N\!\bigl(\mu,\; \underbrace{v_i}_{\text{sampling}} + \underbrace{\tau^2(\text{DR}_i;\,\psi)}_{\text{design-dependent}}\bigr)\]
Study weights \(w_i = 1/\sigma_i^2\) therefore automatically down-weight weaker designs — not via ad-hoc quality multipliers, but through a coherent likelihood-based mechanism.
| Condition | DR-Meta reduces to |
|---|---|
| \(\text{DR}_i = c\) (constant) | Classical random-effects (Proposition 1) |
| \(\tau_0^2 = 0\) | Fixed-effects meta-analysis (Proposition 2) |
# Install the development version from GitHub:
devtools::install_github("causalfragility-lab/drmeta")library(drmeta)
# 1. Build the DR index
dr <- dr_from_design(c("RCT", "DiD", "OLS", "IV", "matching"))
# or from continuous sub-scores:
dr <- dr_score(
balance = c(0.9, 0.6, 0.3, 0.8, 0.5),
overlap = c(0.85, 0.7, 0.4, 0.75, 0.6),
design = dr_from_design(c("RCT", "DiD", "OLS", "IV", "matching"))
)
# 2. Fit DR-Meta
fit <- drmeta(yi = my_effects, vi = my_variances, dr = dr)
summary(fit)
# 3. Visualise
dr_forest(fit) # forest plot ordered by DR
dr_plot(fit) # weights vs DR (Lemma 3)
dr_plot_vfun(fit) # estimated variance function
# 4. Diagnostics
dr_heterogeneity(fit) # Q, I², Proposition 6 decomposition
dr_loo(fit) # leave-one-out influence
# 5. Publication bias
dr_pub_bias(fit) # PET / PEESE / Egger with DR-Meta weights
dr_funnel(fit) # funnel plot| Function | Description |
|---|---|
drmeta() |
Fit DR-Meta via profiled REML (core estimation) |
dr_score() |
Build DR index from continuous sub-scores |
dr_from_design() |
Build DR index from design type labels |
dr_weights() |
Compute and inspect DR-Meta weights |
dr_variance() |
Evaluate the fitted variance function |
dr_heterogeneity() |
Cochran’s Q, I², H², Proposition 6 decomposition |
dr_loo() |
Leave-one-out influence diagnostics |
dr_forest() |
Forest plot ordered by DR |
dr_plot() |
Weight vs DR diagnostic plot |
dr_plot_vfun() |
Variance function curve |
dr_pub_bias() |
PET / PEESE / Egger publication bias |
dr_funnel() |
Funnel plot with DR-coloured points |
normalize_01() |
Rescale any vector to [0,1] |
DR-Meta is a special case of the meta-analytic location-scale model (Viechtbauer & Lopez-Lopez, 2022) in which the scale component is explicitly motivated by causal design theory. It is complementary to bias-model frameworks (Turner et al., 2009; Rhodes et al., 2015; Mathur & VanderWeele, 2020), which adjust the mean for confounding while DR-Meta adjusts the variance.