R: Predicted Values for Binary and Ordinal Logistic Models

predict.lrm {rms} | R Documentation

## 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 in its computation.

### Usage

    ## S3 method for class '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 class '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 class 'lrm'
    Mean(object, codes=FALSE, ...)
    ## S3 method for class 'orm'
    Mean(object, codes=FALSE, ...)

### 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≥q 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,…,k for the k-level response in computing the predicted mean response.

### 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.

### Author(s)

Frank Harrell
Department of Biostatistics
Vanderbilt University
f.harrell@vanderbilt.edu

### 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

    # 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)

[Package rms version 5.1-1 Index]