Given a likelihood provided by the user, this package applies it to a given matrix dataset in order to find change points in the data that maximize the sum of the likelihoods of all the segments.
This package provides a handful of algorithms with different time complexities and assumption compromises so the user is able to choose the best one for the problem at hand.
Install the package from CRAN:
Sample code using the package to identify change points in the segments’ averages:
require(segmentr)
#> Loading required package: segmentr
make_segment <- function(n, p) matrix(rbinom(100 * n, 1, p), nrow = 100)
data <- cbind(make_segment(5, 0.1), make_segment(10, 0.9), make_segment(2, 0.1))
mean_lik <- function(X) abs(mean(X) - 0.5) * ncol(X)^2
segment(data, likelihood = mean_lik, algorithm = "hieralg")
#> Segments (total of 3):
#>
#> 1:5
#> 6:15
#> 16:17
For an in depth step-by-step, please check vignette("segmentr")
.
This package is part of a Master’s degree research thesis at IME-USP, with Florencia Leonardi as thesis adviser.
The algorithms in this package are based on a paper by Bruno M. de Castro and Florencia Leonardi.
The berlin
sample dataset was provided by © Deutscher Wetterdienst and put together with the rdwd
package by Berry Boessenkool. Check make_berlin.R
for the script that builds the dataset.