fgam: Functional Generalized Additive Models In refund: Regression with Functional Data

Description

Implements functional generalized additive models for functional and scalar covariates and scalar responses. Additionally implements functional linear models. This function is a wrapper for mgcv's gam and its siblings to fit models of the general form

g(E(Y_i)) = β_0 + \int_{T_1} F(X_{i1},t)dt+ \int_{T_2} β(t)X_{i2}dt + f(z_{i1}) + f(z_{i2}, z_{i3}) + …

with a scalar (but not necessarily continuous) response Y, and link function g

Usage

 1 fgam(formula, fitter = NA, tensortype = c("te", "t2"), ...)

Arguments

 formula a formula with special terms as for gam, with additional special terms af(), lf(), re(). fitter the name of the function used to estimate the model. Defaults to gam if the matrix of functional responses has less than 2e5 data points and to bam if not. "gamm" (see gamm) and "gamm4" (see gamm4) are valid options as well. tensortype defaults to te, other valid option is t2 ... additional arguments that are valid for gam or bam; for example, specify a gamma > 1 to increase amount of smoothing when using GCV to choose smoothing parameters or method="REML" to change to REML for estimation of smoothing parameters (default is GCV).

a fitted fgam-object, which is a gam-object with some additional information in a fgam-entry. If fitter is "gamm" or "gamm4", only the $gam part of the returned list is modified in this way. Warning Binomial responses should be specified as a numeric vector rather than as a matrix or a factor. Author(s) Mathew W. McLean mathew.w.mclean@gmail.com and Fabian Scheipl References McLean, M. W., Hooker, G., Staicu, A.-M., Scheipl, F., and Ruppert, D. (2014). Functional generalized additive models. Journal of Computational and Graphical Statistics, 23 (1), pp. 249-269. Available at https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3982924/. See Also Examples  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 data(DTI) ## only consider first visit and cases (no PASAT scores for controls) y <- DTI$pasat[DTI$visit==1 & DTI$case==1] X <- DTI$cca[DTI$visit==1 & DTI$case==1, ] X_2 <- DTI$rcst[DTI$visit==1 & DTI$case==1, ] ## remove samples containing missing data ind <- rowSums(is.na(X)) > 0 ind2 <- rowSums(is.na(X_2)) > 0 y <- y[!(ind | ind2)] X <- X[!(ind | ind2), ] X_2 <- X_2[!(ind | ind2), ] N <- length(y) ## fit fgam using FA measurements along corpus callosum ## as functional predictor with PASAT as response ## using 8 cubic B-splines for marginal bases with third ## order marginal difference penalties ## specifying gamma > 1 enforces more smoothing when using ## GCV to choose smoothing parameters #fit <- fgam(y ~ af(X, k = c(8, 8), m = list(c(2, 3), c(2, 3))), gamma = 1.2) ## fgam term for the cca measurements plus an flm term for the rcst measurements ## leave out 10 samples for prediction test <- sample(N, 10) #fit <- fgam(y ~ af(X, k = c(7, 7), m = list(c(2, 2), c(2, 2))) + # lf(X_2, k=7, m = c(2, 2)), subset=(1:N)[-test]) #plot(fit) ## predict the ten left outs samples #pred <- predict(fit, newdata = list(X=X[test, ], X_2 = X_2[test, ]), type='response', # PredOutOfRange = TRUE) #sqrt(mean((y[test] - pred)^2)) ## Try to predict the binary response disease status (case or control) ## using the quantile transformed measurements from the rcst tract ## with a smooth component for a scalar covariate that is pure noise y <- DTI$case[DTI$visit==1] X <- DTI$cca[DTI$visit==1, ] X_2 <- DTI$rcst[DTI$visit==1, ] ind <- rowSums(is.na(X)) > 0 ind2 <- rowSums(is.na(X_2)) > 0 y <- y[!(ind | ind2)] X <- X[!(ind | ind2), ] X_2 <- X_2[!(ind | ind2), ] z1 <- rnorm(length(y)) ## select=TRUE allows terms to be zeroed out of model completely #fit <- fgam(y ~ s(z1, k = 10) + af(X_2, k=c(7,7), m = list(c(2, 1), c(2, 1)), # Qtransform=TRUE), family=binomial(), select=TRUE) #plot(fit)

refund documentation built on July 1, 2021, 9:06 a.m.