Title: | Linear Trend Segmentation |
Version: | 1.3.0 |
Maintainer: | Hyeyoung Maeng <hyeyoung.maeng@durham.ac.uk> |
Description: | Performs the detection of linear trend changes for univariate time series by implementing the bottom-up unbalanced wavelet transformation proposed by H. Maeng and P. Fryzlewicz (2023). The estimated number and locations of the change-points are returned with the piecewise-linear estimator for signal. |
License: | GPL-2 | GPL-3 [expanded from: GPL] |
Encoding: | UTF-8 |
RoxygenNote: | 7.2.3 |
NeedsCompilation: | no |
Repository: | CRAN |
Packaged: | 2023-08-24 10:59:33 UTC; hyeyoung |
Author: | Hyeyoung Maeng [aut, cre], Piotr Fryzlewicz [aut] |
Date/Publication: | 2023-08-24 11:20:02 UTC |
trendsegmentR: Linear Trend Segmentation
Description
Performs the detection of linear trend changes for univariate time series by implementing the bottom-up unbalanced wavelet transformation proposed by H. Maeng and P. Fryzlewicz (2023). The estimated number and locations of the change-points are returned with the piecewise-linear estimator for signal.
Author(s)
Maintainer: Hyeyoung Maeng hyeyoung.maeng@durham.ac.uk
Authors:
Piotr Fryzlewicz p.fryzlewicz@lse.ac.uk
Tail-Greedy Unbalanced Wavelet (TGUW) transformation of a vector
Description
Performs the bottom-up unbalanced wavelet decomposition. This function is used inside trendsegment
.
Details of the TGUW transformation can be found in H. Maeng and P. Fryzlewicz (2023), Detecting linear trend changes in data sequences.
Usage
TGUW(x, p = 0.04)
Arguments
x |
An input vector to be decomposed. |
p |
Proportion of all possible remaining merges which specifies the number of merges allowed in a single pass over the data. The default is 0.04. |
Value
A list with the followings:
x |
The original input vector |
n |
The length of |
twotogether |
A vector indicating locations of the detail coefficients returned by Type 3 merges (merging two sets of paired smooth coefficients). This is used in |
merging.hist |
An array of dimension 4 by 3 by |
ts.coeffs |
The transformed |
Author(s)
Hyeyoung Maeng hyeyoung.maeng@durham.ac.uk, Piotr Fryzlewicz p.fryzlewicz@lse.ac.uk
See Also
trendsegment
, thresholding
, invTGUW
Examples
x <- c(1:10, rep(5,9))
n <- length(x)
x <- x + rnorm(n)
tguwfit <- TGUW(x)
tguwfit
Inverse Tail-Greedy Unbalanced Wavelet (TGUW) transformation
Description
This function is used inside trendsegment
and performs the inverse TGUW transformation by undoing the orthonormal transformation of TGUW
in reverse order.
Details of the inverse TGUW transformation can be found in H. Maeng and P. Fryzlewicz (2023), Detecting linear trend changes in data sequences.
Usage
invTGUW(ts.obj)
Arguments
ts.obj |
A list returned by |
Value
ts.obj |
The modified ts.obj is the result of the inverse TGUW transformation and |
Author(s)
Hyeyoung Maeng hyeyoung.maeng@durham.ac.uk, Piotr Fryzlewicz p.fryzlewicz@lse.ac.uk
See Also
trendsegment
, TGUW
, thresholding
Examples
x <- c(1:10, rep(5,9))
n <- length(x)
x <- x + rnorm(n)
tguwfit <- TGUW(x)
th.const <- 1.3
lambda <- (stats::mad(diff(diff(x)))/sqrt(6)) * sqrt(2 * log(n)) * th.const
thrfit <- thresholding(ts.obj = tguwfit, lambda = lambda, minsegL = 5, bal = 0, connected = TRUE)
invfit <- invTGUW(ts.obj = thrfit)
invfit
Noise reduction from the sequence of detail coefficients returned by the Tail-Greedy Unbalanced Wavelet (TGUW) transformation
Description
This function is used inside trendsegment
and performs the thresholding of the detail coefficients returned by the Tail-Greedy Unbalanced Wavelet (TGUW) transformation.
The denoising is achieved by a prespecified threshold in a "connected" way in that it prunes the branches if and only if
the detail coefficient itself and all of its children coefficients are below some thresholds in its size. Also, the
"two together" rule is applied to any paired detail coefficients returned by Type 3
merging (merging two sets of paired smooth coefficients) in the sense that both detail coefficients should be survived if at least one of their size is over threshold. For details, see H. Maeng and P. Fryzlewicz (2023), Detecting linear trend changes in data sequences.
Usage
thresholding(ts.obj, lambda, minsegL, bal = 0, connected = FALSE)
Arguments
ts.obj |
A list returned by |
lambda |
The magnitude of the threshold. It has a form of |
minsegL |
The minimum segment length of estimated signal returned by |
bal |
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. Only triplets which satisfy this balancedness condition survives in denoising. Point anomalies can be detected only if |
connected |
If connected=TRUE, the thresholding puts the connected rule above the |
Value
ts.obj |
The modified ts.obj containing zero detail coefficients in the |
Author(s)
Hyeyoung Maeng hyeyoung.maeng@durham.ac.uk, Piotr Fryzlewicz p.fryzlewicz@lse.ac.uk
See Also
Examples
x <- c(1:10, rep(5,9))
n <- length(x)
x <- x + rnorm(n)
tguwfit <- TGUW(x)
th.const <- 1.3
lambda <- (stats::mad(diff(diff(x)))/sqrt(6)) * sqrt(2 * log(n)) * th.const
thrfit <- thresholding(ts.obj = tguwfit, lambda = lambda, minsegL = 5, bal = 0, connected = FALSE)
thrfit
Detecting linear trend changes for univariate time series
Description
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
).
Usage
trendsegment(
x,
indep = FALSE,
th.const = krt.hvt(x)$thr,
p = 0.04,
bal = 0,
minsegL = floor(0.9 * log(length(x))),
continuous = FALSE,
connected = FALSE
)
Arguments
x |
A data vector to be examined for change-point detection. |
indep |
If x is known to be independent over time, let indep=TRUE, otherwise the default is indep=FALSE. |
th.const |
Robust thresholding parameter used in |
p |
Proportion of all possible remaining merges which specifies the number of merges allowed in a single pass over the data. This is used in |
bal |
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. |
minsegL |
The minimum segment length of estimated signal returned by |
continuous |
If continuous=TRUE, the estimated signal returned by |
connected |
If connected=TRUE, the |
Details
The algorithm is described in H. Maeng and P. Fryzlewicz (2023), Detecting linear trend changes in data sequences.
Value
A list with the following.
x |
The original input vector |
est |
The estimated piecewise-linear signal of |
no.of.cpt |
The estimated number of change-points. |
cpt |
The estimated locations of change-points. |
Author(s)
Hyeyoung Maeng hyeyoung.maeng@durham.ac.uk, Piotr Fryzlewicz p.fryzlewicz@lse.ac.uk
See Also
Examples
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)