FP: Fractional Polynomials

View source: R/helpers.R

FPR Documentation

Fractional Polynomials

Description

Fractional polynomials transformation for continuous covariates.

Usage

FP(x, p = c(-2, -1, -0.5, 0.5, 1, 2, 3), scaling = TRUE)

Arguments

x

a numeric vector.

p

all powers of x to be included.

scaling

a logical indicating if the measurements are scaled prior to model fitting.

Details

A fractional polynomial refers to a model \sum_{j = 1}^k (\beta_j x^{p_j} + \gamma_j x^{p_j} \log(x)) + \beta_{k + 1} \log(x) + \gamma_{k + 1} \log(x)^2, where the degree of the fractional polynomial is the number of non-zero regression coefficients \beta and \gamma.

Value

A matrix including all powers p of x, all powers p of log(x), and log(x).

References

Willi Sauerbrei and Patrick Royston (1999), Building multivariable prognostic and diagnostic models: transformation of the predictors by using fractional polynomials. Journal of the Royal Statistical Society A, 162, 71–94.

See Also

gamboost to fit smooth models, bbs for P-spline base-learners

Examples


    data("bodyfat", package = "TH.data")
    tbodyfat <- bodyfat

    ### map covariates into [1, 2]
    indep <- names(tbodyfat)[-2]
    tbodyfat[indep] <- lapply(bodyfat[indep], function(x) {
        x <- x - min(x)
        x / max(x) + 1
    })

    ### generate formula
    fpfm <- as.formula(paste("DEXfat ~ ",
        paste("FP(", indep, ", scaling = FALSE)", collapse = "+")))
    fpfm

    ### fit linear model
    bf_fp <- glmboost(fpfm, data = tbodyfat,
                      control = boost_control(mstop = 3000))

    ### when to stop
    mstop(aic <- AIC(bf_fp))
    plot(aic)

    ### coefficients
    cf <- coef(bf_fp[mstop(aic)])
    length(cf)
    cf[abs(cf) > 0]


mboost documentation built on Sept. 11, 2024, 6:09 p.m.