% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/scan_cp_multi_async.R
\name{scan_cp_multi_async}
\alias{scan_cp_multi_async}
\title{Asynchronous Multivariate Changepoint Detection}
\usage{
scan_cp_multi_async(
  Y,
  w = 100,
  ma_window = w,
  threshold = "auto",
  threshold_tails = c(0.6, 0.95),
  min_cp_distance = 2 * w,
  margin = floor(w/2),
  use_abs_det = TRUE,
  mlp_control = list()
)
}
\arguments{
\item{Y}{Numeric matrix (n × p). Each column is a signal dimension.}

\item{w}{Integer. Window size for rolling MLPs and detector construction.
Defaults to 100.}

\item{ma_window}{Integer. Moving-average smoothing window for the detector.
Defaults to \code{w}.}

\item{threshold}{Either \code{"auto"} (default) or a numeric ECDF threshold.}

\item{threshold_tails}{Numeric vector of length 2 giving tail cutoff values
for automatic thresholding.
Defaults to \code{c(0.6, 0.95)}.}

\item{min_cp_distance}{Integer. Minimum distance between detected
changepoints. Defaults to \code{2 * w}.}

\item{margin}{Integer. Local refinement margin. Defaults to \code{floor(w/2)}.}

\item{use_abs_det}{Logical. Whether to use \code{abs(detector)} before
smoothing. Defaults to \code{TRUE}.}

\item{mlp_control}{List of parameters passed to \code{\link{fit_mlp}}.}
}
\value{
A named list of length \code{p}, where each element is the output
of \code{\link{scan_cp}} applied to the corresponding column of \code{Y}.
}
\description{
Applies the univariate \code{\link{scan_cp}} pipeline independently to
each column of a multivariate signal. Each dimension is processed
separately (asynchronously), producing a list of univariate results.
}
\examples{
\donttest{
  Y <- cbind(
    x1 = c(rnorm(200), rnorm(200, 3)),
    x2 = c(rnorm(200), rnorm(200, -2))
  )

  res <- scan_cp_multi_async(Y, w = 100)
  res$x1$changepoints
  res$x2$changepoints
}

}
