R: Compose an S Function to Compute X beta from a Fit

Function {rms} | R Documentation

## Compose an S Function to Compute X beta from a Fit

### Description

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

### Author(s)

Frank Harrell, Jeremy Stephens, and Thomas Dupont
Department of Biostatistics
Vanderbilt University
f.harrell@vanderbilt.edu

### See Also

`latexrms`, `transcan`, `predict.rms`, `rms`, `rms.trans`

### Examples

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

    ## End(Not run)

[Package rms version 5.1-1 Index]