Skip to content

cran/scanCP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

scanCP: Multilayer Perceptron–Based Changepoint Detection

scanCP provides a fast, robust, and fully automated changepoint detection pipeline based on rolling multilayer perceptron (MLP) models. The method combines local and global structure learning, RSS-based detector statistics, ECDF thresholding, and local refinement to identify structural breaks in univariate signals.

The package is designed for signals with abrupt level shifts, smooth trends, and heterogeneous noise. It includes tools for detector construction, changepoint extraction, signal correction, and visualization.


Features

  • Rolling-window MLP fits (window sizes w and 2w)
  • RSS-based hybrid detector (ratio + difference)
  • Automatic threshold selection via spacing-curve analysis
  • Local refinement using k-means segmentation
  • Piecewise-constant correction of the signal
  • Optional global MLP smoother
  • Parallel computation for speed
  • Clean, modular API

Installation

From CRAN (when available)

install.packages("scanCP")

From GitHub (development version)

# install.packages("devtools")
devtools::install_github("armanazizyan/scanCP")

Quick Start

library(scanCP)

# Simulate a simple piecewise-constant signal
set.seed(123)
y <- c(
  rnorm(200, 0, 1),
  rnorm(200, 3, 1),
  rnorm(200, -2, 1),
  rnorm(200, 1, 1)
)

# Run the full changepoint pipeline
res <- scan_cp(y, w = 100)

# Extract changepoints
res$changepoints

# Plot the corrected signal
plot(y, type = "l", col = "gray70")
lines(res$corrected_signal, col = "blue", lwd = 2)
abline(v = res$changepoints, col = "red", lwd = 2)

Method Overview

scanCP detects changepoints using a hybrid detector statistic derived from rolling MLP fits:

  • A small-window MLP (size w) models local structure.
  • A large-window MLP (size 2w) models broader structure.
  • For each position, the detector combines:
    • a ratio of RSS values
    • a difference of RSS values

The detector is smoothed, thresholded using the ECDF or spacing-curve analysis, and refined using a local k-means split. The result is a set of precise changepoint locations and a corrected signal.


Customizing the MLP

All MLP hyperparameters can be controlled via mlp_control:

res <- scan_cp(
  y,
  w = 100,
  mlp_control = list(
    hl1 = 10,
    hl2 = 20,
    ep1 = 1500,
    act1 = "Act_Tanh"
  )
)

Documentation

Full function documentation is available via:

help(package = "scanCP")

License

GPL-2 License © Arman Azizyan


Contributing

Issues and pull requests are welcome at:

https://github.com/armanazizyan/scanCP

About

❗ This is a read-only mirror of the CRAN R package repository. scanCP — Deep Learning–Based Changepoint Detection with Local Neural Models

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages