Learn R Programming

rms (version 6.9-0)

predict.lrm: Predicted Values for Binary and Ordinal Logistic Models

Description

Computes a variety of types of predicted values for fits from lrm and orm, either from the original dataset or for new observations. The Mean.lrm and Mean.orm functions produce an R function to compute the predicted mean of a numeric ordered response variable given the linear predictor, which is assumed to use the first intercept when it was computed. The returned function has two optional arguments if confidence intervals are desired: conf.int and the design matrix X. When this derived function is called with nonzero conf.int, an attribute named limits is attached to the estimated mean. This is a list with elements lower and upper containing normal approximations for confidence limits using the delta method.

Usage

# S3 method for lrm
predict(object, ..., type=c("lp", "fitted",
            "fitted.ind", "mean", "x", "data.frame",
            "terms", "cterms", "ccterms", "adjto","adjto.data.frame", 
            "model.frame"), se.fit=FALSE, codes=FALSE)
# S3 method for orm
predict(object, ..., type=c("lp", "fitted",
            "fitted.ind", "mean", "x", "data.frame",
            "terms", "cterms", "ccterms", "adjto","adjto.data.frame", 
            "model.frame"), se.fit=FALSE, codes=FALSE)

# S3 method for lrm Mean(object, codes=FALSE, ...) # S3 method for orm Mean(object, codes=FALSE, ...)

Value

a vector (type="lp" with se.fit=FALSE, or type="mean" or only one observation being predicted), a list (with elements linear.predictors

and se.fit if se.fit=TRUE), a matrix (type="fitted"

or type="fitted.ind"), a data frame, or a design matrix. For Mean.lrm and Mean.orm, the result is an R function.

Arguments

object

a object created by lrm or orm

...

arguments passed to predictrms, such as kint and newdata (which is used if you are predicting out of data). See predictrms to see how NAs are handled. Ignored for other functions.

type

See predict.rms for "x", "data.frame", "terms", "cterms", "ccterms", "adjto", "adjto.data.frame" and "model.frame". type="lp" is used to get linear predictors (using the first intercept by default; specify kint to use others). type="fitted" is used to get all the probabilities \(Y\geq j\). type="fitted.ind" gets all the individual probabilities \(Y=j\) (not recommended for orm fits). For an ordinal response variable, type="mean" computes the estimated mean \(Y\) by summing values of \(Y\) multiplied by the estimated \(Prob(Y=j)\). If \(Y\) was a character or factor object, the levels are the character values or factor levels, so these must be translatable to numeric, unless codes=TRUE. See the Hannah and Quigley reference below for the method of estimating (and presenting) the mean score. If you specify type="fitted","fitted.ind","mean" you may not specify kint.

se.fit

applies only to type="lp", to get standard errors.

codes

if TRUE, type="mean", Mean.lrm, and Mean.orm use the integer codes \(1,2,\ldots,k\) for the \(k\)-level response in computing the predicted mean response.

Author

Frank Harrell
Department of Biostatistics
Vanderbilt University
fh@fharrell.com
For the Quantile function:
Qi Liu and Shengxin Tu
Department of Biostatistics, Vanderbilt University

References

Hannah M, Quigley P: Presentation of ordinal regression analysis on the original scale. Biometrics 52:771--5; 1996.

See Also

lrm, orm, predict.rms, naresid, contrast.rms

Examples

Run this code
# See help for predict.rms for several binary logistic
# regression examples


# Examples of predictions from ordinal models
set.seed(1)
y <- factor(sample(1:3, 400, TRUE), 1:3, c('good','better','best'))
x1 <- runif(400)
x2 <- runif(400)
f <- lrm(y ~ rcs(x1,4)*x2, x=TRUE)     #x=TRUE needed for se.fit
# Get 0.95 confidence limits for Prob[better or best]
L <- predict(f, se.fit=TRUE)           #omitted kint= so use 1st intercept
plogis(with(L, linear.predictors + 1.96*cbind(-se.fit,se.fit)))
predict(f, type="fitted.ind")[1:10,]   #gets Prob(better) and all others
d <- data.frame(x1=c(.1,.5),x2=c(.5,.15))
predict(f, d, type="fitted")        # Prob(Y>=j) for new observation
predict(f, d, type="fitted.ind")    # Prob(Y=j)
predict(f, d, type='mean', codes=TRUE) # predicts mean(y) using codes 1,2,3
m <- Mean(f, codes=TRUE)
lp <- predict(f, d)
m(lp)
# Can use function m as an argument to Predict or nomogram to
# get predicted means instead of log odds or probabilities
dd <- datadist(x1,x2); options(datadist='dd')
m
plot(Predict(f, x1, fun=m), ylab='Predicted Mean')
# Note: Run f through bootcov with coef.reps=TRUE to get proper confidence
# limits for predicted means from the prop. odds model
options(datadist=NULL)

Run the code above in your browser using DataLab