| Title: | Design-Robust Meta-Analysis via Variance-Function Models |
|---|---|
| Description: | Implements Design-Robust Meta-Analysis (DR-Meta), a variance-function random-effects framework in which between-study heterogeneity is modelled as a function of a study-level design robustness index, allowing heterogeneity to depend systematically on study quality or design strength rather than being treated as a single nuisance parameter. The package provides profiled restricted maximum likelihood (REML) estimation of the overall effect and variance-function parameters, study-specific weights, heterogeneity diagnostics (tau-squared, I-squared), influence and leave-one-out analysis, and graphical tools including forest plots and influence plots. The DR-Meta framework nests classical fixed-effects and standard random-effects meta-analysis as special cases, making it a strict generalisation of existing approaches. |
| Authors: | Subir Hait [aut, cre] (ORCID: <https://orcid.org/0009-0004-9871-9677>) |
| Maintainer: | Subir Hait <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.1.0 |
| Built: | 2026-06-08 09:21:20 UTC |
| Source: | https://github.com/causalfragility-lab/drmeta |
Fits the DR-Meta variance-function random-effects model (Hait, 2025), where between-study heterogeneity is a monotone-decreasing function of each study's design robustness index.
Maintainer: Subir Hait [email protected] (ORCID)
Useful links:
Report bugs at https://github.com/causalfragility-lab/drmeta/issues
Returns a named numeric vector of the three model parameters:
mu, tau0sq, and gamma.
## S3 method for class 'drmeta' coef(object, ...)## S3 method for class 'drmeta' coef(object, ...)
object |
A fitted |
... |
Ignored. |
A named numeric vector of length 3 with the estimated model
parameters: mu (pooled effect estimate), tau0sq
(baseline between-study variance at DR = 0), and gamma
(variance-function decay rate).
Returns a data frame with the estimate and 95% confidence interval for
the pooled effect .
## S3 method for class 'drmeta' confint(object, parm = NULL, level = 0.95, ...)## S3 method for class 'drmeta' confint(object, parm = NULL, level = 0.95, ...)
object |
A fitted |
parm |
Ignored (only |
level |
Confidence level. Default 0.95. |
... |
Ignored. |
A data frame with one row (mu) and three columns:
estimate (the pooled effect ), lower,
and upper (confidence interval bounds at the requested
level, default 95\
Draws a forest plot for a fitted "drmeta" model using base graphics.
Studies are ordered by design robustness (largest DR at top by default).
Point sizes are proportional to DR-Meta weights; a vertical reference line
and summary diamond are included.
dr_forest( object, order_by = c("dr", "yi", "none"), xlab = "Effect size", main = "DR-Meta Forest Plot", col_point = "#2166AC", col_diamond = "#D6604D", col_dr = "#4DAC26", show_dr = TRUE, xlim = NULL, cex_study = 0.8, ... )dr_forest( object, order_by = c("dr", "yi", "none"), xlab = "Effect size", main = "DR-Meta Forest Plot", col_point = "#2166AC", col_diamond = "#D6604D", col_dr = "#4DAC26", show_dr = TRUE, xlim = NULL, cex_study = 0.8, ... )
object |
A fitted |
order_by |
Character: |
xlab |
X-axis label. Default |
main |
Plot title. |
col_point |
Colour for study-level estimate points. Default |
col_diamond |
Colour for the summary diamond. Default |
col_dr |
Colour for the DR bar on the left. Default |
show_dr |
Logical. If |
xlim |
Numeric vector of length 2 for x-axis limits. If |
cex_study |
Scaling factor for study labels. Default 0.8. |
... |
Further graphical arguments (ignored). |
Invisibly returns the data frame used for plotting (ordered studies).
set.seed(42) k <- 10 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) yi <- rnorm(k, 0.3, sqrt(vi + 0.04 * exp(-2 * dr))) fit <- drmeta(yi, vi, dr) dr_forest(fit)set.seed(42) k <- 10 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) yi <- rnorm(k, 0.3, sqrt(vi + 0.04 * exp(-2 * dr))) fit <- drmeta(yi, vi, dr) dr_forest(fit)
Maps a vector of study design type labels to a numeric design robustness
score in , using a pre-specified hierarchy of causal credibility.
This is a convenient starting point for operationalising the DR index when
only design type is available.
dr_from_design( design, custom_map = NULL, default_score = 0.25, warn_unknown = TRUE )dr_from_design( design, custom_map = NULL, default_score = 0.25, warn_unknown = TRUE )
design |
Character vector of design type labels (case-insensitive). |
custom_map |
Optional named numeric vector to override or add design
types, e.g. |
default_score |
Numeric score assigned to unrecognised design labels. Default is 0.25 (conservative). |
warn_unknown |
Logical. If |
The default hierarchy follows the causal inference literature (Rubin, 2008; Rosenbaum, 2010; Imbens & Rubin, 2015):
| Design type label | Default DR score |
"rct" |
1.00 |
"rd", "rdd" |
0.75 |
"iv" |
0.75 |
"did", "diff_in_diff" |
0.60 |
"matching", "psm" |
0.50 |
"ipw", "propensity" |
0.45 |
"regression", "ols" |
0.25 |
"cross_section" |
0.20 |
"descriptive" |
0.10 |
Users can override or extend this table via the custom_map argument.
A numeric vector of design robustness scores in ,
the same length as design.
designs <- c("RCT", "DiD", "OLS", "IV", "matching", "unknown_design") dr_from_design(designs) # Custom override dr_from_design(designs, custom_map = c(unknown_design = 0.35))designs <- c("RCT", "DiD", "OLS", "IV", "matching", "unknown_design") dr_from_design(designs) # Custom override dr_from_design(designs, custom_map = c(unknown_design = 0.35))
Creates a funnel plot for a fitted "drmeta" model. The horizontal
axis shows effect-size estimates; the vertical axis shows standard errors.
Point sizes are proportional to DR-Meta weights and point colour encodes
design robustness.
dr_funnel( object, contours = TRUE, xlab = "Effect size", ylab = "Standard error", main = "DR-Meta Funnel Plot", col_low = "#D6604D", col_high = "#2166AC" )dr_funnel( object, contours = TRUE, xlab = "Effect size", ylab = "Standard error", main = "DR-Meta Funnel Plot", col_low = "#D6604D", col_high = "#2166AC" )
object |
A fitted |
contours |
Logical. If |
xlab |
X-axis label. |
ylab |
Y-axis label (default: reversed SE axis). |
main |
Plot title. |
col_low |
Colour for low-DR studies. Default |
col_high |
Colour for high-DR studies. Default |
Invisibly returns NULL.
set.seed(42) k <- 15 dr <- runif(k) vi <- runif(k, 0.01, 0.06) yi <- rnorm(k, 0.3, sqrt(vi + 0.04 * exp(-1.5 * dr))) fit <- drmeta(yi, vi, dr) dr_funnel(fit)set.seed(42) k <- 15 dr <- runif(k) vi <- runif(k, 0.01, 0.06) yi <- rnorm(k, 0.3, sqrt(vi + 0.04 * exp(-1.5 * dr))) fit <- drmeta(yi, vi, dr) dr_funnel(fit)
Computes a suite of heterogeneity statistics for a fitted "drmeta"
model, including Cochran's Q (with DR-Meta weights), , ,
the design-residual variance decomposition of Proposition 6 (Hait, 2025),
and per-study contributions to .
dr_heterogeneity(object)dr_heterogeneity(object)
object |
A fitted |
A list with three elements:
summaryA one-row data frame with: k, Q, df, pval,
tau2_mean (mean design-specific heterogeneity), I2, H2.
decompositionA one-row data frame with the Proposition 6
decomposition: tau2_design_explained, tau2_residual,
tau2_total, R2_DR (proportion explained by design).
contributionsA data frame with per-study Q contributions:
study, DR, tau2_i, q_i, pct_Q.
The total between-study heterogeneity can be decomposed as:
where the first term is the design-explained heterogeneity (captured by the variance function) and the second is the design-residual heterogeneity (unexplained by DR). This decomposition is analogous to R-squared in meta-regression.
The design-explained proportion is
Hait, S. (2025). Design-Robust Meta-Analysis: A Variance-Function Framework for Causal Credibility. Proposition 6.
set.seed(42) k <- 15 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) tau2_true <- 0.04 * exp(-2 * dr) yi <- rnorm(k, 0.3, sqrt(vi + tau2_true)) fit <- drmeta(yi, vi, dr) het <- dr_heterogeneity(fit) het$summary het$decomposition het$contributionsset.seed(42) k <- 15 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) tau2_true <- 0.04 * exp(-2 * dr) yi <- rnorm(k, 0.3, sqrt(vi + tau2_true)) fit <- drmeta(yi, vi, dr) het <- dr_heterogeneity(fit) het$summary het$decomposition het$contributions
For each study, re-fits the DR-Meta model after excluding that study and
records how the pooled estimate, confidence interval, variance-function
parameters, and heterogeneity change. Studies with large absolute
or large shifts in /
are considered influential.
dr_loo(object, parallel = FALSE, mc.cores = NULL)dr_loo(object, parallel = FALSE, mc.cores = NULL)
object |
A fitted |
parallel |
Logical. If |
mc.cores |
Integer. Number of cores for parallel execution. Default
is |
A list with:
summaryA data frame with one row per study and columns:
study, DR, est_loo (LOO pooled estimate), ci.lb_loo,
ci.ub_loo, tau0sq_loo, gamma_loo, delta_mu (change in
estimate), delta_tau0sq, delta_gamma, influential (logical:
|delta_mu| > 2 * SE of full model).
fullThe original full-model "drmeta" object.
set.seed(7) k <- 12 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) tau2_true <- 0.04 * exp(-2 * dr) yi <- rnorm(k, 0.3, sqrt(vi + tau2_true)) fit <- drmeta(yi, vi, dr) loo <- dr_loo(fit) loo$summaryset.seed(7) k <- 12 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) tau2_true <- 0.04 * exp(-2 * dr) yi <- rnorm(k, 0.3, sqrt(vi + tau2_true)) fit <- drmeta(yi, vi, dr) loo <- dr_loo(fit) loo$summary
Plots DR-Meta study weights against design robustness (),
illustrating the monotone ordering of Lemma 3 (Hait, 2025). An overlaid
curve shows the theoretical weight function holding sampling variance at
its median value.
dr_plot( object, col_pts = "#2166AC", col_curve = "#D6604D", xlab = expression(paste("Design robustness (", DR[i], ")")), ylab = "DR-Meta weight (normalised, %)", main = "DR-Meta Weight vs Design Robustness", show_labels = TRUE, ... )dr_plot( object, col_pts = "#2166AC", col_curve = "#D6604D", xlab = expression(paste("Design robustness (", DR[i], ")")), ylab = "DR-Meta weight (normalised, %)", main = "DR-Meta Weight vs Design Robustness", show_labels = TRUE, ... )
object |
A fitted |
col_pts |
Colour for individual study points. Default |
col_curve |
Colour for the theoretical weight curve. Default |
xlab |
X-axis label. |
ylab |
Y-axis label. |
main |
Plot title. |
show_labels |
Logical. If |
... |
Additional graphical arguments passed to |
Invisibly returns a data frame with study-level weight information.
set.seed(42) k <- 12 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) yi <- rnorm(k, 0.3, sqrt(vi + 0.04 * exp(-2 * dr))) fit <- drmeta(yi, vi, dr) dr_plot(fit)set.seed(42) k <- 12 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) yi <- rnorm(k, 0.3, sqrt(vi + 0.04 * exp(-2 * dr))) fit <- drmeta(yi, vi, dr) dr_plot(fit)
Plots the fitted variance function
as a curve from DR = 0 to DR = 1, with study-level
overlaid as points.
dr_plot_vfun( object, col_curve = "#D6604D", col_pts = "#2166AC", xlab = expression(paste("Design robustness (", DR[i], ")")), ylab = expression(paste("Between-study variance ", tau^2)), main = "DR-Meta Variance Function" )dr_plot_vfun( object, col_curve = "#D6604D", col_pts = "#2166AC", xlab = expression(paste("Design robustness (", DR[i], ")")), ylab = expression(paste("Between-study variance ", tau^2)), main = "DR-Meta Variance Function" )
object |
A fitted |
col_curve |
Line colour for variance function. Default |
col_pts |
Point colour for study-level |
xlab |
X-axis label. |
ylab |
Y-axis label. |
main |
Plot title. |
Invisibly returns a data frame with the plotting grid.
set.seed(1) fit <- drmeta(rnorm(12, 0.3), runif(12, 0.01, 0.04), runif(12)) dr_plot_vfun(fit)set.seed(1) fit <- drmeta(rnorm(12, 0.3), runif(12, 0.01, 0.04), runif(12)) dr_plot_vfun(fit)
Performs a suite of publication-bias and small-study-effects tests adapted
for DR-Meta weights. PET and PEESE regressions use
as
regression weights, so precision is design-adjusted.
dr_pub_bias(object, test = c("PET", "PEESE", "Egger"), alpha = 0.05)dr_pub_bias(object, test = c("PET", "PEESE", "Egger"), alpha = 0.05)
object |
A fitted |
test |
Character vector of tests to run; any subset of
|
alpha |
Significance level for PET/PEESE intercept test. Default 0.05. |
PET (Precision Effect Test): regresses on , with DR-Meta weights. A significant slope implies small-study
bias; the intercept estimates the publication-bias-corrected effect.
PEESE (Precision Effect Estimate with Standard Error): regresses
on , with DR-Meta weights. Generally preferred when the
true effect is non-zero.
Egger test: Egger-type regression using the standardised effect
on , with DR-Meta weights.
Funnel asymmetry: classic funnel plot with DR-Meta summary.
A list with elements:
PETSummary of PET regression (data frame with intercept, slope, SE, z, p).
PEESESummary of PEESE regression.
EggerSummary of Egger regression.
recommendationCharacter string: use PET intercept if PET slope is significant and effect is small; use PEESE intercept otherwise.
set.seed(99) k <- 20 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.005, 0.08) # Introduce small-study effect: smaller studies overestimate yi <- rnorm(k, 0.3 + 0.5 * sqrt(vi), sqrt(vi + 0.03 * exp(-1.5 * dr))) fit <- drmeta(yi, vi, dr) pb <- dr_pub_bias(fit) pb$PET pb$PEESE pb$recommendationset.seed(99) k <- 20 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.005, 0.08) # Introduce small-study effect: smaller studies overestimate yi <- rnorm(k, 0.3 + 0.5 * sqrt(vi), sqrt(vi + 0.03 * exp(-1.5 * dr))) fit <- drmeta(yi, vi, dr) pb <- dr_pub_bias(fit) pb$PET pb$PEESE pb$recommendation
Computes a scalar design robustness index
for each study by forming a weighted composite of user-supplied sub-scores.
This is the recommended way to operationalise the DR index described in
Section 3.1 of Hait (2025).
dr_score(..., weights = NULL, warn_range = TRUE)dr_score(..., weights = NULL, warn_range = TRUE)
... |
Named numeric vectors, each of length |
weights |
Optional numeric vector of the same length as the number of sub-score arguments, giving the relative importance of each dimension. Defaults to equal weighting. |
warn_range |
Logical. If |
Sub-scores are first clipped to and then combined as a
normalised weighted average:
The result is therefore guaranteed to lie in .
Typical sub-score dimensions for quasi-experimental studies include:
Balance: covariate balance between treatment and control (e.g., standardised mean difference < 0.1 scores 1.0).
Overlap: common-support / propensity-score overlap.
Design: study design type — see dr_from_design.
Transparency: pre-registration, data/code availability.
A numeric vector of length with values in .
The vector carries an attribute "subscores" containing a data frame of
the clipped sub-scores and the final DR index.
k <- 5 balance <- c(0.9, 0.6, 0.4, 0.8, 0.3) overlap <- c(0.8, 0.7, 0.5, 0.9, 0.4) design <- c(1.0, 0.5, 0.5, 0.75, 0.25) # Equal weights dr <- dr_score(balance = balance, overlap = overlap, design = design) dr # Down-weight transparency transp <- c(1, 0, 0, 1, 0) dr_w <- dr_score(balance = balance, overlap = overlap, design = design, transparency = transp, weights = c(2, 2, 3, 1)) dr_wk <- 5 balance <- c(0.9, 0.6, 0.4, 0.8, 0.3) overlap <- c(0.8, 0.7, 0.5, 0.9, 0.4) design <- c(1.0, 0.5, 0.5, 0.75, 0.25) # Equal weights dr <- dr_score(balance = balance, overlap = overlap, design = design) dr # Down-weight transparency transp <- c(1, 0, 0, 1, 0) dr_w <- dr_score(balance = balance, overlap = overlap, design = design, transparency = transp, weights = c(2, 2, 3, 1)) dr_w
Evaluates for a grid of DR values or for
the study-level DR indices from a fitted "drmeta" model.
Useful for visualising how heterogeneity varies with design robustness.
dr_variance(dr, tau0sq = NULL, gamma = NULL, vfun = c("exponential", "linear"))dr_variance(dr, tau0sq = NULL, gamma = NULL, vfun = c("exponential", "linear"))
dr |
Numeric vector of design robustness values in |
tau0sq |
Scalar |
gamma |
Scalar |
vfun |
Variance function: |
A numeric vector of values.
# Evaluate on a grid grid <- seq(0, 1, by = 0.1) tau2 <- dr_variance(grid, tau0sq = 0.04, gamma = 1.5) plot(grid, tau2, type = "l", xlab = "DR", ylab = expression(tau^2)) # Extract from a fitted model set.seed(1) fit <- drmeta(yi = rnorm(10, 0.3), vi = runif(10, 0.01, 0.05), dr = runif(10)) dr_variance(fit)# Evaluate on a grid grid <- seq(0, 1, by = 0.1) tau2 <- dr_variance(grid, tau0sq = 0.04, gamma = 1.5) plot(grid, tau2, type = "l", xlab = "DR", ylab = expression(tau^2)) # Extract from a fitted model set.seed(1) fit <- drmeta(yi = rnorm(10, 0.3), vi = runif(10, 0.01, 0.05), dr = runif(10)) dr_variance(fit)
Returns the DR-Meta inverse-total-variance weights
given estimated variance-function parameters. Optionally normalises weights to sum to 1 or to 100.
dr_weights( vi, dr, tau0sq, gamma, vfun = c("exponential", "linear"), normalise = c("none", "sum1", "pct") )dr_weights( vi, dr, tau0sq, gamma, vfun = c("exponential", "linear"), normalise = c("none", "sum1", "pct") )
vi |
Numeric vector of sampling variances ( |
dr |
Numeric vector of design robustness indices in |
tau0sq |
Non-negative scalar: estimated baseline heterogeneity
|
gamma |
Non-negative scalar: estimated variance-function slope
|
vfun |
Variance function: |
normalise |
Character: |
This function is primarily a utility for diagnostics and visualisation;
weights are also returned as part of the "drmeta" object produced by
drmeta.
A numeric vector of weights, the same length as vi.
vi <- c(0.02, 0.03, 0.015, 0.025, 0.01) dr <- c(0.9, 0.4, 0.7, 0.2, 1.0) dr_weights(vi, dr, tau0sq = 0.04, gamma = 1.5) dr_weights(vi, dr, tau0sq = 0.04, gamma = 1.5, normalise = "pct")vi <- c(0.02, 0.03, 0.015, 0.025, 0.01) dr <- c(0.9, 0.4, 0.7, 0.2, 1.0) dr_weights(vi, dr, tau0sq = 0.04, gamma = 1.5) dr_weights(vi, dr, tau0sq = 0.04, gamma = 1.5, normalise = "pct")
Fits a random-effects meta-analysis model in which between-study
heterogeneity is a monotone-decreasing function of each study's design
robustness index . Studies with higher design
robustness receive less heterogeneity weight, implementing Proposition 1 of
Hait (2025).
drmeta( yi, vi, dr = NULL, vfun = c("exponential", "linear"), method = c("REML", "ML"), slab = NULL, control = list() )drmeta( yi, vi, dr = NULL, vfun = c("exponential", "linear"), method = c("REML", "ML"), slab = NULL, control = list() )
yi |
Numeric vector of |
vi |
Numeric vector of |
dr |
Numeric vector of |
vfun |
Variance function: |
method |
Estimation method: |
slab |
Optional character vector of study labels. |
control |
List of control arguments passed to |
An object of class "drmeta" (a named list). Key components:
mu (pooled estimate), se, ci.lb, ci.ub,
zval, pval, tau0sq, gamma, tau2_i,
sigma2_i, weights, loglik, reml_loglik,
AIC, BIC, k, yi, vi, dr,
slab, vfun, method, converged,
optim_out, call.
Hait, S. (2025). Design-Robust Meta-Analysis: A Variance-Function Framework for Causal Credibility.
dr_heterogeneity, dr_loo,
dr_pub_bias, dr_forest,
dr_score, dr_from_design
set.seed(42) k <- 20 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) tau2_true <- 0.04 * exp(-2 * dr) yi <- rnorm(k, 0.3, sqrt(vi + tau2_true)) fit <- drmeta(yi, vi, dr) print(fit) summary(fit)set.seed(42) k <- 20 dr <- runif(k, 0.1, 0.9) vi <- runif(k, 0.01, 0.05) tau2_true <- 0.04 * exp(-2 * dr) yi <- rnorm(k, 0.3, sqrt(vi + tau2_true)) fit <- drmeta(yi, vi, dr) print(fit) summary(fit)
Returns a vector of length where every element equals the pooled
estimate (the model has a single intercept, so all fitted
values are identical).
## S3 method for class 'drmeta' fitted(object, ...)## S3 method for class 'drmeta' fitted(object, ...)
object |
A fitted |
... |
Ignored. |
A numeric vector of length where every element equals
the pooled estimate . Because DR-Meta has a single
intercept, all studies share the same fitted value.
Log-Likelihood for a drmeta Object
## S3 method for class 'drmeta' logLik(object, REML = FALSE, ...)## S3 method for class 'drmeta' logLik(object, REML = FALSE, ...)
object |
A fitted |
REML |
Logical. If |
... |
Ignored. |
An object of class "logLik". The numeric value is the
maximised log-likelihood (ML or REML, depending on REML).
The object carries two attributes: df (number of parameters,
always 3: mu, tau0sq, gamma) and nobs
(number of studies ).
IntervalLinearly rescales a numeric vector to the interval. Useful for
standardising individual sub-score components before aggregation with
dr_score.
normalize_01(x)normalize_01(x)
x |
A numeric vector. |
A numeric vector rescaled to . If all non-missing
values are equal, returns a zero vector (to avoid division by zero).
normalize_01(c(2, 5, 8)) # returns c(0, 0.5, 1) normalize_01(c(1, 1, 1)) # returns c(0, 0, 0)normalize_01(c(2, 5, 8)) # returns c(0, 0.5, 1) normalize_01(c(1, 1, 1)) # returns c(0, 0, 0)
Print Method for drmeta Objects
## S3 method for class 'drmeta' print(x, digits = 4, ...)## S3 method for class 'drmeta' print(x, digits = 4, ...)
x |
A fitted |
digits |
Number of significant digits. Default 4. |
... |
Ignored. |
Invisibly returns the original drmeta object x,
unchanged. This function is called for its side effect of printing a
formatted summary of the fitted DR-Meta model to the console.
Residuals for a drmeta Object
## S3 method for class 'drmeta' residuals(object, type = c("raw", "standardised"), ...)## S3 method for class 'drmeta' residuals(object, type = c("raw", "standardised"), ...)
object |
A fitted |
type |
|
... |
Ignored. |
A numeric vector of length of residuals. When
type = "raw" (default), returns observed minus fitted values
(). When type = "standardised", each
residual is divided by (the square root
of the total study variance under the fitted model).
Summary Method for drmeta Objects
## S3 method for class 'drmeta' summary(object, digits = 4, ...)## S3 method for class 'drmeta' summary(object, digits = 4, ...)
object |
A fitted |
digits |
Number of significant digits. Default 4. |
... |
Ignored. |
Invisibly returns the fitted drmeta object object,
unchanged. Called for its side effect of printing a detailed formatted
summary — including the pooled estimate, confidence interval, z-test,
variance-function parameters, and model fit statistics — to the console.