# Function

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

##### Usage

```
# S3 method for rms
Function(object, intercept=NULL,
digits=max(8, .Options$digits), …)
# S3 method for 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

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

##### Value

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

##### See Also

##### Examples

```
# NOT RUN {
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)/4
f <- 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 category
predict(f, expand.grid(x1=c(2,3),x2='b'))
g8 <- Function(f) # default is 8 sig. digits
g8(x1=c(2,3), x2='b')
options(datadist=NULL)
# }
# NOT RUN {
# Make self-contained functions for computing survival probabilities
# using a log-normal regression
f <- 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 male
surv(c(2,5), g(age=50, sex='male'))
# }
```

*Documentation reproduced from package rms, version 5.1-4, License: GPL (>= 2)*