Learn R Programming

rms (version 8.2-1)

plot.xmean.ordinaly: Plot Mean X vs. Ordinal Y

Description

Separately for each predictor variable \(X\) in a formula, plots the mean of \(X\) vs. levels of \(Y\). Then under the proportional odds assumption, the expected value of the predictor for each \(Y\) value is also plotted (as a dotted line). This plot is useful for assessing the ordinality assumption for \(Y\) separately for each \(X\), and for assessing the proportional odds assumption in a simple univariable way. If several predictors do not distinguish adjacent categories of \(Y\), those levels may need to be pooled. This display assumes that each predictor is linearly related to the log odds of each event in the proportional odds model. There is also an option to plot the expected means assuming a forward continuation ratio model.

Usage

# S3 method for xmean.ordinaly
plot(x, data, subset, na.action, subn=TRUE,
                    cr=FALSE, topcats=1, cex.points=.75, ...)

Arguments

References

Harrell FE et al. (1998): Development of a clinical prediction model for an ordinal outcome. Stat in Med 17:909--44.

See Also

lrm, residuals.lrm, cr.setup, summary.formula, biVar.

Examples

Run this code
# Simulate data from a population proportional odds model
set.seed(1)
n <- 400
age <- rnorm(n, 50, 10)
blood.pressure <- rnorm(n, 120, 15)
region <- factor(sample(c('north','south','east','west'), n, replace=TRUE))
L <- .2*(age-50) + .1*(blood.pressure-120)
p12 <- plogis(L)    # Pr(Y>=1)
p2  <- plogis(L-1)  # Pr(Y=2)
p   <- cbind(1-p12, p12-p2, p2)   # individual class probabilites
# Cumulative probabilities:
cp  <- matrix(cumsum(t(p)) - rep(0:(n-1), rep(3,n)), byrow=TRUE, ncol=3)
y   <- (cp < runif(n)) %*% rep(1,3)
# Thanks to Dave Krantz  for this trick

par(mfrow=c(2,2))
plot.xmean.ordinaly(y ~ age + blood.pressure + region, cr=TRUE, topcats=2)
par(mfrow=c(1,1))
# Note that for unimportant predictors we don't care very much about the
# shapes of these plots.  Use the Hmisc chiSquare function to compute
# Pearson chi-square statistics to rank the variables by unadjusted
# importance without assuming any ordering of the response:
chiSquare(y ~ age + blood.pressure + region, g=3)
chiSquare(y ~ age + blood.pressure + region, g=5)

Run the code above in your browser using DataLab