README.md

polycor

The polycor package computes polychoric and polyserial correlations by quick “two-step” methods or ML, optionally with standard errors; tetrachoric and biserial correlations are special cases.

It was originally written by Prof. John Fox, who passed away in November, 2025. I (Duncan Murdoch) have taken over as maintainer in order to keep the package available as R evolves.

Please submit bug reports as Github issues at https://github.com/dmurdoch/polycor/issues.

Installation

You can install polycor from CRAN using:

install.packages("polycor")

You can install the development version of polycor from GitHub with:

# install.packages("pak")
pak::pak("dmurdoch/polycor")

Example

library(mvtnorm)
library(polycor)

set.seed(12345)
data <- rmvnorm(1000, c(0, 0), matrix(c(1, .5, .5, 1), 2, 2))
x <- data[,1]
y <- data[,2]
cor(x, y)  # sample correlation
#> [1] 0.5263698

x <- cut(x, c(-Inf, .75, Inf))
y <- cut(y, c(-Inf, -1, .5, 1.5, Inf))
polychor(x, y)  # 2-step estimate
#> [1] 0.5230474
polychor(x, y, ML=TRUE, std.err=TRUE)  # ML estimate
#> 
#> Polychoric Correlation, ML est. = 0.5231 (0.03819)
#> Test of bivariate normality: Chisquare = 2.739, df = 2, p = 0.2543
#> 
#>   Row Threshold
#>   Threshold Std.Err.
#>      0.7537  0.04403
#> 
#> 
#>   Column Thresholds
#>   Threshold Std.Err.
#> 1   -0.9842  0.04746
#> 2    0.4841  0.04127
#> 3    1.5010  0.06118


Try the polycor package in your browser

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

polycor documentation built on Dec. 14, 2025, 9:06 a.m.