polyserial {polycor} | R Documentation |
Polyserial Correlation
Description
Computes the polyserial correlation (and its standard error) between a quantitative variable and an ordinal variable, 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, start, thresholds=FALSE)
Arguments
x |
a numerical variable. |
y |
an ordered categorical variable; can be numeric, logical, a factor, an ordered factor, or a character variables, but if a factor, its levels should be in proper order, and the values of a character variable are ordered alphabetically. |
ML |
if |
control |
optional arguments to be passed to the |
std.err |
if |
maxcor |
maximum absolute correlation (to insure numerical stability). |
bins |
the number of bins into which to dissect |
start |
optional start value(s): if a single number, start value for the correlation; if a list with the elements |
thresholds |
if |
Details
The ML estimator is computed by maximizing the bivariate-normal likelihood with respect to the
thresholds for (
) and
the population correlation (
). 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 two-step estimator is computed by first estimating the thresholds
()
from the marginal distribution of
. Then if the standard error of
is requested, the
one-dimensional likelihood for
is maximized numerically, using
optim
if standard errors are
requested; the standard error computed treats the thresholds as fixed. If the standard error isn't request,
is computed directly.
Value
If std.err
or thresholds
is TRUE
,
returns an object of class "polycor"
with the following components:
type |
set to |
rho |
the polyserial correlation. |
cuts |
estimated thresholds for the ordinal variable ( |
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 |
|
Othewise, returns the polyserial correlation.
Author(s)
John Fox jfox@mcmaster.ca
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
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)){
y <- cut(y, c(-Inf, -1, .5, 1.5, Inf))
polyserial(x, y) # 2-step estimate
}
if(require(mvtnorm)){
polyserial(x, y, ML=TRUE, std.err=TRUE) # ML estimate
}