Description Usage Arguments Details Value Author(s) References See Also Examples
Computes the polychoric correlation (and its standard error) between two ordinal variables or from their contingency table, under the assumption that the ordinal variables dissect continuous latent variables that are bivariate normal. Either the maximumlikelihood estimator or a (possibly much) quicker “twostep” approximation is available. For the ML estimator, the estimates of the thresholds and the covariance matrix of the estimates are also available.
polychoric
is a synonym for polychor
.
1 2 3 4 5 
x 
a contingency table of counts or an ordered categorical variable; the latter can be numeric, logical, a factor, an ordered factor, or a character variable, but if a factor, its levels should be in proper order, and the values of a character variable are ordered alphabetically. 
y 
if 
ML 
if 
control 
optional arguments to be passed to the 
std.err 
if 
maxcor 
maximum absolute correlation (to insure numerical stability). 
start 
optional start value(s): if a single number, start value for the correlation; if a list with the elements 
thresholds 
if 
The ML estimator is computed by maximizing the bivariatenormal likelihood with respect to the
thresholds for the two variables (τ^x[i], i = 1,…, r  1;
τ^y[j], j = 1,…, c  1) and
the population correlation (ρ). Here, r and c are respectively the number of levels
of x and y. The likelihood is maximized numerically using the optim
function,
and the covariance matrix of the estimated parameters is based on the numerical Hessian computed by optim
.
The twostep estimator is computed by first estimating the thresholds (τ^x[i], i = 1,…, r  1
and τ^y[j], i = j,…, c  1) separately from the marginal distribution of each variable. Then the
onedimensional likelihood for ρ is maximized numerically, using optim
if standard errors are
requested, or optimise
if they are not. The standard error computed treats the thresholds as fixed.
If std.err
or thresholds
is TRUE
,
returns an object of class "polycor"
with the following components:
type 
set to 
rho 
the polychoric correlation. 
row.cuts 
estimated thresholds for the row variable ( 
col.cuts 
estimated thresholds for the column variable ( 
var 
the estimated variance of the correlation, or, for the ML estimate, the estimated covariance matrix of the correlation and thresholds. 
n 
the number of observations on which the correlation is based. 
chisq 
chisquare test for bivariate normality. 
df 
degrees of freedom for the test of bivariate normality. 
ML 

Othewise, returns the polychoric correlation.
John Fox jfox@mcmaster.ca
Drasgow, F. (1986) Polychoric and polyserial correlations. Pp. 68–74 in S. Kotz and N. Johnson, eds., The Encyclopedia of Statistics, Volume 7. Wiley.
Olsson, U. (1979) Maximum likelihood estimation of the polychoric correlation coefficient. Psychometrika 44, 443460.
hetcor
, polyserial
, print.polycor
,
optim
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  if(require(mvtnorm)){
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
}
if(require(mvtnorm)){
x < cut(x, c(Inf, .75, Inf))
y < cut(y, c(Inf, 1, .5, 1.5, Inf))
polychor(x, y) # 2step estimate
}
if(require(mvtnorm)){
polychoric(x, y, ML=TRUE, std.err=TRUE) # ML estimate
}

Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.