Learn R Programming

refund (version 0.1-1)

fosr.vs: Function-on Scalar Regression with variable selection

Description

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

Usage

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:
  • formulaan object of class "formula": an expression of the model to be fitted.
  • coefficientsthe estimated coefficient functions.
  • fitted.valuesthe fitted curves.
  • residualsthe residual curves.
  • vcovthe estimated variance-covariance matrix when convergence is achieved.
  • methodgroup variable selection method to be used or "ls" for least squares estimation.

References

Chen, Y., Goldsmith, J., and Ogden, T. (under review). Variable selection in function-on-scalar regression.

See Also

grpreg

Examples

Run this code
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)

Run the code above in your browser using DataLab