Learn R Programming

polycor (version 0.7-8)

polyserial: Polyserial Correlation

Description

Computes the polyserial correlation (and its standard error) between a quantitative variable and an ordinal variables, based on the assumption that the joint distribution of the quantitative variable and a latent continuous variable underlying the ordinal variable is bivariate normal. Either the maximum-likelihood estimator or a quicker ``two-step'' approximation is available. For the ML estimator the estimates of the thresholds and the covariance matrix of the estimates are also available.

Usage

polyserial(x, y, ML = FALSE, control = list(), std.err = FALSE, maxcor=.9999, bins=4)

Arguments

x
a numerical variable.
y
an ordered categorical variable; can be numeric, logical, a factor, or an ordered factor, but if a factor, its levels should be in proper order.
ML
if TRUE, compute the maximum-likelihood estimate; if FALSE, the default, compute a quicker ``two-step'' approximation.
control
optional arguments to be passed to the optim function.
std.err
if TRUE, return the estimated variance of the correlation (for the two-step estimator) or the estimated covariance matrix of the correlation and thresholds (for the ML estimator); the default is FALSE.
maxcor
maximum absolute correlation (to insure numerical stability).
bins
the number of bins into which to dissect x for a test of bivariate normality; the default is 4.

Value

If std.err is TRUE, returns an object of class "polycor" with the following components:
type
set to "polyserial".
rho
the polyserial correlation.
cuts
estimated thresholds for the ordinal variable (y), for the ML estimator.
var
the estimated variance of the correlation, or, for the ML estimator, \ the estimated covariance matrix of the correlation and thresholds.
n
the number of observations on which the correlation is based.
chisq
chi-square test for bivariate normality.
df
degrees of freedom for the test of bivariate normality.
ML
TRUE for the ML estimate, FALSE for the two-step estimate.
Othewise, returns the polyserial correlation.

References

Drasgow, F. (1986) Polychoric and polyserial correlations. Pp. 68--74 in S. Kotz and N. Johnson, eds., The Encyclopedia of Statistics, Volume 7. Wiley.

See Also

hetcor, polychor, print.polycor, optim

Examples

Run this code
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
y <- cut(y, c(-Inf, -1, .5, 1.5, Inf))
polyserial(x, y)  # 2-step estimate
polyserial(x, y, ML=TRUE, std.err=TRUE) # ML estimate

Run the code above in your browser using DataLab