# spfda: Sparse Function-on-scalar Regression with Group Bridge... In spfda: Function-on-Scalar Regression with Group-Bridge Penalty

 spfda R Documentation

## Sparse Function-on-scalar Regression with Group Bridge Penalty

### Description

Function-on-scalar regression model, denote \mjseqnn as total number of observations, \mjseqnp the number of coefficients, \mjseqnK as the number of B-splines, \mjseqnT as total time points.

### Usage

spfda(
Y,
X,
lambda,
time = seq(0, 1, length.out = ncol(Y)),
nsp = "auto",
ord = 4,
alpha = 0.5,
W = NULL,
init = NULL,
max_iter = 50,
inner_iter = 50,
CI = FALSE,
...
)


### Arguments

 Y Numeric \mjseqnn \times T matrix, response function. X Numeric \mjseqnn \times p matrix, design matrix lambda Regularization parameter \mjseqn\gamma time Time domain, numerical length of \mjseqnT nsp Integer or 'auto', number of B-splines \mjseqnK; default is 'auto' ord B-spline order, default is 4; must be \mjseqn\geq 3 alpha Bridge parameter \mjseqn\alpha, default is 0.5 W A \mjseqnT \times T weight matrix or NULL (identity matrix); default is NULL init Initial \mjseqn\gamma; default is NULL max_iter Number of outer iterations inner_iter Number of \mjseqnADMM iterations (inner steps) CI Logical, whether to calculate theoretical confidence intervals ... Ignored

### Details

This function implements "Functional Group Bridge for Simultaneous Regression and Support Estimation" (https://arxiv.org/abs/2006.10163). The model estimates functional coefficients \mjseqn\beta(t) under model \mjsdeqny(t) = X\beta(t) + \epsilon(t) with B-spline basis expansion \mjsdeqn\beta(t) = \gamma B(t) + R(t), where \mjseqn R(t) is B-spline approximation error. The objective function \mjsdeqn \left\| (Y-X\gamma B)W \right\|_2^2 + \sum_j,m \left\| \gamma_j^T\mathbf1(B^t > 0) \right\|_1^\alpha. The input response variable is a matrix. If \mjseqny_i(t) are observed at different time points, please interpolate (e.g. kernel) before feeding in.

### Value

A spfda.model object (environment) with following elements:

B

B-spline basis functions used

error

Root Mean Square Error ('RMSE')

CI

Whether confidence intervals are calculated

gamma

B-spline coefficient \mjseqn\gamma_p \times K

generate_splines

Function to generate B-splines given time points

K

Number of B-spline basis functions

knots

B-spline knots used to fit the model

predict

Function to predict responses \mjseqn\beta(t) given new X and/or time points

raw

A list of raw variables

### Examples


dat <- spfda_simulate()
x <- dat$X y <- dat$Y

fit <- spfda(y, x, lambda = 5, CI = TRUE)

BIC(fit)

plot(fit, col = c("orange", "dodgerblue3", "darkgreen"),
main = "Fitted with 95% CI", aty = c(0, 0.5, 1), atx = c(0,0.2,0.8,1))
matpoints(fit$time, t(dat$env\$beta), type = 'l', col = 'black', lty = 2)
legend('topleft', c("Fitted", "Underlying"), lty = c(1,2))

print(fit)
coefficients(fit)



spfda documentation built on March 18, 2022, 6:57 p.m.