refund (version 0.1-23)

af_old: Construct an FGAM regression term


Defines a term \(\int_{T}F(X_i(t),t)dt\) for inclusion in an mgcv::gam-formula (or bam or gamm or gamm4:::gamm) as constructed by fgam, where \(F(x,t)\)$ is an unknown smooth bivariate function and \(X_i(t)\) is a functional predictor on the closed interval \(T\). Defaults to a cubic tensor product B-spline with marginal second-order difference penalties for estimating \(F(x,t)\). The functional predictor must be fully observed on a regular grid


  argvals = seq(0, 1, l = ncol(X)),
  xind = NULL,
  basistype = c("te", "t2", "s"),
  integration = c("simpson", "trapezoidal", "riemann"),
  L = NULL,
  splinepars = list(bs = "ps", k = c(min(ceiling(nrow(X)/5), 20),
    min(ceiling(ncol(X)/5), 20)), m = list(c(2, 2), c(2, 2))),
  presmooth = TRUE,
  Xrange = range(X),
  Qtransform = FALSE



an N by J=ncol(argvals) matrix of function evaluations \(X_i(t_{i1}),., X_i(t_{iJ}); i=1,.,N.\)


matrix (or vector) of indices of evaluations of \(X_i(t)\); i.e. a matrix with ith row \((t_{i1},.,t_{iJ})\)


Same as argvals. It will discard this argument in the next version of refund.


defaults to "te", i.e. a tensor product spline to represent \(F(x,t)\) Alternatively, use "s" for bivariate basis functions (see s) or "t2" for an alternative parameterization of tensor product splines (see t2)


method used for numerical integration. Defaults to "simpson"'s rule for calculating entries in L. Alternatively and for non-equidistant grids, "trapezoidal" or "riemann". "riemann" integration is always used if L is specified


optional weight matrix for the linear functional


optional arguments specifying options for representing and penalizing the function \(F(x,t)\). Defaults to a cubic tensor product B-spline with marginal second-order difference penalties, i.e. list(bs="ps", m=list(c(2, 2), c(2, 2)), see te or s for details


logical; if true, the functional predictor is pre-smoothed prior to fitting; see smooth.basisPar


numeric; range to use when specifying the marginal basis for the x-axis. It may be desired to increase this slightly over the default of range(X) if concerned about predicting for future observed curves that take values outside of range(X)


logical; should the functional be transformed using the empirical cdf and applying a quantile transformation on each column of X prior to fitting? This ensures Xrange=c(0,1). If Qtransform=TRUE and presmooth=TRUE, presmoothing is done prior to transforming the functional predictor


A list with the following entries:

  1. call - a "call" to te (or s, t2) using the appropriately constructed covariate and weight matrices.

  2. argvals - the argvals argument supplied to af

  3. L the matrix of weights used for the integration xindname the name used for the functional predictor variable in the formula used by mgcv. tindname - the name used for argvals variable in the formula used by mgcv Lname - the name used for the L variable in the formula used by mgcv presmooth - the presmooth argument supplied to af Qtranform - the Qtransform argument supplied to af Xrange - the Xrange argument supplied to af ecdflist - a list containing one empirical cdf function from applying ecdf to each (possibly presmoothed) column of X. Only present if Qtransform=TRUE Xfd - an fd object from presmoothing the functional predictors using smooth.basisPar. Only present if presmooth=TRUE. See fd.


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

See Also

fgam, lf, mgcv's linear.functional.terms, fgam for examples