Skip to contents

For continuous X: SMD = (mean_t - mean_c) / sqrt((s2_t + s2_c)/2) For binary X: SMD = (p_t - p_c) / sqrt((p_t(1-p_t) + p_c(1-p_c))/2) Returned as percent. |SMD| > 10 is the Austin (2009) imbalance threshold.

Usage

mrm_standardised_difference(data, treatment_col, covariates)

Arguments

data

data.frame.

treatment_col

Binary 0/1 treatment column name.

covariates

Character vector of covariate columns.

Value

data.frame with covariate, mean_treated, mean_control, pooled_sd, smd_pct, imbalanced columns.

Examples

set.seed(2026)
n <- 200L
df <- data.frame(
  D   = rbinom(n, 1, 0.4),
  age = rnorm(n, 50, 10),
  bmi = rnorm(n, 27, 4)
)
df$age[df$D == 1] <- df$age[df$D == 1] + 3 # deliberate imbalance
mrm_standardised_difference(df,
  treatment_col = "D",
  covariates = c("age", "bmi")
)
#>   covariate mean_treated mean_control pooled_sd smd_pct imbalanced
#> 1       age      54.9585      50.6901    9.0353   47.24       TRUE
#> 2       bmi      27.2731      27.0571    4.5032    4.80      FALSE