The main function of the package trendsegmentR. This function estimates the number and locations of change-points in linear trend of noisy data. The estimated change-points may contain point anomalies (segments including only one data point) if any. It also returns the estimated signal, the best linear fit for each segment between a pair of adjacent change-points. The algorithm includes three steps, Tail-Greedy Unbalanced Wavelet (TGUW) transform (TGUW), thresholding (thresholding) and inverse TGUW transform (invTGUW).
trendsegment(
x,
indep = FALSE,
th.const = NULL,
p = 0.04,
bal = 0,
minsegL = floor(0.9 * log(length(x))),
continuous = FALSE,
connected = FALSE
)A list with the following.
The original input vector x.
The estimated piecewise-linear signal of x.
The estimated number of change-points.
The estimated locations of change-points.
A data vector to be examined for change-point detection.
If x is known to be independent over time, let indep=TRUE, otherwise the default is indep=FALSE.
Robust thresholding parameter used in thresholding. If nothing is given, the default is obtained inside the function trendsegment by considering sample kurtosis and long run standard deviation. The exact magnitude of the threshold also depends on sigma which is estimated by Median Absolute Deviation (MAD) method under the i.i.d. Gaussian noise assumption.
Proportion of all possible remaining merges which specifies the number of merges allowed in a single pass over the data. This is used in TGUW and the default is 0.04.
The minimum ratio of the length of the shorter region to the length of the entire merging region especially when the merges of Type 2 (merging one initial and a paired smooth coefficient) or of Type 3 (merging two sets of (paired) smooth coefficients) are performed. The default is set to 0.
The minimum segment length of estimated signal returned by trendsegment. The default is set to sigma * log(n) for the noise which is possibly dependent and/or non-Gaussian.
If continuous=TRUE, the estimated signal returned by trendsegment is continuous at change-points, otherwise discontinuous at change-points. The default is set to FALSE.
If connected=TRUE, the trendsegment algorithm puts the connected rule above the minsegL, otherwise it makes keeping the minsegL a priority. The default is set to FALSE.
Hyeyoung Maeng hyeyoung.maeng@durham.ac.uk, Piotr Fryzlewicz p.fryzlewicz@lse.ac.uk
The algorithm is described in H. Maeng and P. Fryzlewicz (2023), Detecting linear trend changes in data sequences.
TGUW, thresholding, invTGUW
x <- c(rep(0,100), seq(0, 4, length.out = 100), rep(3, 100), seq(3, -1, length.out=99))
n <- length(x)
x <- x + rnorm(n)
tsfit <- trendsegment(x = x)
tsfit
plot(x, type = "b", ylim = range(x, tsfit$est))
lines(tsfit$est, col=2, lwd=2)
abline(v=tsfit$cpt, col=3, lty=2, lwd=2)
Run the code above in your browser using DataLab