cv.SFGAM {sparseGAM} | R Documentation |
Sparse Frequentist Generalized Additive Models
Description
This function implements K
-fold cross-validation for sparse frequentist generalized additive models (GAMs) with the group LASSO, group SCAD, and group MCP penalties. The identity link function is used for Gaussian GAMs, the logit link is used for binomial GAMs, and the log link is used for Poisson, negative binomial, and gamma GAMs.
Usage
cv.SFGAM(y, X, df=6,
family=c("gaussian","binomial", "poisson", "negativebinomial","gamma"),
nb.size=1, gamma.shape=1, penalty=c("gLASSO","gMCP","gSCAD"), taper,
nfolds=10, nlambda=100, lambda, max.iter=10000, tol=1e-4)
Arguments
y |
|
X |
|
df |
number of B-spline basis functions to use in each basis expansion. Default is |
family |
exponential dispersion family. Allows for |
nb.size |
known size parameter |
gamma.shape |
known shape parameter |
penalty |
group regularization method to use on the groups of basis coefficients. The options are |
taper |
tapering term |
nfolds |
number of folds |
nlambda |
number of regularization parameters |
lambda |
grid of |
max.iter |
maximum number of iterations in the algorithm. Default is |
tol |
convergence threshold for algorithm. Default is |
Value
The function returns a list containing the following components:
lambda |
|
cve |
|
cvse |
|
lambda.min |
value of |
References
Breheny, P. and Huang, J. (2015). "Group descent algorithms for nonconvex penalized linear and logistic regression models with grouped predictors." Statistics and Computing, 25:173-187.
Wang, H. and Leng, C. (2007). "Unified LASSO estimation by least squares approximation." Journal of the American Statistical Association, 102:1039-1048.
Yuan, M. and Lin, Y. (2006). Model selection and estimation in regression with grouped variables. Journal of the Royal Statistical Society: Series B (Statistical Methodology), 68: 49-67.
Examples
## Generate data
set.seed(12345)
X = matrix(runif(100*20), nrow=100)
n = dim(X)[1]
y = 5*sin(2*pi*X[,1])-5*cos(2*pi*X[,2]) + rnorm(n)
## Test data with 50 observations
X.test = matrix(runif(50*20), nrow=50)
## Fit sparse Gaussian generalized additive model to data with the MCP penalty
gam.mod = SFGAM(y, X, X.test, family="gaussian", penalty="gMCP")
## The model corresponding to the 75th tuning parameter
gam.mod$lambda[75]
gam.mod$classifications[,75] ## The covariate index is listed first
## Plot first function f_1(x_1) in 75th model
x1 = X.test[,1]
## Estimates of all 20 function evaluations on test data
f.hat = gam.mod$f.pred[[75]]
## Extract estimates of f_1
f1.hat = f.hat[,1]
## Plot X_1 against f_1(x_1)
plot(x1[order(x1)], f1.hat[order(x1)], xlab=expression(x[1]),
ylab=expression(f[1](x[1])))