Compose an S Function to Compute X beta from a Fit
Compose an S Function to Compute X beta from a Fit
Function is a class of functions for creating other S functions. Function.rms is the method for creating S functions to compute X beta, based on a model fitted with rms in effect. Like latexrms, Function.rms simplifies restricted cubic spline functions and factors out terms in second-order interactions. Function.rms will not work for models that have third-order interactions involving restricted cubic splines. Function.cph is a particular method for handling fits from cph, for which an intercept (the negative of the centering constant) is added to the model. sascode is a function that takes an S function such as one created by Function and does most of the editing to turn the function definition into a fragment of SAS code for computing X beta from the fitted model, along with assignment statements that initialize predictors to reference values. perlcode similarly creates Perl code to evaluate a fitted regression model.
## S3 method for class 'rms'Function(object, intercept=NULL, digits=max(8, .Options$digits), posterior.summary=c('mean','median','mode'),...)## S3 method for class 'cph'Function(object, intercept=-object$center,...)# Use result as fun(predictor1=value1, predictor2=value2, \dots)sascode(object, file='', append=FALSE)perlcode(object)
Arguments
object: a fit created with rms in effect
intercept: an intercept value to use (not allowed to be specified to Function.cph). The intercept is usually retrieved from the regression coefficients automatically.
digits: number of significant digits to use for coefficients and knot locations
posterior.summary: if using a Bayesian model fit such as from blrm, specifies whether to use posterior mode/mean/median parameter estimates in generating the function
file: name of a file in which to write the SAS code. Default is to write to standard output.
append: set to TRUE to have sascode append code to an existing file named file.
...: arguments to pass to Function.rms from Function.cph
Returns
Function returns an S-Plus function that can be invoked in any usual context. The function has one argument per predictor variable, and the default values of the predictors are set to adjust-to values (see datadist). Multiple predicted X beta values may be calculated by specifying vectors as arguments to the created function. All non-scalar argument values must have the same length. perlcode returns a character string with embedded newline characters.
suppressWarnings(RNGversion("3.5.0"))set.seed(1331)x1 <- exp(rnorm(100))x2 <- factor(sample(c('a','b'),100,rep=TRUE))dd <- datadist(x1, x2)options(datadist='dd')y <- log(x1)^2+log(x1)*(x2=='b')+rnorm(100)/4f <- ols(y ~ pol(log(x1),2)*x2)f$coef
g <- Function(f, digits=5)g
sascode(g)cat(perlcode(g),'\n')g()g(x1=c(2,3), x2='b')#could omit x2 since b is default categorypredict(f, expand.grid(x1=c(2,3),x2='b'))g8 <- Function(f)# default is 8 sig. digitsg8(x1=c(2,3), x2='b')options(datadist=NULL)## Not run:require(survival)# Make self-contained functions for computing survival probabilities# using a log-normal regressionf <- psm(Surv(d.time, death)~ rcs(age,4)*sex, dist='gaussian')g <- Function(f)surv <- Survival(f)# Compute 2 and 5-year survival estimates for 50 year old malesurv(c(2,5), g(age=50, sex='male'))## End(Not run)