
Olkin & Siotani variance-covariance matrix
olkin_siotani.RdComputes 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 withNAdo 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
#>