Computes the Matrix Profile and Profile Index for a range of query window sizes
a matrix
or a vector
. If a second time series is supplied it will be a join matrix
profile.
an int
. Minimum size of the sliding window.
an int
. Maximum size of the sliding window.
an int
. (Default is 50
). Size of the distance profile heap buffer
a numeric
. Size of the exclusion zone, based on window size (default is
1/2
). See details.
a logical
. (Default is TRUE
). If FALSE
all window sizes will be calculated using
STOMP instead of pruning. This is just for academic purposes.
an int
. See details. (Default is 2
).
Returns a Valmod
object, a list
with the matrix profile mp
, profile index pi
left and right matrix profile lmp
, rmp
and profile index lpi
, rpi
, best window size w
for each index and exclusion zone ez
. Additionally: evolution_motif
the best motif distance
per window size, and non-length normalized versions of mp
, pi
and w
: mpnn
, pinn
and wnn
.
This algorithm uses an exact algorithm based on a novel lower bounding technique, which is
specifically designed for the motif discovery problem. verbose
changes how much information
is printed by this function; 0
means nothing, 1
means text, 2
adds the progress bar,
3
adds the finish sound. exclusion_zone
is used to avoid trivial matches; if a query data
is provided (join similarity), this parameter is ignored.
Paper that implements skimp()
suggests that window_max / window_min > than 1.24 begins to
weakening pruning in valmod()
.
Linardi M, Zhu Y, Palpanas T, Keogh E. VALMOD: A Suite for Easy and Exact Detection of Variable Length Motifs in Data Series. In: Proceedings of the 2018 International Conference on Management of Data - SIGMOD '18. New York, New York, USA: ACM Press; 2018. p. 1757-60.
Other matrix profile computations:
mstomp_par()
,
scrimp()
,
stamp_par()
,
stomp_par()
,
tsmp()
mp <- valmod(mp_toy_data$data[1:200, 1], window_min = 30, window_max = 40, verbose = 0)
# \donttest{
ref_data <- mp_toy_data$data[, 1]
query_data <- mp_toy_data$data[, 2]
# self similarity
mp <- valmod(ref_data, window_min = 30, window_max = 40)
#>
#> Pruning [====================>--------] 73% at 39 it/s, elapsed: 0s, eta: 0s
#>
#> Pruning [====================>--------] 73% at 38 it/s, elapsed: 0s, eta: 0s
#>
#> DPs 1 [====================>--------] 73% at 36 it/s, elapsed: 0s, eta: 0s
#>
#> MASS [====================>--------] 73% at 35 it/s, elapsed: 0s, eta: 0s
#>
#> Re Check [===================>--------] 73% at 35 it/s, elapsed: 0s, eta: 0s
#>
#> Pruning [=======================>-----] 82% at 39 it/s, elapsed: 0s, eta: 0s
#>
#> DPs 5 [=======================>-----] 82% at 36 it/s, elapsed: 0s, eta: 0s
#>
#> MASS [=======================>-----] 82% at 36 it/s, elapsed: 0s, eta: 0s
#>
#> STOMP 2 [=======================>-----] 82% at 36 it/s, elapsed: 0s, eta: 0s
#>
#> STOMP 3 [=======================>-----] 82% at 35 it/s, elapsed: 0s, eta: 0s
#>
#> MASS [=======================>-----] 82% at 35 it/s, elapsed: 0s, eta: 0s
#>
#> STOMP 2 [=======================>-----] 82% at 35 it/s, elapsed: 0s, eta: 0s
#>
#> Re Check [======================>-----] 82% at 35 it/s, elapsed: 0s, eta: 0s
#>
#> Pruning [=========================>---] 91% at 39 it/s, elapsed: 0s, eta: 0s
#>
#> DPs 4 [=========================>---] 91% at 37 it/s, elapsed: 0s, eta: 0s
#>
#> MASS [=========================>---] 91% at 37 it/s, elapsed: 0s, eta: 0s
#>
#> STOMP 2 [=========================>---] 91% at 37 it/s, elapsed: 0s, eta: 0s
#>
#> MASS [=========================>---] 91% at 37 it/s, elapsed: 0s, eta: 0s
#>
#> MASS [=========================>---] 91% at 36 it/s, elapsed: 0s, eta: 0s
#>
#> Re Check [========================>---] 91% at 36 it/s, elapsed: 0s, eta: 0s
#>
#> Pruning [=============================] 100% at 40 it/s, elapsed: 0s, eta: 0s
#>
#> max_number_motifs_found 480
#> min_number_motifs_found 4
#> Finished in 0.28 secs
# join similarity
mp <- valmod(ref_data, query_data, window_min = 30, window_max = 40)
#>
#> Pruning [====================>--------] 73% at 38 it/s, elapsed: 0s, eta: 0s
#>
#> Pruning [=======================>-----] 82% at 41 it/s, elapsed: 0s, eta: 0s
#>
#> Pruning [=======================>-----] 82% at 40 it/s, elapsed: 0s, eta: 0s
#>
#> DPs 2 [=======================>-----] 82% at 39 it/s, elapsed: 0s, eta: 0s
#>
#> MASS [=======================>-----] 82% at 38 it/s, elapsed: 0s, eta: 0s
#>
#> STOMP 2 [=======================>-----] 82% at 38 it/s, elapsed: 0s, eta: 0s
#>
#> Re Check [======================>-----] 82% at 38 it/s, elapsed: 0s, eta: 0s
#>
#> Pruning [=========================>---] 91% at 42 it/s, elapsed: 0s, eta: 0s
#>
#> DPs 1 [=========================>---] 91% at 39 it/s, elapsed: 0s, eta: 0s
#>
#> MASS [=========================>---] 91% at 38 it/s, elapsed: 0s, eta: 0s
#>
#> Re Check [========================>---] 91% at 38 it/s, elapsed: 0s, eta: 0s
#>
#> Pruning [=============================] 100% at 42 it/s, elapsed: 0s, eta: 0s
#>
#> max_number_motifs_found 438
#> min_number_motifs_found 1
#> Finished in 0.27 secs
# }