This function performs the windows-based variant of the Isolate-Detect methodology with the thresholding-based stopping rule in order to detect multiple change-points in the mean of a noisy data sequence, with noise that is Gaussian. It is particularly helpful for very long data sequences, as due to applying Isolate-Detect on moving windows, the computational time is reduced. See Details for a brief explanation of this approach and for the relevant literature reference.
win_pcm_th(xd, sigma = stats::mad(diff(xd)/sqrt(2)), thr_con = 1,
c_win = 3000, w_points = 3, l_win = 12000)A numeric vector containing the data in which you would like to find change-points.
A positive real number. It is the estimate of the standard deviation
of the noise in xd. The default value is the median absolute deviation of xd
computed under the assumption that the noise is independent and identically distributed
from the Gaussian distribution.
A positive real number with default value equal to 1. It is
used to define the threshold, which is equal to sigma * thr_con * sqrt(2 * log(T)),
where T is the length of the data sequence xd.
A positive integer with default value equal to 3000. It is the length
of each window for the data sequence in hand. Isolate-Detect will be applied
in segments of the form [(i-1) * c_win + 1, i * c_win], for \(i=1,2,...,K\),
where \(K\) depends on the length T of the data sequence.
A positive integer with default value equal to 3. It defines the distance between two consecutive end- or start-points of the right- or left-expanding intervals, respectively.
A positive integer with default value equal to 12000. If the length of
the data sequence is less than or equal to l_win, then the windows-based approach
will not be applied and the result will be obtained by the classical Isolate-Detect
methodology based on thresholding.
A numeric vector with the detected change-points.
The method that is implemented by this function is based on splitting the given
data sequence uniformly into smaller parts (windows), to which Isolate-Detect, based on the
threshold stopping rule (see pcm_th), is then applied. An idea of the computational
improvement that this structure offers over the classical Isolate-Detect in the case of large data
sequences is given in the supplement of ``Detecting multiple generalized change-points by isolating
single ones'', Anastasiou and Fryzlewicz (2018), preprint.
pcm_th, which is the function that win_pcm_th is based on. Also,
see ID_pcm and ID, which employ win_pcm_th. In addition,
see win_cplm_th for the case of detecting changes in the slope of a
piecewise-linear and continuous signal via thresholding.
# NOT RUN {
single.cpt <- c(rep(4,1000),rep(0,1000))
single.cpt.noise <- single.cpt + rnorm(2000)
cpt.single.th <- win_pcm_th(single.cpt.noise)
three.cpt <- c(rep(4,4000),rep(0,4000),rep(-4,4000),rep(1,4000))
three.cpt.noise <- three.cpt + rnorm(16000)
cpt.three.th <- win_pcm_th(three.cpt.noise)
# }
Run the code above in your browser using DataLab