Automatically conducts Liso fits

Share:

Description

An automatic CV and fitting wrapper for Liso.

Usage

1
liso(x, y, adaptive = TRUE, lambda = NULL, monotone = NULL, control=list(cv = NULL, liso = NULL ))

Arguments

x

Design matrix (without intercept).

y

Response value.

adaptive

If TRUE, conduct an adaptive liso type procedure. Otherwise just do the raw liso fits.

lambda

Value of the penalty parameter lambda. Default is NULL, specifying repeated cross-validations. Can be a vector, in which case each term gives the lambda for each step of the adaptive procedure.

monotone

Monotonicity pattern. Default is NULL, specifying a sign-discovery procedure, or non-monotone fitting if adaptive is FALSE.

control

Optional additional arguments to be passed to the cross-validation or backfitting, as a two field list. Each of control$cv, control$liso should be themselves a list, to be passed on as arguments to the relevant part of the procedure.

Details

This function is a convenient wrapper for the liso functions that automates the process of CV and fitting or adaptive fitting.

Value

A lisofit object is returned to represent the fit, which inherits from class multistep. plot, summary, print, `*` and other methods exist.

Author(s)

Zhou Fang

References

Zhou Fang and Nicolai Meinshausen (2009), Liso for High Dimensional Additive Isotonic Regression, available at http://blah.com

See Also

liso.backfit, cv.liso

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## Use the method on a simulated data set
set.seed(79)
n <- 100; p <- 50

## Simulate design matrix and response
x <- matrix(runif(n * p, min = -2.5, max = 2.5), nrow = n, ncol = p)
y <- scale(3 * (x[,1]> 0), scale=FALSE)  + x[,2]^3 + rnorm(n)

## Do a single prespecified fit 
fit1 = liso(x,y, FALSE, 4, TRUE)
plot(fit1, dims=1:2)

## Do a cross-validated fit constrained to be monotone increasing
fit2 = liso(x,y, FALSE, monotone=TRUE)
plot(fit2, dims=1:2)

## Do an adaptive fit constrained to be monotone increasing, with an increased tolerance for convergence in the crossvalidation
fit3 = liso(x,y, TRUE, monotone=TRUE, control=list(cv=list(tol.target=1e-2), liso=NULL))
plot(fit3, dims=1:2)

## Do a sign discovery adaptive fit, with 5 CV folds instead of 10
fit4 = liso(x,y, TRUE, control=list(cv=list(K=5), liso=NULL))
plot(fit4, dims=1:2)