pool_rubin: Pool estimates across imputations with Rubin's Rules

View source: R/bootstrap.R

pool_rubinR Documentation

Pool estimates across imputations with Rubin's Rules

Description

Combines per-imputation point estimates and variances of a scalar quantity into a single pooled estimate with a variance that accounts for both within- and between-imputation uncertainty (Rubin, 1987). Use it to pool estimands computed on each bootstrap/imputation replicate of bootstrap_pals() — for example a regression coefficient from a dyadic model fit on each replicate's PAL distances.

Usage

pool_rubin(estimates, variances, df = FALSE, dfcom = Inf)

Arguments

estimates

Numeric vector of per-imputation point estimates Q_j.

variances

Numeric vector of per-imputation variances U_j (the squared standard errors), the same length as estimates.

df

Logical; if TRUE, also return the Barnard-Rubin adjusted degrees of freedom and a corresponding two-sided p-value for H0: Q = 0. Default FALSE reproduces the source code's normal-based pooling.

dfcom

Complete-data degrees of freedom, used only when df = TRUE (default Inf, the large-sample limit).

Details

With m imputations,

\bar Q = \tfrac1m \sum_j Q_j,\quad \bar U = \tfrac1m \sum_j U_j,\quad B = \tfrac{1}{m-1}\sum_j (Q_j-\bar Q)^2,

and total variance T = \bar U + (1 + 1/m) B. The fraction of missing information is (1 + 1/m)B / T. When df = TRUE, the Barnard-Rubin (1999) small-sample degrees of freedom are used.

Value

A one-row data.frame with the pooled estimate qbar, within-imputation variance ubar, between-imputation variance b, total variance t, standard error se, fraction of missing information fmi, and (if df = TRUE) df and p.value.

References

Rubin, D. B. (1987). Multiple Imputation for Nonresponse in Surveys. Wiley.

Barnard, J. and Rubin, D. B. (1999). Small-sample degrees of freedom with multiple imputation. Biometrika, 86(4), 948-955.

See Also

bootstrap_pals().

Examples

# Five imputations of a coefficient and its variance.
q <- c(1.10, 0.95, 1.20, 1.05, 0.98)
u <- c(0.04, 0.05, 0.045, 0.038, 0.052)
pool_rubin(q, u)
pool_rubin(q, u, df = TRUE, dfcom = 100)


palsr documentation built on July 1, 2026, 5:07 p.m.