spfda: Sparse Function-on-scalar Regression with Group Bridge...

View source: R/models.R

spfdaR Documentation

Sparse Function-on-scalar Regression with Group Bridge Penalty

Description

\loadmathjax

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.

Related to spfda in spfda...