Regression Modeling Strategies

Regression modeling, testing, estimation, validation, graphics, prediction, and typesetting by storing enhanced model design attributes in the fit. 'rms' is a collection of functions that assist with and streamline modeling. It also contains functions for binary and ordinal logistic regression models, ordinal models for continuous Y with a variety of distribution families, and the Buckley-James multiple regression model for right-censored responses, and implements penalized maximum likelihood estimation for logistic and ordinary linear models. 'rms' works with almost any regression model, but it was especially written to work with binary or ordinal regression models, Cox regression, accelerated failure time models, ordinary linear models, the Buckley-James model, generalized least squares for serially or spatially correlated observations, generalized linear models, and quantile regression.

Regression Modeling Strategies

Current Goals

  • A non-downward compatible change will occur in the next release of the package
  • The survfit.formula function (seen by the user as just survfit) for obtaining nonparametric survival estimates will be replaced by the npsurv function
  • The purpose is to avoid conflicts with the survival package
  • survfit.coxph has a new id option that generalizes individual=TRUE; need to change survfit.cph and survest.cph to use that

Web Sites

To Do

  • Fix survplot so that explicitly named adjust-to values are still in subtitles. See tests/cph2.s.
  • Fix fit.mult.impute to average sigma^2 and then take square root, instead of averaging sigma
  • Implement user-added distributions in psm - see


Changes in version 5.1-3 (2019-01-27)

  • lrm: when fails, don't stop altogether but print warning and return fit with fail=TRUE
  • summary.orm: stopped negating linear predictor before computing hazard ratio for orm fit with log-log family (confidence limits never attempted to do this). See
  • Design: stop with error message any any design matrix column name is duplicated as with a predictor X1 with factor level 2 (forming name X12 in model.matrix) and a numeric predictor named X12. See
  • contrast.rms: for conf.type='simultaneous' shortened fit$coefficients to only have one intercept so will work with multcomp::glht. Thanks: Matthew Shun-Shin
  • orm: changed label for Unique Y to Distinct Y
  • survplotp: fixed bug in legends
  • predab.resample: handled case where fitter doesn't include fail=FALSE
  • fixed problem with omission of name of fam argument with offset is present, and bug where initial had the wrong length. Thanks: Tamas Ferenci
  • inst/tests/cph4.r: commented out line that caused failure
  • plotp: moved generic to Hmisc
  • Design: gave better error message re:ordered factors
  • predictrms: remembered to run scored() when producing design matrix
  • Design: allowed for = in value labels in mmnames. See
  • plot.calibrate.default: added cex.subtitles, riskdist options and changed default for scat1d.opts
  • inst/tests/calibrate.r: new test

Changes in version 5.1-2 (2018-01-06)

  • plot.pentrace: corrected lty for AIC if ! add, interchanged lty for AIC and BIC. Thanks: Ferenci Tamas
  • removeFormulaTerms: added width.cutoff=500 to deparse call to avoid problems with long variable names. Thanks: Ferenci Tamas
  • removeFormulaTerms: changed above fix to use paste collapse instead (Thanks: Tamas)
  • Design: mmnames function: escaped <= like >= already escaped. See
  • groupkm: speed improvement (helps calibrate*; thanks Cole Beck)
  • fastbw: improved messages for rule and type
  • prModFit: changed to have htmlSpecial, htmlTranslate do all the html special character coding, allowing default to unicode
  • lrm, for rank correlation measures, made more accurate by binning probabilities into bins of width 0.0002 instead of 0.002
  • ggplot.Predict: fixed case of empty labels when defining pmlabel
  • vcov.orm: fixed bug when intercepts longer than 1
  •, diag(1 / sd) not returning matrix if sd is a matrix and not a vector
  • ols: respected data in terms call, for case where formula is .
  • robcov: removed warning in help file about printed standard errors (Thanks: Ferenci Tam├ís)
  • anova, rmsMisc, survplotp.npsurv: changed nbsp to htmlSpecial version
  • prModStat, anova, latex.cph, latex.rms, summary, validate.ols: added escape.html=FALSE to htmlTable
  • print.summary.rms: for html returned HTML object instead of invisible
  • validate.ols, calibrate.default: fixed fitter so that NA coefficient results in fail=TRUE
  • Gls: fixed major bug where correlation pattern was being ignored if not corAR1,corCAR1,corCompSymm. Thanks: Tamas Ferenci
  • latex.cph.s: changed to use latex instead of latex.default
  • ggplot.Predict: added conflinetype parameter (thanks: jphdotam;

Changes in version 5.1-1 (2017-05-01)

  • latex.anova.rms: if table.env is FALSE but caption is specified, passes caption as argument to latex.default; when options(prType='latex') you can do print(anova(), caption=) to use this
  • prModFit: fixed one latex to lang=='latex' bug
  • print.anova.rms, print.summary.rms: added table.env argument
  • psm: fixed bug in storage of g and gr that made output for them invalid
  • calibrate.cph,calibrate.psm,Function.rms,plot.Predict,predab.resample,Predict,rms.trans,summary.rms,which.influence:fixed preservation of options()
  •, bug in scale=TRUE when design matrix has 1 column
  • Design:quit running structure(ia, dimnames=NULL) if ia empty
  • Fortran calls: registered all Fortran functions, removed package name and quotes in first argument in .Fortran(), added F_ to entry point name in those calls, changed useDynLib call in NAMESPACE, added \alias{} for all F_ entries

Changes in version 5.1-0 (2017-01-01)

  • anova.rms, survplotp.npsurv: use Hmisc htmlGreek to encode Greek letters
    • plotp.Predict: new function for direct plotly graphics for Predict
    • rbind.Predict: carry adjust object

Changes in version 5.0-1 (2016-12-04)

  • latex.anova.rms: fixed problem with conversion of * to $\times$
    • prModStats: fixed problem with print.ols residuals
    • print.summary.rms: made it respect options(prType), and default latex to no table environment
    • plot.summary.rms, survplot.npsurv: height and width moved from plotly::layout to plot_ly due to changes in plotly 4.5.6
    • plot.summary.rms, survplotp.npsurv: added data= to plot::add_* because plotly was evaluating using the wrong copy of x,y, etc.
    • ggplot.Predict: used new labs(caption=) feature for ggplot2 instead of title
    • prModFit: fixed translation of * to \times, fixed \textgreater and \textless for row and column names for latex, fixed all model print methods to use options(prType=...)
    • latexrms: remove md argument, use options(prType='html')
    • latex methods for model fits: change default file to console
    • latex.anova.rms: remove html argument, use options(prType)
    • print.anova.rms: use options(prType) to automatically use LateX or html printing to console
    • cph: fixed bug when method="exact" related to type vs ytype
    • latex.cph: fixed bug where using strata used data not levels

Changes in version 5.0-0 (2016-10-31)

  • plot.summary.rms: implemented plotly interactive plots if options(grType='plotly') in effect
    • plot.anova.rms: implemented plotly interactive plots if options(grType='plotly') in effect; remove psmall argument; changed margin default to chisq and P
    • ggplot.Predict: implemented plotly interactive plots if options(grType='plotly') in effect
    • print(fit, md=TRUE), prModFit, prStats: added latex/html methods using htmlTable package and MathJax for latex math
    • html.anova.rms, html.validate, html.summary.rms: new functions for use with html and MathJax/knitr/RStudio
    • latex methods for model fits: added md=TRUE argument to produce MathJax-compatible latex and html code for fitted models when using R Markdown
    • html: new methods for model fit objects for use with R Markdown
    • formatNP: fixed error when digits=NA
    • latex.anova.rms: fixed error in not rounding enough columns doe to using intead of is.numeric
    • catg: corrected bug that disallowed explicit catg() in formulas
    • ggplot.Predict: added height and width for plotly
    • survplot: respected xlim with diffbands. Thanks: Toni G
    • reVector: changed to reListclean and stored model stats components as lists so can handle mixture of numeric and character, e.g., name of clustering variable
    • survplotp.npsurv: new function for interactive survival curve graphs using plotly
    • anova, summary, latex, print for model fits: use options(grType='html') or 'latex' to set output type, output htmltools::HTML marked html so that chunk header doesn't need results='asis'
    • latex methods - set file default to ''
    • GiniMd: moved to Hmisc package
    • plot.nomogram: fixed bug where abbreviations were being ignored. Thanks: Zongheng Zhang
    • nomogram: improved examples in help file
    • survplot.npsurv: fixed n.risk when competing risks
    • survest.cph, survfit.cph, others: fixed large problems due to incompatibility with survival 2.39-5 for survival predictions; changed object Strata to strata in cph to be compatible with survival package
    • new test survest.r to more comprehensively check survfit.cph and survest.cph
    • ggplot.Predict: quit ignoring xlim; suppress confidence bands if two group bariables because ggplot2 geom_ribbon doesn't support multiple aesthetics
    • predictrms: set contrasts for ordered factors to contr.treatment instead of contr.poly
    • val.prob: changed line of identity to use wide grayscale line instead of dashed line

Changes in version 4.5-1 (2016-06-01)

  • ggplot.Predict: fixed bug related to .predictor. vs. .Predictor. which resulted in double plotting of some anova annotations
  • tests/ggplot3: new tests related to above
  • tests/survplot2.r: new test
  • ggplot.Predict: fixed bug when legend.label=FALSE and didn't enclose empty string in quotes for later parsing
  • validate.rpart: extended to handle survival models (exponential distribution)
  • print.validate.rpart: finally added method in NAMESPACE
  • val.prob: make riskdist="predicted" the default; added E90 and Eavg to plotted output; for E measures changed to loess calibration instead of linear logistic calibration
  • fastbw: corrected error in help file regarding aics argument
  • NAMESPACE: added graphics::grconvertX grconvertY
    • latex.naprint.delete: fixed width algorithm for dot chart
    • survplot.npsurv, survplotp.npsurv: changed $prev to $pstate for competing risk estimation due to change in survival package 2.40-0
    • rbind.Predict: removed varying .x.; can't figure out what it was doing and cause a bug

Changes in version 4.5-0 (2016-04-02)

  • val.prob: fixed longstanding error: U was always -2/n because used wrong deviance. Thanks: Kai Chen
    • survplot*: implemented y.n.risk='auto' to place numbers at risk below the x-axis by 1/3 the range of ylim
    • survplot*: added mylim argument to force inclusion of ranges in computed limits
    • bootplot: added what='box' for box plots to check for wild bootstrap coefficients
    • ggplot.Predict: old workaround for expression labels for facet_grid quit work; changed to new labeller capabilities just added to ggplot2
    • survplot.*, survdiffplot: added cex.xlab, cex.ylab arguments
    • Design: fixed bug where one-column matrices as predictors did not compute column names correctly
    • predictrms: fixed bug in trying to retrieve offsets; now offsets set to zero (so are ignored)
    • tests: several updated, all run, several bugs fixed as result

Changes in version 4.4-2 (2016-02-20)

  • tests: added test mice.r exposing problem with complete function in mice
    • ols: passed tol argument to, lm.wfit
    • contrast: fixed major bug for orm fits - column was shifted because added 1 col to X instead of num intercepts. Changed to choose only one intercept in coef
    • ols: workaround - fitting functions are adding a class of integer for labelled Y
    • Gls: updated to be consistent with changes in nlme, DEPENDS on latest nlme
    • ggplot.Predict: changed show_guide to show.legend (thanks: John Woodill)
    • tests/ggplot2b.r: new test
    • tests/orm4.r: new test for small sample 2-way ANOVA
    • tests/orm-profile.r: new test to time profile orm
    • cph: fixed bug in when surv='summary'
    • cph: added arguments linear.predictors, residuals, nonames

Changes in version 4.4-1 (2015-12-21)

  • contrast, residuals.lrm, survreg.distributions, val.prob, validate.ols: changed 1 - pnorm(z) to pnorm(-z) and 1 - pt(z) to pt(-z) to increase precision; thanks: Alexander Ploner
    • tests/anova-ols-mult-impute.r: helps to understand sigma and sums of squares when ols is used with fit.mult.impute
    • survplot.npsurv: added support for competing risk cumulative incidence plots - see the new state argument
    • ols: fixed bug in which df.residual was n-1 when the fit was penalized. Thanks: Mark Seeto
    • %ia%: returned attribute iaspecial which TRUE when the interactions involved a categorical variable with exactly 2 levels and a variable that was not passed through lsp, rcs, pol
    • Design: if an %ia% object has iaspecial TRUE modifies how mmcolnames is created for that model term to account for an inconsistency in R whereby a categorical variable involved in %ia% when there are only two levels does not generate the usual variable=non-reference value in the column names.
    • bj, cph, Glm, lrm, ols, orm: changed to subset model.matrix result on mmcolnames to rigorously require expected design matrix column names to be what model.matrix actually constructed
    • npsurv: add numevents and exposure objects to fit object so will have number of events by cause in case of competing risks (summary.survfit does not compute this) as well as with ordinary right-censored single events
    • ggplot.Predict: inserted mapping and environment arguments to comply with ggplot generic
    • legend.nomabbrev: fixed bug info$Abbrev (note A; thanks: Alvin Jeffery)
    • Design: fixed bug, was not handling logical predictors correctly in mmcolnames. Thanks: Max Gordon

Changes in version 4.4-0 (2015-09-28)

  • contrast.rms: made SE a vector not a matrix, added 4 list logic for nvary, added new test from JoAnn Alvarez
    • plot.summary.rms: correct bug where pch was ignored. Thanks: Tamas Ferenci
    • prModFit: fix print(fit, latex=FALSE) when fit is result of robcov, bootcov
    • NAMESPACE: added imports for base functions used to avoid warnings with R CMD CHECK; new test rcs.r
    • prModFit: added rmarkdown argument. All print.* methods can pass this argument.
    • All print methods for fit objects: left result as prModFit instead of invisible() so that rmarkdown will work
    • demo/all.R: updated for plot and ggplot methods, npsurv
    • cph, predictrms, rms, rms.trans, rmsMisc: changed Design function to return new objects sformula (formula without cluster()) and mmcolnames which provides a new way to get rid of strat() main effects and interactions involving non-reference cells; handle offsets in cph and predict() (not yet in Predict); new internal function removeFormulaTerms that does character manipulation to remove terms like cluster() or offset() or the dependent variable(s). This gets around the problem with [.terms messing up offset terms when you subset on non-offset terms
    • Glm, ols: fixed offset
    • bj, Gls, lrm, orm, psm, Rq: change to new offset method and sformula
    • Predict: added offset=list(offsetvariable=value)
    • several: made temporary function names unique to avoid warnings with R CMD CHECK
    • ggplot.Predict: changed facet_wrap_labeller to not mess with class of returned object from ggplotGrob
    • Design: fixed column names for matrix predictors
    • Design, cph: handled special case where model is fit on a fit$x matrix
    • dxy.cens: exported
    • cph: added debug argument
    • tests/cph4.r: new tests for various predictor types
    • rms: changed warning to error if an ordered factor appears in the model and options(contrasts) is not set properly
    • rms transformation functions: made more robust by checking ! length instead of is.null

Changes in version 4.3-1 (2015-04-20)

  • NAMESPACE: removed reference to gridExtra, in DESCRIPTION moved gridExtra from Depends to Suggests
  • ggplot.Predict: re-worked generation of ggplot function call construction to use character strings with evaluation at the very end; added colfill argument
  • bplot: fixed so will find panel function with lattice::
  • trapped negative cell prob due to updated intercepts out of order
  • ggplot.Predict: fixed bug in expch when x=NULL
  • fixed but with wrong dimension array given to Fortran if offset used
  • predict.Rq: fixed bug causing intercept to be ignored
  • survplot.npsurv: override conf='diffbands' to 'bands' when one stratum; added aehaz and times arguments
  • ggplot.Predict: call new function in Hmisc: arrGrob, remove gridExtra from depends
  • changed any(duplicated()) to anyDuplicated()

Changes in version 4.3-0 (2015-02-15)

  • contrast.rms: added 3rd and 4th list of predictor settings to allow for double-difference (interaction) contrasts
  • predictrms: don't call vcov if no covariates present (e.g. cph strata only)
  • print.summary.rms, latex.summary.rms: print more significant digits for effect-related columns
  • robcov, bootcov: added new object clusterInfo in the fit object
  • all fitting functions: print method prints clusterInfo
  • residuals.lrm: negated Li-Shepherd residuals to make them correct
  • residuals.orm: put in namespace and added examples from Qi Liu
  • plot.calibrate: added par.corrected so user can specify graphics parameters for plotting overfitting-corrected estimates
  • robcov: dropped unused levels from cluster so that clusterInfo is correct
  • plot.Predict: added example in help file for how to set lattice graphics parameters
  • datadist: quit rounding quantiles to integers if raw data were integer
  • predictrms, Predict: fixed bug with and with handling Cox models; added new test code in tests/cph3.r
  • cph, dxy.cens: fixed bug - Dxy was negative of what it should have been for cph. Thanks: Irantzu Barrio
  • ggplot.Predict: new function for ggplot2 graphics for Predict objects
  • contrast.rms: added ... for print method (e.g., to allow digits=4)
  • survplot: raredd fixed bug with 1 observation per group - see
  • latex.rms: changed notation for indicator variables from {} to [] a la Knuth
  • latex.anova.rms: stopped putting d.f. and Partial SS in math mode
  • npsurv: neatened help file
  • residuals.orm: fixed bug for score residuals. This fixed robcov.
  • orm-residuals.r: new test code
  • vcov.orm: handled case where fit was run through robcov
  • print: for LaTeX fixed prStats to translate clustering variable to LaTeX
  • vcov.orm: handled case where fit was run through bootcov
  • bootcov: for orm stored intercepts attribute in var
  • tests: new test for orm bootcov
  • contrast, vcov.orm: made to work if fit run through robcov, bootcov
  • print.anova.rms: fixed bug with subscripts,names,dots

Changes in version 4.2-1 (2014-09-18)

  • plot.summary.rms: allowed a vector for lwd, and passed lwd to confbar. Thanks: Michael Friendly
  • gendata: Starting in R 3.1.0, or quit working when length vary; workaround
  • predictrms, ols: handle offset in formula. Thanks: Max Gordon
  • pentrace: neatened code, added new argument noaddzero if user wants to prevent unpenalized model from being tried; add new test script in tests
  • bplot: fixed bug whereby xlabrot was ignored. Thanks: Sven Krackow [email protected]; new test for bplot in tests directory
  • plot.Predict: fixed bug in which 2nd argument to perim was not correct
  • validate.ols: Shane McIntosh fixed the passing of the tolerance argument to predab.resample
  • predictrms: computed offset earlier so always defined no matter the value of type
  • plot.Predict: added scaletrans argument, fixed use of subscripts in pan
  • lrm, added scale argument
  • orm, added scale argument
  • vcov.orm: accounted for scale when extracting covariance matrix
  • npsurv: was not passing type argument
  • npsurv: start storing all classes created by survfit.formula
  • logLik.Gls: added. Makes AIC(Gls object) work.
  • NAMESPACE: several changes

Changes in version 4.2-0 (2014-04-13)

  • Deprecated survfit.formula so would not overlap with function in survival
  • Added function npsurv, survplot.npsurv
  • REMOVED survfit.formula
  • Used new type argument to label.Surv for fitting functions
  • cph: added weights argument to residuals.coxph (Thanks: Thomas Lumley)
  • survfit.cph: fixed bug in using wrong type variable. Thanks: Zhiyuan Sun
  • cph: added weighted=TRUE in call to residuals.coxph (Thanks: T Lumley)
  • improved ormfit to not try to deal with NaN in V, assuming that step-halving will happen

Changes in version 4.1-3 (2014-03-02)

  • num.intercepts: removed (is in Hmisc)
    • survfit.formula, cph, psm: changed to use inputAttributes attribute of Surv objects (introduced earlier in survival package so that rms could drop its customized Surv function)
  • Exported survfit.formula
  • Changed survival fitting functions and residuals to use units.Surv

Changes in version 4.1-2 (2014-02-28)

  • psm: Fixed bug to allow computation of Dxy with left censoring
  • val.prob: Fixed recently introduced bug that made calibration intercept and slope always 0,1. Thanks: [email protected]
  • plot.Predict: added between to leave space between panels
  • fixed error in kmid calculation when heavy ties at first level of y. Thanks: Yuwei Zhu
  • setPb: changed default to now use tktcl to show progress bars for simulations
  • predictrms: fixed bug with type='terms'
  • val.surv: handle case where survival estimates=0 or 1 when using log-log transform

Changes in version 4.1-1 (2014-01-22)

  • Removed use of under.unix in anova.rms, latex.summary, plot.nomogram
  • Removed use of oldUnclass, oldClass, is.category
  • Fixed class of Rq object; had failed with bootcov. Thanks: Max Gordon
  • survplot: preserved par()
  • Srv: removed, changed all uses to Surv() for new survival package that preserves attributes for Surv inputs
  • survplot.survfit, survdiffplot: added conf='diffbands'
  • predictrms: fixed num. intercepts calculation order
  • survplot, survdiffplot: used original standard error for survdiffplot, and fun
  • dyx.cens: allow left-censoring

Changes in version 4.1-0 (2013-12-05)

  • Fixed to not create penalty matrix if not needed (penalties are not yet implemented anyway)
  • Added yscale argument to plot.Predict
  • Added Wald test simulation to orm help file
  • Added example in help file for plot.anova.rms of adding a line combining the effects of two predictors in dot chart
  • Fixed grid interpretation error in survplot.survfit
  • Changed plot.anova.rms to use dotchart3 instead of dotchart2
  • Fixed bug in summary.rms - was taking reciprocal of effect ratio with orm even if not loglog family (thanks: Yong Hao Pua [email protected]
  • Removed link to print.lm, summary.lm in ols.Rd
  • Added ntrans argument to plot.anova.rms
  • Fixed handling of intercepts in Rq, validate.Rq
  • Removed residuals.Glm, residuals.rms (also from Rd, NAMESPACE)
  • Removed other .rms methods and other remnants from fooling S+ dispatcher
  • Fixed bug in lm.pfit when penalty used (thanks: Yong Hao Pua [email protected])
  • Fixed bug in calibrate.default for ols (thanks: Andy Bush)
  • Change print.contrast.rms to insert NA for SE if fun is not the identity function
  • Added margin argument to plot.anova.rms to print selected stats in right margin of dot chart
  • Added anova argument to plot.Predict to allow overall association test statistics to be added to panels
  • Fixed bug in val.prob in which the logistic model was re-fitted instead of fixing coefficients at 0,1. This resulted in model statistics (including c-index) to always be favorable even when predictions were worse than random. Thanks: Kirsen Van Hoorde [email protected]
  • Fixed bug in survdiffplot where was always overridden by value from survfit. Thanks: Kamil Fijorek [email protected]
  • Fixed bug in grid= for survplot.* and survdiffplot. Thanks: Kamil Fijorek
  • Fixed rms.s to account for possible offset in names(nmiss). Thanks: Larry Hunsicker
  • Fixed psm.s to not compute Dxy if simple right censoring is not in effect. Thanks: I.M. Nolte
  • rcs: respect system option fractied, passed to rcspline.eval; can be used to get old behavior
  • Gls: as nlme 3.1-113 exports more functions, removed nlme:::

Changes in version 4.0-0 (2013-07-10)

  • Cleaned up label logic in Surv, made it work with interval2 (thanks:Chris Andrews)
  • Fixed bug in val.prob - wrong denominator for Brier score if obs removed for logistic calibration
  • Fixed inconsistency in predictrms where predict() for Cox models used a design matrix that was centered on medians and modes rather than means (thanks: David van Klaveren [email protected])
  • Added mean absolute prediction error to Rq output
  • Made pr argument passed to predab.resample more encompassing
  • Fixed logLik method for ols
  • Made contrast.rms and summary.rms automatically compute bootstrap nonparametric confidence limits if fit was run through bootcov
  • Fixed bug in Predict where conf.type='simultaneous' was being ignored if bootstrap coefficients were present
  • For plot.Predict made default gray scale shaded confidence bands darker
  • For bootcov exposed eps argument to fitters and default to lower value
  • Fixed bug in plot.pentrace regarding effective.df plotting
  • Added setPb function for pop-up progress bars for simulations; turn off using options(showprogress=FALSE) or options(showprogress='console')
  • Added progress bars for predab.resample (for validate, calibrate) and bootcov
  • Added bootBCa function
  • Added seed to bootcov object
  • Added boot.type='bca' to Predict, contrast.rms, summary.rms
  • Improved summary.rms to use t critical values if df.residual defined
  • Added simultaneous contrasts to summary.rms
  • Fixed calculation of Brier score, g, gp in by handling special case of computing linear predictor when there are no predictors in the model
  • Fixed bug in prModFit preventing successful latex'ing of penalized lrms
  • Removed \synopsis from two Rd files
  • Added prmodsel argument to predab.resample
  • Correct Rd files to change Design to rms
  • Restricted NAMESPACE to functions expected to be called by users
  • Improved Fortran code to use better dimensions for array declarations
  • Added the basic bootstrap for confidence limits for bootBCa, contrast, Predict, summary
  • Fixed bug in latex.pphsm, neatened pphsm code
  • Neatened code in rms.s
  • Improved code for bootstrapping ranks of variables in anova.rms help file
  • Fixed bug in Function.rms - undefined Nam[[i]] if strat. Thanks: [email protected]
  • Made quantreg be loaded at end of search list in Rq so it doesn't override latex generic in Hmisc
  • Improved plot.summary.rms to use blue of varying transparency instead of polygons to show confidence intervals, and to use only three confidence levels by default: 0.9 0.95 0.99
  • Changed Surv to Srv; use of Surv in fitting functions will result in lack of time labels and assumption of Day as time unit; no longer override Surv in survival
  • Changed calculation of Dxy (and c-index) to use survival package survConcordance service function when analyzing (censored) survival time; very fast
  • Changed default dxy to TRUE in validate.cph, validate.psm
  • Dxy is now negated if correlating Cox model log relative hazard with survival time
  • Removed dxy argument from as it always computed
  • Added Dxy to standard output of cph, psm
  • Added help file for Srv
  • Removed reference to ps.slide from survplot help page
  • Added the general ordinal regression fitting function orm (and which efficiently handles thousands of intercepts because of sparse matrix representation of the information matrix; implements 5 distribution families
  • Added associated functions print.orm, vcov.orm, predict.orm, Mean.orm, Quantile.orm, latex.orm, validate.orm
  • Changed predab.resample to allow number of intercepts from resample to resample
  • Fixed bug in Mean.cph (thanks: Komal Kapoor [email protected])
  • Removed incl.non.slopes and non.slopes arguments from all predict methods
  • Changed all functions to expect predict(..., type='x') to not return intercept columns, and all fitting functions to not store column of ones if x=TRUE
  • Changed nomogram argument intercept to kint, used default as fit$interceptRef
  • Made bootcov behave in a special way for orm, to use linear interpolation to select a single intercept targeted at median Y
  • Revamped all of rms to never store intercepts in design matrices in fit objects and to add intercepts on demand inside predictrms
  • Added new function generator ExProb to compute exceedance probabilities from orm fits

Changes in version 3.6-3 (2013-01-11)

  • Added Li-Shepherd residuals in residuals.lrm.s, become new default (same as ordinary residuals for binary models)
  • Remove glm null fit usage as this is no longer in R

Changes in version 3.6-2 (2012-12-09)

  • bootcov, predab.resample: captured errors in all fits (to ignore bootstrap rep) using tryCatch. Thanks: Max Gordoin [email protected]
  • predab.resample: made as.matrix(y) conditional to handle change in the survival package whereby the "type" attribute did not exist for a matrix
  • anova.rms: added new parameter vnames to allow use of variable labels instead of names in anova table; added vinfo attribute
  • residuals.lrm: removed intercept from partial residuals for binary models
  • moved comprehensive examples in rmsOverview to ~/rms/demo/all.R; greatly speeds up package checking but demo needs to be run separately for better checking, using demo(all, 'rms')
  • Fixed survfit.formula to not use .Global environment

Changes in version 3.6-1 (2012-11-05)

  • bootcov: set loglik to default to FALSE and added code to fill in missing intercepts in coef vector for prop. odds model when levels of Y not resampled; see coef.reps to default to TRUE
  • Predict: implemented fun='mean' to get proper penalty for estimating the mean function for proportional odds models
  • Added usebootcov argument to Predict to allow the user to force the use of bootstrap covariance matrix even when coef.reps=TRUE was in effect for bootcov

Changes in version 3.6-0 (2012-10-26)

  • Gls: Updated optimization calls - had become inconsistent with gls and failed if > 1 correlation parameter (thanks: Mark Seeto [email protected]); removed opmeth argument
  • print.fastbw: added argument: estimates
  • survplot.survfit: handled fact that survival:::summary.survfit may not preserve order of strata levels. Also fixed survit.cph and cph; Thanks: [email protected]
  • plot.Predict: added example showing how to rename variables in plot
  • print(fit object, latex=TRUE): added latex.naprint.delete, used new Hmisc latexDotchart function to make a dot chart of number of NAs due to each model variable if at least 4 variables have NAs
  • added trans argument to plot.anova.rms to allow transformed scales
  • Corrected cph to use model.offset(); thanks: Simon Thornley [email protected]
  • Changed latex.anova.rms to use REGRESSION instead of TOTAL label
  • Changed gendata, contrast.rms to allow expand=FALSE to prevent expand.grid from being called to generate all combinations of predictors
  • Added type= to plot.Predict to allow user to specify a different default line/point type (especially useful when x is categorical)
  • Corrected bug in offset in psm - made default offset the length of X
  • Corrected bug in calibrate.psm (fixed -> parms)
  • predab.resample, calibrate.cph, calibrate.default, calibrate.psm: stopped putting results from overall initial fit into .Global and instead had predab.resample put them in attribute keepinfo, obtained from measure()

Changes in version 3.5-0 (2012-03-24)

  • contrast.rms: saved conf.type and in returned object, added to print method
  • Added debug= to predab.resample so user can see all the training and test sample subscripts
  • Added validate.Rq function
  • Fixed bug in Rq that caused 2 copies of fitted.values to be in fit object, which caused fit.mult.impute to double fitted.values
  • Added how to reorder predictors if using plot(Predict(fit))
  • Added new function perlcode written by Jeremy Stephens and Thomas Dupont; converts result of Function to Perl code
  • Fixed partial argument matches in many functions to pass new R checks
  • Changed matrx and DesignAssign to allow validate.Rq to consider null models; neatened code

Changes in version 3.4-0 (2012-01-17)

  • psm: fixed logcorrect logic (thanks: Rob Kushler)
  • Added suggested package multcomp (required for simultaneous CLs)
  • Implemented simultaneous confidence intervals in Predict, predictrms, contrast.rms, all specific model predict methods
  • Add multiplicity adjustment for individual confidence limits computed by contrast.rms, to preserve family-wise coverage using multcomp package
  • Improved rbind.Predict to preserve order of groups as presented, as levels of .set.
  • Added example for plot.Predict showing how to suppress predictions for certain intervals/groups from being plotted
  • Added example in plot.Predict help file for graphing multiple types of confidence bands simultaneously

Changes in version 3.3-3 (2011-12-06)

  • robcov: used vcov to get var-cov matrix
  • vcov.Glm: gave precedence to $var object in fit
  • Added residuals.Glm to force call to residuals.glm, and make robcov fail as type="score" is not implemented for glm
  • Fixed bootcov for Glm to sense NA in coefficients and skip that iteration
  • Fixed digit -> digits error in latex.rms
  • Fixed f$coef error in pentrace; thanks [email protected]
  • Added new feature for Predict() to plot bootstrap nonparametric confidence limits if fit was run through bootcov with coef.reps=TRUE
  • Added ylim argument to plot.residuals.lrm

Changes in version 3.3-2 (2011-11-09)

  • calibrate.default: add var-cov matrix to ols objects
  • print.lrtest: discarded two formula attributes before printing
  • Added digits, size, and after arguments for latex methods for model fits, made before argument work with inline=TRUE, changed \needspace to \Needspace in latex.validate and prModFit
  • latex: fixed to consider digits for main effects
  • plot.xmean.ordinaly: added new argument cex.points
  • print.lrm: improved printing of -2 LL overall penalty
  • plot.calibrate.default: invisibly return prediction errors
  • plot.Predict: added cex.axis argument to pass to x scales; added subdata
  • print.pentrace: neatened up output
  • added title as an argument to all high-level function print methods
  • prModFit: fixed bug where Score chi2 was not translated to LaTeX
  • prModFit: changed to use LaTeX longtable style for coefficients etc.
  • prModFit: added arguments long and needspace
  • prModFit: suppressed title if title=""
  • rmsMisc: added nobs.rms and added nobs to object returned by logLik.rms
  • Added new argument cex.points to plot.xmean.ordinaly
  • Changed example in anova.rms to use reorder instead of reorder.factor

Changes in version 3.3-1 (2011-06-01)

  • Added new example for anova.rms for making dot plots of partial R^2 of predictors
  • Defined logLik.ols (calls logLik.lm)
  • Fixed and cleaned up logLik.rms, AIC.rms
  • Fixed residuals.psm to allow other type= values used by residuals.survreg
  • Fixed Predict and survplot.rms to allow for case where no covariates present
  • Fixed bug in val.prob where Eavg wasn't being defined if pl=FALSE (thanks: Ben Haller)
  • Fixed bug in Predict so that it could get a list or vector from predictrms
  • Fixed latex.rms to not treat * as a wild card in various contexts (may be interaction)
  • Fixed predictrms to temporarily get std.err if requested even it std.err not; omitted std.err in returned object if not wanted
  • Enhanced plot.Predict to allow plots for different predictors to be combined, after running rbind.Predict (varypred argument)
  • Also enhanced to allow groups= and cond= when varying the predictors
  • Corrected bug where sometimes would try to plot confidence limits when was given to Predict
  • Added india, indnl arguments to anova.rms to suppress printing individual tests of interaction/nonlinearity
  • Changed anova.rms so that if all non-summary terms have (Factor+Higher Order Factor) in their labels, this part of the labels is suppressed (useful with india and indnl)

Changes in version 3.3-0 (2011-02-28)

  • In survplot.rms, fixed bug (curves were undefined if conf='bands' and labelc was FALSE)
  • In survfit.cph, fixed bug by which n wasn't always defined
  • In cph, put survival::: on exact fit call
  • Quit ignoring zlim argument in bplot; added xlabrot argument
  • Added caption argument for latex.anova.rms
  • Changed predab to not print summaries of variables selected if bw=TRUE
  • Changed predab to pass force argument to fastbw
  • fastbw: implemented force argument
  • Added force argument to validate.lrm,, calibrate.default, calibrate.cph, calibrate.psm,, validate.cph, validate.ols
  • print.validate: added B argument to limit how many resamples are printed summarizing variables selected if BW=TRUE
  • print.calibrate, print.calibrate.default: added B argument
  • Added latex method for results produced by validate functions
  • Fixed survest.cph to convert summary.survfit std.err to log S(t) scale
  • Fixed val.surv by pulling surv object from survest result
  • Clarified in predict.lrm help file that doesn't always use the first intercept
  •, lrm: linear predictor stored in fit object now uses first intercept and not middle one (NOT DOWNWARD COMPATIBLE but makes predict work when using stored linear.predictors)
  • Fixed argument consistency with validate methods

Changes in version 3.2-0 (2011-02-14)

  • Changed to be compatible with survival 2.36-3 which is now required
  • Added logLik.rms and AIC.rms functions to be compatible with standard R
  • Fixed oos.loglik.Glm
  • Fixed bootcov related to nfit='Glm'
  • Fixed (probably) old bug in latexrms with strat predictors

Changes in version 3.1-0 (2010-09-12)

  • Fixed gIndex to not use scale for labeling unless character
  • Changed default na.action in Gls to na.omit and added a note in the help file that na.delete does not work with Gls
  • Added terms component to Gls fit object (latex was not working)
  • Added examples in robcov help file testing sandwich covariance estimator
  • Added reference related to the effects package under help file for plot.Predict
  • Added more examples and simulations to gIndex
  • Fixed ancient bug in Fortran code to handle case where initial estimates are nearly perfect (was trying to step halve); thanks: Dan Hogan
  • Changed survdiffplot to use gray(.85) for bands instead of gray(.95)
  • Fixed formatting problem in print.psm
  • Added prStats and reVector functions to rmsMisc.s
  • Changed formatting of all print.* functions for model fits to use new prStats function
  • Added latex=TRUE option to all model fit print methods; requires LaTeX package needspace
  • Re-wrote printing routines to make use of more general model
  • Removed long and scale options from cph printing-related routines
  • Prepare for version 2.36-1 of survival package by adding censor=FALSE argument to survfit.coxph
  • Added type="ccterms" to various predict methods
  • Made type="ccterms" the default for partial g-indexes in gIndex, i.e., combine all indirectly related (through interactions) terms
  • Added Spiegelhalter calibration test to val.prob
  • Added a check in cph to trigger an error if strata() is used in formula
  • Fixed drawing of polygon for shaded confidence bands for survplot.survfit (thanks to Patrick Breheny [email protected])
  • Changed default adjust.subtitle in bplot to depend on, thanks to David Winsemius [email protected]
  • Used a namespace and simplified referenced to a few survival package functions that survival actually exports

Changes in version 3.0-0 (2010-05-16)

  • Made Gls not store data label() in residuals object, instead storing a label of 'Residuals'
  • Fixed handling of na.action and check for presence of offsets in Glm
  • Added type="cterms" to predict methods; computes combined terms for main effects + any interaction terms involving that main effect; in preparation for new geffects function
  • Added GiniMd and gIndex functions
  • Change lrm ( to use the middle intercept in computing Brier score
  • Added 3 g-indexes to lrm fits
  • Added 1 g-index to ols, Rq, Glm, Gls fits
  • Added 2 g-indexes to cph, psm fits
  • Added g to validate.ols, .lrm, .cph, .psm, but not to
  • Added print.validate to set default digits to 4
  • Changed validate.lrm to compute 3 indexes even on ordinal response data

Changes in version 2.2-0 (2010-02-23)

  • Added levels.only option to survplot.* to remove variablename= from curve labels
  • Added digits argument to calibrate.default
  • Added new ref in val.prob help page
  • Corrected location of dataset in residuals.lrm help page (thanks [email protected])
  • Fixed latex.rms to latex-escape percent signs inside value labels
  • Added scat1d.opts to plot.Predict
  • Changed method of specifying variables to vary by not requiring an equals sign and a dot after the variable name, for Predict, summary, nomogram, gendata, survplot.rms
  • Added factors argument to Predict to handle the above for survplot
  • Made gendata a non-generic function, changed the order of its arguments, removed editor options, relying on R de function always
  • Thanks to Kevin Thorpe [email protected] to make latex.summary.rms and latex.anova.rms respect the table.env argument
  • Fixed bug in calibrate.default related to digits argument
  • Re-wrote bplot to use lattice graphics (e.g., levelplot contourplot wireframe), allowing for multiple panels for 3-d plots
  • Changed all Rd files to use {arg1,arg2,...} instead of having empty {}

Changes in version 2.1-0 (2009-09-30)

  • Made Predict not return invisibly if predictors not specified
  • New option nlines for plot.Predict for getting line plots with 2 categorical predictors
  • Added rename option to rbind.Predict to handle case where predictor name has changed between models
  • Added ties=mean to approx( ) calls that did not have ties= specified
  • Added nlevels argument to bplot to pass to contour
  • Added par argument to iLegend - list to pass to par().
  • Redirected ... argument to iLegend to image( ).
  • Fixed groupkm - was printing warning messages wrongly
  • Added new semiparametric survival prediction calibration curve method in val.surv for external validation; this is the first implementation of smooth calibration curves for survival probability validation with right-censored data
  • Fixed calibrate confidence limits from groupkm
  • Added smooth calibration curve using hare (polspline package) for calibrate.cph and calibrate.psm
  • Added display of predicted risks for cph and psm models even for the stratified KM method (old default)

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


6.0-1 by Frank E Harrell Jr, 3 months ago,,,,

Browse source code at

Authors: Frank E Harrell Jr <[email protected]>

Documentation:   PDF Manual  

Task views: Econometrics, Reproducible Research, Statistics for the Social Sciences, Survival Analysis

GPL (>= 2) license

Imports methods, quantreg, rpart, nlme, polspline, multcomp, htmlTable, htmltools, MASS, cluster, digest

Depends on Hmisc, survival, lattice, ggplot2, SparseM

Suggests boot, tcltk, plotly, knitr, mice, rmsb

Imported by CatPredi, CsChange, DynNom, Greg, JWileymisc, LCAextend, LogisticDx, PResiduals, Surrogate, SvyNom, TrendInTrend, apricom, base.rms, bujar, cg, contrast, ecospat, ems, ggDCA, ggrisk, glmBfp, greport, hIRT, haplo.stats, lodGWAS, mztwinreg, nlrr, nomogramEx, nomogramFormula, ordcrm, ormPlot, peRiodiCS, pec, plsRcox, psfmi, riskRegression, shrink, survHE.

Depended on by CPE, FeaLect, Tsphere, coxed, lordif, missDeaths, nonparaeff, pleio, rmsb, seawaveQ.

Suggested by Hmisc, MachineShop, ModelGood, PAsso, Publish, bbmle, catdata, concurve, depigner, dosresmeta, fastStat, gap, ggeffects, insight, languageR, ordinalNet, pander, perturb, pubh, rankhazard, rprev, spatialEco, sure, survAUC, survxai, tangram.

Enhanced by stargazer.

See at CRAN