| fregre.gsam {fda.usc} | R Documentation |
Fitting Functional Generalized Spectral Additive Models
Description
Computes functional GAM model between functional covariate
(X^1(t_1),\cdots,X^{q}(t_q)) (and non functional
covariate (Z^1,...,Z^p)) 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 |
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 |
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 \eta via a link function
g(\cdot) with integrated smoothness estimation by the smooth
functions f(\cdot).
E[Y|X,Z])=\eta=g^{-1}(\alpha+\sum_{i=1}^{p}f_{i}(Z^{i})+\sum_{k=1}^{q}\sum_{j=1}^{k_q}{f_{j}^{k}(\xi_j^k)})
where
\xi_j^k is the coefficient of the basis function expansion of
X^k, (in PCA analysis \xi_j^k is the score of the
j-functional PC of X^k.
The smooth functions f(\cdot) 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
Z\beta and \big<X(t),\beta\big> 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
fdataorfdcovariates. -
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
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)