Computes the standardized mean differnce (SMD) between two groups.

$$ d = \sqrt{D' S^{-1} D} $$

where \(D\) is a vector of differences between group 1 and 2 and \(S\) is the covariance matrix of these differences. If \(D\) is length 1, the result is multplied by \(sign(D)\).

In the case of a numeric or integer variable, this is equivalent to:

$$ d = \frac{\bar{x}_1 - \bar{x}_2}{\sqrt{(s^2_1 + s^2_2)/2}} $$ where \(\bar{x}_g\) is the sample mean for group \(g\) and \(s^2_g\) is the sample variance.

For a logical or factor with only two levels, the equation above is \(\bar{x}_g = \hat{p}_g\), i.e. the sample proportion and \(s^2_g = \hat{p}_g(1 - \hat{p}_g)\).

smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for character,ANY,missing
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for character,ANY,numeric
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for logical,ANY,missing
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for logical,ANY,numeric
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for matrix,ANY,missing
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for matrix,ANY,numeric
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for list,ANY,missing
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for list,ANY,numeric
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for data.frame,ANY,missing
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

# S4 method for data.frame,ANY,numeric
smd(x, g, w, std.error = FALSE, na.rm = FALSE, gref = 1L)

Arguments

x

a vector or matrix of values

g

a vector of at least 2 groups to compare. This should coercable to a factor.

w

a vector of numeric weights (optional)

std.error

Logical indicator for computing standard errors using compute_smd_var. Defaults to FALSE.

na.rm

Remove NA values from x? Defaults to FALSE.

gref

an integer indicating which level of g to use as the reference group. Defaults to 1.

Value

a data.frame containing standardized mean differences between levels of g for values of x. The data.frame contains the columns:

  • term: the level being comparing to the reference level

  • estimate: SMD estimates

  • std.error: (if std.error = TRUE) SMD standard error estimates

Examples

x <- rnorm(100)
g <- rep(1:2, each = 50)
smd(x, g)
#>   term     estimate
#> 1    2 -0.008826622