aboutsummaryrefslogtreecommitdiff
path: root/man/path.sparsestep.Rd
blob: 94dc4d46ebff8aacaca07050d310e45267cdc46d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/path.sparsestep.R
\name{path.sparsestep}
\alias{path.sparsestep}
\title{Approximate path algorithm for the SparseStep model}
\usage{
path.sparsestep(x, y, max.depth = 10, gamma0 = 1000, gammastop = 1e-04,
  IMsteps = 2, gammastep = 2, normalize = TRUE, intercept = TRUE,
  force.zero = TRUE, threshold = 1e-07, XX = NULL, Xy = NULL,
  use.XX = TRUE, use.Xy = TRUE, quiet = FALSE)
}
\arguments{
\item{x}{matrix of predictors}

\item{y}{response}

\item{max.depth}{maximum recursion depth}

\item{gamma0}{starting value of the gamma parameter}

\item{gammastop}{stopping value of the gamma parameter}

\item{IMsteps}{number of steps of the majorization algorithm to perform for 
each value of gamma}

\item{gammastep}{factor to decrease gamma with at each step}

\item{normalize}{if TRUE, each variable is standardized to have unit L2 
norm, otherwise it is left alone.}

\item{intercept}{if TRUE, an intercept is included in the model (and not 
penalized), otherwise no intercept is included}

\item{force.zero}{if TRUE, absolute coefficients smaller than the provided 
threshold value are set to absolute zero as a post-processing step, 
otherwise no thresholding is performed}

\item{threshold}{threshold value to use for setting coefficients to 
absolute zero}

\item{XX}{The X'X matrix; useful for repeated runs where X'X stays the same}

\item{Xy}{The X'y matrix; useful for repeated runs where X'y stays the same}

\item{use.XX}{whether or not to compute X'X and return it}

\item{use.Xy}{whether or not to compute X'y and return it}

\item{quiet}{don't print search info while running}
}
\value{
A "sparsestep" S3 object is returned, for which print, predict, 
coef, and plot methods exist. It has the following items:
\item{call}{The call that was used to construct the model.}
\item{lambda}{The value(s) of lambda used to construct the model.}
\item{gamma0}{The gamma0 value of the model.}
\item{gammastop}{The gammastop value of the model}
\item{IMsteps}{The IMsteps value of the model}
\item{gammastep}{The gammastep value of the model}
\item{intercept}{Boolean indicating if an intercept was fitted in the 
model}
\item{force.zero}{Boolean indicating if a force zero-setting was 
performed.}
\item{threshold}{The threshold used for a forced zero-setting}
\item{beta}{The resulting coefficients stored in a sparse matrix format 
(dgCMatrix). This matrix has dimensions nvar x nlambda}
\item{a0}{The intercept vector for each value of gamma of length nlambda}
\item{normx}{Vector used to normalize the columns of x}
\item{meanx}{Vector of column means of x}
\item{XX}{The matrix X'X if use.XX was set to TRUE}
\item{Xy}{The matrix X'y if use.Xy was set to TRUE}
}
\description{
Fits the entire regularization path for SparseStep using a 
Golden Section search. Note that this algorithm is approximate, there is no 
guarantee that the solutions _between_ induced values of lambdas do not 
differ from those calculated. For instance, if solutions are calculated at 
\eqn{\lambda_{i}}{\lambda[i]} and \eqn{\lambda_{i+1}}{\lambda[i+1]}, this 
algorithm ensures that \eqn{\lambda_{i+1}}{\lambda[i+1]} has one more zero 
than the solution at \eqn{\lambda_{i}}{\lambda[i]} (provided the recursion 
depth is large enough). There is however no guarantee that there are no 
different solutions between \eqn{\lambda_{i}}{\lambda[i]} and 
\eqn{\lambda_{i+1}}{\lambda[i+1]}.  This is an ongoing research topic.

Note that this path algorithm is not faster than running the 
\code{sparsestep} function with the same \eqn{\lambda} sequence.
}
\examples{
x <- matrix(rnorm(100*20), 100, 20)
y <- rnorm(100)
pth <- path.sparsestep(x, y)

}
\author{
Gerrit J.J. van den Burg, Patrick J.F. Groenen, Andreas Alfons\cr
Maintainer: Gerrit J.J. van den Burg <gertjanvandenburg@gmail.com>
}
\references{
Van den Burg, G.J.J., Groenen, P.J.F. and Alfons, A. (2017).
 \emph{SparseStep: Approximating the Counting Norm for Sparse Regularization},
 arXiv preprint arXiv:1701.06967 [stat.ME]. 
 URL \url{https://arxiv.org/abs/1701.06967}.
}
\seealso{
\code{\link{coef}}, \code{\link{print}}, \code{\link{predict}}, 
\code{\link{plot}}, and \code{\link{sparsestep}}.
}