fosr.vs: Function-on Scalar Regression with variable selection In refund: Regression with Functional Data

Description

Implements an iterative algorithm for function-on-scalar regression with variable selection by alternatively updating the coefficients and covariance structure.

Usage

 ```1 2 3 4 5 6 7 8``` ```fosr.vs( formula, data, nbasis = 10, method = c("ls", "grLasso", "grMCP", "grSCAD"), epsilon = 1e-05, max.iter_num = 100 ) ```

Arguments

 `formula` an object of class "`formula`": an expression of the model to be fitted. `data` a data frame that contains the variables in the model. `nbasis` number of B-spline basis functions used. `method` group variable selection method to be used ("grLasso", "grMCP", "grSCAD" refer to group Lasso, group MCP and group SCAD, respectively) or "`ls`" for least squares estimation. `epsilon` the convergence criterion. `max.iter_num` maximum number of iterations.

Value

A fitted fosr.vs-object, which is a list with the following elements:

 `formula` an object of class "`formula`": an expression of the model to be fitted. `coefficients` the estimated coefficient functions. `fitted.values` the fitted curves. `residuals` the residual curves. `vcov` the estimated variance-covariance matrix when convergence is achieved. `method` group variable selection method to be used or "`ls`" for least squares estimation.

Author(s)

Yakuan Chen yc2641@cumc.columbia.edu

References

Chen, Y., Goldsmith, J., and Ogden, T. (2016). Variable selection in function-on-scalar regression. Stat 5 88-101

`grpreg`
 ``` 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``` ```## Not run: set.seed(100) I = 100 p = 20 D = 50 grid = seq(0, 1, length = D) beta.true = matrix(0, p, D) beta.true[1,] = sin(2*grid*pi) beta.true[2,] = cos(2*grid*pi) beta.true[3,] = 2 psi.true = matrix(NA, 2, D) psi.true[1,] = sin(4*grid*pi) psi.true[2,] = cos(4*grid*pi) lambda = c(3,1) set.seed(100) X = matrix(rnorm(I*p), I, p) C = cbind(rnorm(I, mean = 0, sd = lambda[1]), rnorm(I, mean = 0, sd = lambda[2])) fixef = X%*%beta.true pcaef = C %*% psi.true error = matrix(rnorm(I*D), I, D) Yi.true = fixef Yi.pca = fixef + pcaef Yi.obs = fixef + pcaef + error data = as.data.frame(X) data\$Y = Yi.obs fit.fosr.vs = fosr.vs(Y~., data = data, method="grMCP") plot(fit.fosr.vs) ## End(Not run) ```