# bsignal: Base-learners for Functional Covariates

Description Usage Arguments Details Value References See Also Examples

### Description

Base-learners that fit effects of functional covariates.

### Usage

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 bsignal(x, s, index = NULL, inS = c("smooth", "linear", "constant"), knots = 10, boundary.knots = NULL, degree = 3, differences = 1, df = 4, lambda = NULL, center = FALSE, cyclic = FALSE, Z = NULL, penalty = c("ps", "pss"), check.ident = FALSE) bconcurrent(x, s, time, index = NULL, knots = 10, boundary.knots = NULL, degree = 3, differences = 1, df = 4, lambda = NULL, cyclic = FALSE) bhist(x, s, time, index = NULL, limits = "s<=t", standard = c("no", "time", "length"), intFun = integrationWeightsLeft, inS = c("smooth", "linear", "constant"), inTime = c("smooth", "linear", "constant"), knots = 10, boundary.knots = NULL, degree = 3, differences = 1, df = 4, lambda = NULL, penalty = c("ps", "pss"), check.ident = FALSE) bfpc(x, s, index = NULL, df = 4, lambda = NULL, pve = 0.99, npc = NULL, npc.max = 15, getEigen = TRUE) 

### Arguments

 x matrix of functional variable x(s). The functional covariate has to be supplied as n by matrix, i.e. each row is one functional observation. s vector for the index of the functional variable x(s) giving the measurement points of the functional covariate. index a vector of integers for expanding the signal variable in x For example, bsignal(X, s, index = index) is equal to bsignal(X[index,], s), where index is an integer of length greater or equal to length(x). inS historical effect can be smooth, linear or constant in s, which is the index of the functional covariates x(s). knots either the number of knots or a vector of the positions of the interior knots (for more details see bbs). boundary.knots boundary points at which to anchor the B-spline basis (default the range of the data). A vector (of length 2) for the lower and the upper boundary knot can be specified. degree degree of the regression spline. differences a non-negative integer, typically 1, 2 or 3. Defaults to 1. If differences = k, k-th-order differences are used as a penalty (0-th order differences specify a ridge penalty). df trace of the hat matrix for the base-learner defining the base-learner complexity. Low values of df correspond to a large amount of smoothing and thus to "weaker" base-learners. lambda smoothing parameter of the penalty, computed from df when df is specified. center experimental implementation! See bbs. The effect is re-parameterized such that the unpenalized part of the fit is subtracted and only the penalized effect is fitted, using a spectral decomposition of the penalty matrix. The unpenalized, parametric part has then to be included in separate base-learners using bsignal(..., inS = 'constant') or bsignal(..., inS = 'linear') for first (difference = 1) and second (difference = 2) order difference penalty respectively. See the help on the argument center of bbs. cyclic if cyclic = TRUE the fitted coefficient function coincides at the boundaries (useful for cyclic covariates such as day time etc.). Z a transformation matrix for the design-matrix over the index of the covariate. Z can be calculated as the transformation matrix for a sum-to-zero constraint in the case that all trajectories have the same mean (then a shift in the coefficient function is not identifiable). penalty by default, penalty="ps", the difference penalty for P-splines is used, for penalty="pss" the penalty matrix is transformed to have full rank, so called shrinkage approach by Marra and Wood (2011) check.ident use checks for identifiability of the effect, based on Scheipl and Greven (2016) for linear functional effect using bsignal and based on Brockhaus et al. (2016) for historical effects using bhist time vector for the index of the functional response y(time) giving the measurement points of the functional response. limits defaults to "s<=t" for an historical effect with s<=t; either one of "s

### Details

bsignal implements a base-learner for functional covariates to estimate an effect of the form \int x_i(s)β(s)ds. Defaults to a cubic B-spline basis with first difference penalties for β(s) and numerical integration over the entire range by using trapezoidal Riemann weights. If bsignal is used within FDboost, the base-learner of timeformula is attached, resulting in an effect varying over the index of the response \int x_i(s)β(s, t)ds. The functional variable must be observed on one common grid s.

bconcurrent implements a concurrent effect for a functional covariate on a functional response, i.e., an effect of the form x_i(t)β(t) for a functional response Y_i(t) and concurrently observed covariate x_i(t). bconcurrent can only be used if Y(t) and x(s) are observed over the same domain s,t \in [T1, T2]. Note that in the case of bhist the argument index is treated like a variable and thus has to be given as variable in newdata, if predict.FDboost is with argument newdata.

bhist implements a base-learner for functional covariates with flexible integration limits l(t), r(t) and the possibility to standardize the effect by 1/t or the length of the integration interval. The effect is stand * \int_{l(t)}^{r_{t}} x(s)β(t,s)ds. The base-learner defaults to a historical effect of the form \int_{T1}^{t} x_i(s)β(t,s)ds, where T1 is the minimal index of t of the response Y(t). bhist can only be used if Y(t) and x(s) are observed over the same domain s,t \in [T1, T2]. The functional variable must be observed on one common grid s, see Brockhaus et al. (2016) for details on historical effects.

bfpc is a base-learner for a linear effect of functional covariates based on functional principal component analysis (FPCA). For the funcitonal linear effect \int x_i(s)β(s)ds the functional covariate and the coefficient function are represented by a FPC basis. The functional covariate x(s) is decomposed into x(s) \approx ∑_{k=1}^K ξ_{ik} Φ_k(s) using fpca.sc for the truncated Karhunen-Loeve decomposition. Then β(s) is represented in the function space spanned by Φ_k(s), see Scheipl et al. (2015) for details. The implementation is similar to ffpc. This is an experimental base-learner and not well tested yet.

It is recommended to use centered functional covariates with ∑_i x_i(s) = 0 for all s in bsignal-, bhist- and bconcurrent-terms. For centered covariates, the effects are centered per time-point of the response. If all effects are centered, the functional intercept can be interpreted as the global mean function.

The base-learners for functional covariates cannot deal with any missing values in the covariates.

### Value

Equally to the base-learners of package mboost:

An object of class blg (base-learner generator) with a dpp function (dpp, data pre-processing).

The call of dpp returns an object of class bl (base-learner) with a fit function. The call to fit finally returns an object of class bm (base-model).

### References

Brockhaus, S., Scheipl, F., Hothorn, T. and Greven, S. (2015): The functional linear array model. Statistical Modelling, 15(3), 279-300.

Brockhaus, S., Melcher, M., Leisch, F. and Greven, S. (2016): Boosting flexible functional regression models with a high number of functional historical effects, Statistics and Computing, accepted.

Marra, G. and Wood, S.N. (2011): Practical variable selection for generalized additive models. Computational Statistics & Data Analysis, 55, 2372-2387.

Scheipl, F., Staicu, A.-M. and Greven, S. (2015): Functional Additive Mixed Models, Journal of Computational and Graphical Statistics, 24(2), 477-501.

Scheipl, F. and Greven, S. (2016): Identifiability in penalized function-on-function regression models. Electronic Journal of Statistics, 10(1), 495-526.

### See Also

FDboost for the model fit.

### 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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 ######## Example for scalar-on-function-regression with bsignal data("fuelSubset", package = "FDboost") ## center the functional covariates per observed wavelength fuelSubset$UVVIS <- scale(fuelSubset$UVVIS, scale = FALSE) fuelSubset$NIR <- scale(fuelSubset$NIR, scale = FALSE) ## to make mboost:::df2lambda() happy (all design matrix entries < 10) ## reduce range of argvals to [0,1] to get smaller integration weights fuelSubset$uvvis.lambda <- with(fuelSubset, (uvvis.lambda - min(uvvis.lambda)) / (max(uvvis.lambda) - min(uvvis.lambda) )) fuelSubset$nir.lambda <- with(fuelSubset, (nir.lambda - min(nir.lambda)) / (max(nir.lambda) - min(nir.lambda) )) mod2 <- FDboost(heatan ~ bsignal(UVVIS, uvvis.lambda, knots=40, df=4, check.ident=FALSE) + bsignal(NIR, nir.lambda, knots=40, df=4, check.ident=FALSE), timeformula=NULL, data=fuelSubset) summary(mod2) ## plot(mod2) ############################################### ### data simulation like in manual of pffr::ff if(require(refund)){ ######### # model with linear functional effect, use bsignal() # Y(t) = f(t) + \int X1(s)\beta(s,t)ds + eps set.seed(2121) data1 <- pffrSim(scenario = "ff", n = 40) data1$X1 <- scale(data1$X1, scale = FALSE) dat_list <- as.list(data1) dat_list$t <- attr(data1, "yindex") dat_list$s <- attr(data1, "xindex") ## model fit by FDboost m1 <- FDboost(Y ~ 1 + bsignal(x= X1, s = s, knots = 5), timeformula = ~ bbs(t, knots = 5), data=dat_list, control = boost_control(mstop = 21)) ## search optimal mSTOP ## Not run: set.seed(123) cv <- validateFDboost(m1, grid = 1:100) # 21 iterations ## End(Not run) ## model fit by pffr t <- attr(data1, "yindex") s <- attr(data1, "xindex") m1_pffr <- pffr(Y ~ ff(X1, xind=s), yind=t, data=data1) ## Not run: par(mfrow = c(2, 2)) plot(m1, which = 1); plot(m1, which = 2) plot(m1_pffr, select = 1, shift = m1_pffr$coefficients["(Intercept)"]) plot(m1_pffr, select = 2) ## End(Not run) ############################################ # model with functional historical effect, use bhist() # Y(t) = f(t) + \int_0^t X1(s)\beta(s,t)ds + eps set.seed(2121) mylimits <- function(s, t){ (s < t) | (s == t) } data2 <- pffrSim(scenario = "ff", n = 40, limits = mylimits) data2$X1 <- scale(data2$X1, scale = FALSE) dat2_list <- as.list(data2) dat2_list$t <- attr(data2, "yindex") dat2_list$s <- attr(data2, "xindex") ## model fit by FDboost m2 <- FDboost(Y ~ 1 + bhist(x = X1, s = s, time = t, knots = 5), timeformula = ~ bbs(t, knots = 5), data = dat2_list, control = boost_control(mstop = 40)) ## search optimal mSTOP ## Not run: set.seed(123) cv2 <- validateFDboost(m2, grid = 1:100) # 40 iterations ## End(Not run) ## model fit by pffr t <- attr(data2, "yindex") s <- attr(data2, "xindex") m2_pffr <- pffr(Y ~ ff(X1, xind = s, limits = "s<=t"), yind = t, data = data2) ## Not run: par(mfrow = c(2, 2)) plot(m2, which = 1); plot(m2, which = 2) ## plot of smooth intercept does not contain m1_pffr$coefficients["(Intercept)"] plot(m2_pffr, select = 1, shift = m2_pffr\$coefficients["(Intercept)"]) plot(m2_pffr, select = 2) ## End(Not run) } `

Search within the FDboost package
Search all R packages, documentation and source code

Questions? Problems? Suggestions? or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.