# fregre.gsam: Fitting Functional Generalized Spectral Additive Models In fda.usc: Functional Data Analysis and Utilities for Statistical Computing

 fregre.gsam R Documentation

## Fitting Functional Generalized Spectral Additive Models

### Description

Computes functional GAM model between functional covariate (X(t_1),...,X(t_q)) (and non functional covariate (Z1,...,Zp)) and scalar response Y.

### Usage

```fregre.gsam(
formula,
family = gaussian(),
data = list(),
weights = NULL,
basis.x = NULL,
basis.b = NULL,
...
)
```

### Arguments

 `formula` an object of class `formula` (or one that can be coerced to that class): a symbolic description of the model to be fitted. The details of model specification are given under `Details`. `family` a description of the error distribution and link function to be used in the model. This can be a character string naming a family function, a family function or the result of a call to a family function. (See `family` for details of family functions.) `data` List that containing the variables in the model. `weights` weights `basis.x` List of basis for functional explanatory data estimation. `basis.b` List of basis for functional beta parameter estimation. `...` Further arguments passed to or from other methods.

### Details

This function is an extension of the functional generalized linear regression models: `fregre.glm` where the E[Y|X,Z] is related to the linear prediction η via a link function g(.) with integrated smoothness estimation by the smooth functions f(.).

E[Y|X,Z]=η=g^{-1}(α+∑_i f_i(Z_{i})+∑_k^q∑_{j=1}^{k_q}{f_j^k(ξ_j^k)})

where ξ_j^k is the coefficient of the basis function expansion of X^k, (in PCA analysis ξ_j^k is the score of the j-functional PC of X^k.

The smooth functions f(.) can be added to the right hand side of the formula to specify that the linear predictor depends on smooth functions of predictors using smooth terms `s` and `te` as in `gam` (or linear functionals of these as and < X(t),β(t) > in `fregre.glm`).

The first item in the `data` list is called "df" and is a data frame with the response and non functional explanatory variables, as `gam`.

Functional covariates of class `fdata` or `fd` are introduced in the following items in the `data` list.
`basis.x` is a list of basis for represent each functional covariate. The basis object can be created by the function: `create.pc.basis`, `pca.fd` `create.pc.basis`, `create.fdata.basis` o `create.basis`.
`basis.b` is a list of basis for represent each functional beta parameter. If `basis.x` is a list of functional principal components basis (see `create.pc.basis` or `pca.fd`) the argument `basis.b` is ignored.

### Value

Return `gam` object plus:

• basis.x Basis used for `fdata` or `fd` covariates.

• basis.b Basis used for beta parameter estimation.

• data List that containing the variables in the model.

• formula formula.

• y.pred predicted response by cross-validation.

### Note

If the formula only contains a non functional explanatory variables (multivariate covariates), the function compute a standard `glm` procedure.

### Author(s)

Manuel Febrero-Bande, Manuel Oviedo de la Fuente manuel.oviedo@udc.es

### References

Muller HG and Stadtmuller U. (2005). Generalized functional linear models. Ann. Statist.33 774-805.

Wood (2001) mgcv:GAMs and Generalized Ridge Regression for R. R News 1(2):20-25.

Ramsay, James O., and Silverman, Bernard W. (2006), Functional Data Analysis, 2nd ed., Springer, New York.

Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S, New York: Springer.

See Also as: `predict.fregre.gsam` and `summary.gam`.
Alternative methods: `fregre.glm` and `fregre.gkam`.

### Examples

```## Not run:
data(tecator)
x <- tecator\$absorp.fdata
x.d1 <- fdata.deriv(x)
tt <- x[["argvals"]]
dataf <- as.data.frame(tecator\$y)
nbasis.x <- 11
nbasis.b <- 5
basis1 <- create.bspline.basis(rangeval=range(tt),nbasis=nbasis.x)
basis2 <- create.bspline.basis(rangeval=range(tt),nbasis=nbasis.b)
f <- Fat ~ s(Protein) + s(x)
basis.x <- list("x"=basis1,"x.d1"=basis1)
basis.b <- list("x"=basis2,"x.d1"=basis2)
ldat <- ldata("df" = dataf, "x" = x , "x.d1" = x.d1)
res <- fregre.gsam(Fat ~ Water + s(Protein) + x + s(x.d1), ldat,
family = gaussian(),  basis.x = basis.x,
basis.b = basis.b)
summary(res)
pred <- predict(res,ldat)
plot(pred-res\$fitted)
pred2 <- predict.gam(res,res\$XX)
plot(pred2-res\$fitted)
plot(pred2-pred)
res2 <- fregre.gsam(Fat ~ te(Protein, k = 3) + x, data =  ldat,
family=gaussian())
summary(res2)

##  dropind basis pc
basis.pc0 <- create.pc.basis(x,c(2,4,7))
basis.pc1 <- create.pc.basis(x.d1,c(1:3))
basis.x <- list("x"=basis.pc0,"x.d1"=basis.pc1)
ldata <- ldata("df"=dataf,"x"=x,"x.d1"=x.d1)
res.pc <- fregre.gsam(f,data=ldata,family=gaussian(),
basis.x=basis.x,basis.b=basis.b)
summary(res.pc)

##  Binomial family
ldat\$df\$FatCat <- factor(ifelse(tecator\$y\$Fat > 20, 1, 0))
res.bin <- fregre.gsam(FatCat ~ Protein + s(x),ldat,family=binomial())
summary(res.bin)
table(ldat\$df\$FatCat, ifelse(res.bin\$fitted.values < 0.5,0,1))

## End(Not run)
```

fda.usc documentation built on Oct. 17, 2022, 9:06 a.m.