polychoric.matrix {EGAnet} | R Documentation |
Computes Polychoric Correlations
Description
A fast implementation of polychoric correlations in C. Uses the Beasley-Springer-Moro algorithm (Boro & Springer, 1977; Moro, 1995) to estimate the inverse univariate normal CDF, the Drezner-Wesolosky approximation (Drezner & Wesolosky, 1990) to estimate the bivariate normal CDF, and Brent's method (Brent, 2013) for optimization of rho
Usage
polychoric.matrix(
data,
na.data = c("pairwise", "listwise"),
empty.method = c("none", "zero", "all"),
empty.value = c("none", "point_five", "one_over"),
...
)
Arguments
data |
Matrix or data frame.
A dataset with all ordinal values
(rows = cases, columns = variables).
Data are required to be between |
na.data |
Character (length = 1).
How should missing data be handled?
Defaults to
|
empty.method |
Character (length = 1). Method for empty cell correction. Available options:
|
empty.value |
Character (length = 1). Value to add to the joint frequency table cells. Accepts numeric values between 0 and 1 or specific methods:
|
... |
Not used but made available for easier argument passing |
Value
Returns a polychoric correlation matrix
Author(s)
Alexander P. Christensen <alexpaulchristensen@gmail.com> with assistance from GPT-4
References
Beasley-Moro-Springer algorithm
Beasley, J. D., & Springer, S. G. (1977).
Algorithm AS 111: The percentage points of the normal distribution.
Journal of the Royal Statistical Society. Series C (Applied Statistics), 26(1), 118-121.
Moro, B. (1995). The full monte. Risk 8 (February), 57-58.
Brent optimization
Brent, R. P. (2013).
Algorithms for minimization without derivatives.
Mineola, NY: Dover Publications, Inc.
Drezner-Wesolowsky bivariate normal approximation
Drezner, Z., & Wesolowsky, G. O. (1990).
On the computation of the bivariate normal integral.
Journal of Statistical Computation and Simulation, 35(1-2), 101-107.
Examples
# Load data (ensure matrix for missing data example)
wmt <- as.matrix(wmt2[,7:24])
# Compute polychoric correlation matrix
correlations <- polychoric.matrix(wmt)
# Randomly assign missing data
wmt[sample(1:length(wmt), 1000)] <- NA
# Compute polychoric correlation matrix
# with pairwise missing
pairwise_correlations <- polychoric.matrix(
wmt, na.data = "pairwise"
)
# Compute polychoric correlation matrix
# with listwise missing
pairwise_correlations <- polychoric.matrix(
wmt, na.data = "listwise"
)