segmentByGFLars {jointseg} | R Documentation |
Group fused Lars segmentation (low-level)
Description
Low-level function for multivariate fused Lars segmentation (GFLars)
Usage
segmentByGFLars(Y, K, weights = defaultWeights(nrow(Y)),
epsilon = 1e-09, verbose = FALSE)
Arguments
Y |
A |
K |
The number of change points to find |
weights |
A |
epsilon |
Values smaller than epsilon are considered null. Defaults to
|
verbose |
A |
Details
This function recrusively looks for the best candidate change point
according to group-fused LARS. This is a low-level function. It is generally
advised to use the wrapper doGFLars
which also works on data
frames, has a convenient argument stat
, and includes a basic
workaround for handling missing values.
See also jointSeg
for combining group fused LARS segmentation
with pruning by dynamic programming (pruneByDP
).
See PSSeg
for segmenting genomic signals from SNP arrays.
The default weights \sqrt{n/(i*(n-i))}
are calibrated as suggested by
Bleakley and Vert (2011). Using this calibration, the first breakpoint
maximizes the likelihood ratio test (LRT) statistic.
Value
A list with elements:
- bkp
A vector of
k
candidate change-point positions- lambda
The estimated lambda values for each change-point
- mean
A vector of length
p
, the mean signal per column- value
A
i x p
matrix of change-point values for the first i change-points- c
\hat{c}
, an-1 x K
matrix
Note
This implementation is derived from the MATLAB code by Vert and Bleakley: http://cbio.ensmp.fr/GFLseg.
Author(s)
Morgane Pierre-Jean and Pierre Neuvial
References
Bleakley, K., & Vert, J. P. (2011). The group fused lasso for multiple change-point detection. arXiv preprint arXiv:1106.4199.
Vert, J. P., & Bleakley, K. (2010). Fast detection of multiple change-points shared by many signals using group LARS. Advances in Neural Information Processing Systems, 23, 2343-2351.
See Also
PSSeg
, jointSeg
,
doGFLars
, pruneByDP
Examples
p <- 2
trueK <- 10
sim <- randomProfile(1e4, trueK, 1, p)
Y <- sim$profile
K <- 2*trueK
res <- segmentByGFLars(Y, K)
print(res$bkp)
print(sim$bkp)
plotSeg(Y, res$bkp)