MyNixOS website logo
Description

Bayesian Change-Point Detection for Process Monitoring with Fault Detection.

Bayes Watch fits an array of Gaussian Graphical Mixture Models to groupings of homogeneous data in time, called regimes, which are modeled as the observed states of a Markov process with unknown transition probabilities. In doing so, Bayes Watch defines a posterior distribution on a vector of regime assignments, which gives meaningful expressions on the probability of every possible change-point. Bayes Watch also allows for an effective and efficient fault detection system that assesses what features in the data where the most responsible for a given change-point. For further details, see: Alexander C. Murph et al. (2023) <arXiv:2310.02940>.
logo

The main method bayeswatch of this package fits an array of Gaussian Graphical Mixture Models to groupings of homogeneous data in time, called regimes, which we model as the observed states of a Markov process with unknown transition probabilities. While the primary goal of this model is to identify when there is a regime change, as this indicates a significant change in input data distribution, an attractive consequence of this approach is a rich collection of models fit to many different possible regimes. A fault detection system that leverages these model fits to describe the cause of a regime change is included in detect_faults. For further technical details on these methods, see the Citations section.

This repository is organized as a stand-alone R package. For questions, issues, or clarifications please reach out to Murph: [email protected]. Feel free to email any applications; we'd be happy to highlight them here.

Installation

You can install the latest version from CRAN using:

install.packages("bayesWatch")
require(bayesWatch)

Examples

Simulated data are available with a change-point imposed after day 5. This change-point only occurs for variables 3 and 4, with 4 seeing the more significant change.

data("full_data")
data("day_of_observations")
data("day_dts")

my_fit       = bayeswatch(full_data, day_of_observations, day_dts, 
                            iterations = 500, g.prior = 1, linger_parameter = 20, n.cores=3,
                            wishart_df_inital = 3, hyperprior_b = 3, lambda = 5)
                            MCMC chain running...
# 5->10->15->20->25->30->35->40->45->50->55->60->65->70->75->80->85->90->95->100
# [1] "MCMC sampling complete.  Performing fault detection calculations..."

print(my_fit)
#      bayesWatch object
# ----------------------------------
#   Time-point Change-point probability
# 1          1              0.000000000
# 2          2              0.000000000
# 3          3              0.000000000
# 4          4              0.023904382
# 5          5              0.972111554
# 6          6              0.055776892
# 7          7              0.003984064
# 8          8              0.011952191
# 9          9              0.000000000
plot(my_fit)

Once the regime vector is fit, we can print out the fault detection graphs.

detect_faults(my_fit)

Packages Required

ggplot2, gridExtra, parallel, Rcpp, Matrix, CholWishart, Hotelling, MASS, ess, stats, methods, BDgraph

Citation

Alexander C. Murph, Curtis B. Storlie, Patrick M. Wilson, Jonathan P. Williams, & Jan Hannig. (2023). Bayes Watch: Bayesian Change-point Detection for Process Monitoring with Fault Detection.

Metadata

Version

0.1.3

License

Unknown

Platforms (77)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows