cv.lb {Libra} | R Documentation |
CV for lb
Description
Cross-validation method to tuning the parameter t for lb.
Usage
cv.lb(
X,
y,
kappa,
alpha,
K = 5,
tlist,
nt = 100,
trate = 100,
family = c("gaussian", "binomial", "multinomial"),
group = FALSE,
intercept = TRUE,
normalize = TRUE,
plot.it = TRUE,
se = TRUE,
...
)
Arguments
X |
An n-by-p matrix of predictors |
y |
Response Variable |
kappa |
The damping factor of the Linearized Bregman Algorithm that is defined in the reference paper. See details. |
alpha |
Parameter in Linearized Bregman algorithm which controls the step-length of the discretized solver for the Bregman Inverse Scale Space. See details. |
K |
Folds number for CV. Default is 5. |
tlist |
Parameters t along the path. |
nt |
Number of t. Used only if tlist is missing. Default is 100. |
trate |
tmax/tmin. Used only if tlist is missing. Default is 100. |
family |
Response type |
group |
Whether to use a group penalty, Default is FALSE. |
intercept |
If TRUE, an intercept is included in the model (and not penalized), otherwise no intercept is included. Default is TRUE. |
normalize |
if TRUE, each variable is scaled to have L2 norm square-root n. Default is TRUE. |
plot.it |
Plot it? Default is TRUE |
se |
Include standard error bands? Default is TRUE |
... |
Additonal arguments passing to lb |
Details
K-fold cross-validation method is used to tuning the parameter t for ISS. Mean square error is used for linear model. Miss-classification error is used for binomial and multinomial model.
Value
A list is returned. The list contains a vector of parameter t, crossvalidation error cv.error, and the estimated standard deviation for it cv.sd
Author(s)
Feng Ruan, Jiechao Xiong and Yuan Yao
References
Ohser, Ruan, Xiong, Yao and Yin, Sparse Recovery via Differential Inclusions, https://arxiv.org/abs/1406.7728
Examples
#Examples in the reference paper
library(MASS)
n = 200;p = 100;k = 30;sigma = 1
Sigma = 1/(3*p)*matrix(rep(1,p^2),p,p)
diag(Sigma) = 1
A = mvrnorm(n, rep(0, p), Sigma)
u_ref = rep(0,p)
supp_ref = 1:k
u_ref[supp_ref] = rnorm(k)
u_ref[supp_ref] = u_ref[supp_ref]+sign(u_ref[supp_ref])
b = as.vector(A%*%u_ref + sigma*rnorm(n))
cv.lb(A,b,10,1/20,intercept = FALSE,normalize = FALSE)
#Simulated data, binomial case
X <- matrix(rnorm(500*100), nrow=500, ncol=100)
alpha <- c(rep(1,30), rep(0,70))
y <- 2*as.numeric(runif(500)<1/(1+exp(-X %*% alpha)))-1
cv.lb(X,y,kappa=5,alpha=1,family="binomial",
intercept=FALSE,normalize = FALSE)