knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )

The `smd`

package provides the `smd`

method to compute standardized mean differences between two groups for continuous values (`numeric`

and `integer`

data types) and categorical values (`factor`

, `character`

, and `logical`

). The method also works on `matrix`

, `list`

, and `data.frame`

data types by applying `smd()`

over the columns of the `matrix`

or `data.frame`

and each item of the `list`

. The package is based on @yang2012unified.

The `smd`

function computes the standardized mean difference for each level $k$ of a grouping variable compared to a reference $r$ level:

[
d_k = \sqrt{(\bar{x}*r - \bar{x}*{k})^{\intercal}S_{rk}^{-1}(\bar{x}*r - \bar{x}*{k})}
]

where $\bar{x}*{\cdot}$ and $S*{rk}$ are the sample mean and covariances for reference group $r$ and group $k$, respectively. In the case that $x$ is categorical, $\bar{x}$ is the vector of proportions of each category level within a group, and $S_{rk}$ is the multinomial covariance matrix.

Standard errors are computed using the formula described in @hedges1985:

[ \sqrt{ \frac{n_r + n_k}{n_rn_k} + \frac{d_k^2}{2(n_r + n_k)} } ]

```
library(smd)
```

set.seed(123) xn <- rnorm(90) gg2 <- rep(LETTERS[1:2], each = 45) gg3 <- rep(LETTERS[1:3], each = 30) smd(x = xn, g = gg2) smd(x = xn, g = gg3) smd(x = xn, g = gg2, std.error = TRUE) smd(x = xn, g = gg3, std.error = TRUE)

xi <- sample(1:20, 90, replace = TRUE) smd(x = xi, g = gg2)

xc <- unlist(replicate(2, sort(sample(letters[1:3], 45, replace = TRUE)), simplify = FALSE)) smd(x = xc, g = gg2)

xf <- factor(xc) smd(x = xf, g = gg2)

xl <- as.logical(rbinom(90, 1, prob = 0.5)) smd(x = xl, g = gg2)

mm <- cbind(xl, xl, xl, xl) smd(x = mm, g = gg3, std.error = FALSE)

ll <- list(xn = xn, xi = xi, xf = xf, xl = xl) smd(x = ll, g = gg3)

df <- data.frame(xn, xi, xc, xf, xl) smd(x = df, g = gg3)

`smd`

with `dplyr`

library(dplyr, verbose = FALSE) df$g <- gg2 df %>% summarize_at( .vars = vars(dplyr::matches("^x")), .funs = list(smd = ~ smd(., g = g)$estimate))

See:

**Any scripts or data that you put into this service are public.**

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.