Learn R Programming

jointseg (version 1.0.2)

segmentByGFLars: 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 n*p matrix of signals to be segmented

K

The number of change points to find

weights

A (n-1)*1 vector of weights for the weigthed group fused Lasso penalty. See Details.

epsilon

Values smaller than epsilon are considered null. Defaults to 1e-9.

verbose

A logical value: should extra information be output ? Defaults to FALSE.

Value

A list with elements:

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}\), a n-1 x K matrix

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.

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

Run this code
# NOT RUN {
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)

# }

Run the code above in your browser using DataLab