Skip to contents

Computes the Olkin & Siotani (1976) asymptotic variance-covariance matrix for the unique elements of one or more correlation matrices. The resulting matrices can be used as within-study sampling covariance matrices when synthesizing dependent correlations.

Usage

olkin_siotani(data, n, type = c("average", "weighted", "simple"))

Arguments

data

A list of square, symmetric correlation matrices. Each matrix should contain the same variables in the same order. Missing correlations may be coded as NA.

n

Numeric vector of study sample sizes, in the same order as data.

type

Character string specifying how the Olkin and Siotani numerator is computed before division by the study-specific sample sizes. See Details.

Value

A list of variance-covariance matrices with the same length as data. Each matrix corresponds to one study and is scaled by the associated value in n.

Details

For a correlation matrix with p variables, each returned matrix has p * (p - 1) / 2 rows and columns, corresponding to the vector of unique off-diagonal correlations ordered as the pairs returned by utils::combn(p, 2): (1, 2), (1, 3), ..., (p - 1, p). The function returns one variance-covariance matrix per study.

Let R be the correlation matrix used for the numerator, and let r_ab denote the correlation between variables a and b. For two correlations indexed by variable pairs (s, t) and (u, v), the Olkin-Siotani numerator element is

$$ A_{st,uv} = \frac{1}{2} r_{st} r_{uv} \left(r_{su}^2 + r_{sv}^2 + r_{tu}^2 + r_{tv}^2\right) + r_{su} r_{tv} + r_{sv} r_{tu} - r_{st} r_{su} r_{sv} - r_{ts} r_{tu} r_{tv} - r_{us} r_{ut} r_{uv} - r_{vs} r_{vt} r_{vu}. $$

For study i, the returned sampling variance-covariance matrix is A_i / n_i, where A_i is either study-specific or computed from a pooled correlation matrix depending on type.

The type argument controls how the correlation matrix used in the Olkin-Siotani numerator is obtained:

  • average: Averages the correlation matrices element-wise using all available data, computes a single Olkin-Siotani numerator from that average matrix, and divides copies of that numerator by each study's sample size.

  • weighted: Forms a sample-size-weighted average correlation matrix. For each correlation, studies with NA do not contribute to the weighted denominator. A single Olkin-Siotani numerator is computed from the weighted average matrix and divided by each study's sample size.

  • simple: Computes the Olkin-Siotani numerator separately for each study's correlation matrix after replacing missing correlations with zero, then divides each numerator by that study's sample size.

The average and weighted options impose a common correlation structure across studies for the numerator, while simple lets the within-study covariance structure vary by study.

References

Becker, B. J. (1992). Using results from replicated studies to estimate linear models. Journal of Educational Statistics, 17(4), 341-362. Olkin, I. (1976). Asymptotic distribution of functions of a correlation matrix. Essays in provability and statistics: A volume in honor of Professor Junjiro Ogawa.

Examples

R1 <- matrix(c(1, .30, .20,
               .30, 1, .40,
               .20, .40, 1), 3, 3)
R2 <- matrix(c(1, .25, .10,
               .25, 1, .35,
               .10, .35, 1), 3, 3)
olkin_siotani(list(R1, R2), n = c(80, 100), type = "simple")
#> [[1]]
#>            [,1]       [,2]      [,3]
#> [1,] 0.01035125 0.00408375 0.0013425
#> [2,] 0.00408375 0.01152000 0.0026450
#> [3,] 0.00134250 0.00264500 0.0088200
#> 
#> [[2]]
#>              [,1]        [,2]         [,3]
#> [1,] 0.0087890625 0.003145625 0.0004628125
#> [2,] 0.0031456250 0.009801000 0.0020278750
#> [3,] 0.0004628125 0.002027875 0.0077000625
#>