StatisticalTestMeanAdjustedCUSUM

class StatisticalTestMeanAdjustedCUSUM(self: visp._visp.core.StatisticalTestMeanAdjustedCUSUM, h: float = 4.f, k: float = 1.f, nbPtsForStats: int = 30)

Bases: StatisticalTestAbstract

Class that permits to perform a mean adjusted Cumulative Sum test.

The mean adjusted CUSUM test is designed to detect drift in the mean \(\mu\) of an observed signal \(s(t)\) .

Be \(\delta\) the amplitude of the mean drift we want to detect. Two test signals are computed at each iteration:

\(S_-(t) = max\{0, S_-(t-1) - (s(t) - \mu) - \frac{\delta}{2}\}\)

\(S_+(t) = max\{0, S_+(t-1) + (s(t) - \mu) - \frac{\delta}{2}\}\)

A downward alarm is raised if: \(S_-(t) >= thresh\)

An upward alarm is raised if: \(S_+(t) >= thresh\)

To ease the understanding of the detection threshold \(\delta\) and the alarm threshold \(thresh\) , ViSP implemented these two thresholds as a multiple of the standard deviation of the signal \(\sigma\) :

\(\delta = k \sigma , k \in R^{+*}\)

\(thresh = h \sigma , h \in R^{+*}\)

To have an Average Run Lenght of ~374 samples for a detection threshold \(\delta\) of 1 standard deviation \(\sigma\) , set \(h\) to 4.76 .

To detect only downward drifts of the input signal \(s(t)\) use testDownwardMeanDrift() .To detect only upward drifts in \(s(t)\) use testUpwardMeanDrift() . To detect both, downward and upward drifts use testDownUpwardMeanDrift() .

Construct a new vpStatisticalTestMeanAdjustedCUSUM object.

Parameters:
h

The alarm factor that permits to determine when the process is out of control from the standard deviation of the signal.

k

The detection factor that permits to determine the slack of the CUSUM test, i.e. the minimum value of the jumps we want to detect, from the standard deviation of the signal.

nbPtsForStats

The number of samples to use to compute the mean and the standard deviation of the signal to monitor.

Methods

__init__

Construct a new vpStatisticalTestMeanAdjustedCUSUM object.

getDelta

Get the slack of the CUSUM test, i.e. amplitude of mean shift we want to be able to detect.

getH

Get the alarm factor.

getK

Get the detection factor.

getTestSignalMinus

Get the latest value of the test signal for downward jumps of the mean.

getTestSignalPlus

Get the latest value of the test signal for upward jumps of the mean.

init

Overloaded function.

setDelta

Set the slack of the CUSUM test, i.e. the minimum value of the jumps we want to detect.

setLimits

Set the upward and downward jump limits.

Inherited Methods

getAvailableMeanDriftType

Get the list of available vpMeanDriftType objects that are handled.

setMinStdev

Set the minimum value of the standard deviation that is expected.

testUpwardMeanDrift

Test if an upward mean drift occurred according to the new value of the signal.

MEAN_DRIFT_DOWNWARD

MEAN_DRIFT_NONE

setNbSamplesForStat

Set the number of samples required to compute the mean and standard deviation of the signal and allocate the memory accordingly.

getStdev

Get the standard deviation used as reference.

testDownUpwardMeanDrift

Test if a downward or an upward mean drift occurred according to the new value of the signal.

MeanDriftType

Enum that indicates if a drift of the mean occurred.

vpMeanDriftTypeToString

MEAN_DRIFT_BOTH

MEAN_DRIFT_UNKNOWN

vpMeanDriftTypeFromString

Cast a string into a vpMeanDriftType .

getLimits

Get the upper and lower limits of the test signal.

MEAN_DRIFT_UPWARD

MEAN_DRIFT_COUNT

testDownwardMeanDrift

Test if a downward mean drift occurred according to the new value of the signal.

print

getMean

Get the mean used as reference.

Operators

__doc__

__init__

Construct a new vpStatisticalTestMeanAdjustedCUSUM object.

__module__

Attributes

MEAN_DRIFT_BOTH

MEAN_DRIFT_COUNT

MEAN_DRIFT_DOWNWARD

MEAN_DRIFT_NONE

MEAN_DRIFT_UNKNOWN

MEAN_DRIFT_UPWARD

__annotations__

class MeanDriftType(self, value: int)

Bases: pybind11_object

Enum that indicates if a drift of the mean occurred.

Values:

  • MEAN_DRIFT_NONE: No mean drift occurred

  • MEAN_DRIFT_DOWNWARD: A downward drift of the mean occurred.

  • MEAN_DRIFT_UPWARD: An upward drift of the mean occurred.

  • MEAN_DRIFT_BOTH: Both an aupward and a downward drifts occurred.

  • MEAN_DRIFT_COUNT

  • MEAN_DRIFT_UNKNOWN

__and__(self, other: object) object
__eq__(self, other: object) bool
__ge__(self, other: object) bool
__getstate__(self) int
__gt__(self, other: object) bool
__hash__(self) int
__index__(self) int
__init__(self, value: int)
__int__(self) int
__invert__(self) object
__le__(self, other: object) bool
__lt__(self, other: object) bool
__ne__(self, other: object) bool
__or__(self, other: object) object
__rand__(self, other: object) object
__ror__(self, other: object) object
__rxor__(self, other: object) object
__setstate__(self, state: int) None
__xor__(self, other: object) object
property name : str
__init__(self: visp._visp.core.StatisticalTestMeanAdjustedCUSUM, h: float = 4.f, k: float = 1.f, nbPtsForStats: int = 30)

Construct a new vpStatisticalTestMeanAdjustedCUSUM object.

Parameters:
h

The alarm factor that permits to determine when the process is out of control from the standard deviation of the signal.

k

The detection factor that permits to determine the slack of the CUSUM test, i.e. the minimum value of the jumps we want to detect, from the standard deviation of the signal.

nbPtsForStats

The number of samples to use to compute the mean and the standard deviation of the signal to monitor.

static getAvailableMeanDriftType(prefix: str = <, sep: str =, suffix: str = >) str

Get the list of available vpMeanDriftType objects that are handled.

Parameters:
prefix

The prefix that should be placed before the list.

sep

The separator between each element of the list.

suffix

The suffix that should terminate the list.

Returns:

std::string The list of handled type of process tests, presented as a string.

getDelta(self) float

Get the slack of the CUSUM test, i.e. amplitude of mean shift we want to be able to detect.

Returns:

float The slack of the CUSUM test.

getH(self) float

Get the alarm factor.

Returns:

float The alarm factor.

getK(self) float

Get the detection factor.

Returns:

float The detection factor.

getLimits(self, limitDown: float, limitUp: float) tuple[float, float]

Get the upper and lower limits of the test signal.

Parameters:
limitDown: float

The lower limit.

limitUp: float

The upper limit.

Returns:

A tuple containing:

  • limitDown: The lower limit.

  • limitUp: The upper limit.

getMean(self) float

Get the mean used as reference.

Returns:

float The mean.

getStdev(self) float

Get the standard deviation used as reference.

Returns:

float The standard deviation.

getTestSignalMinus(self) float

Get the latest value of the test signal for downward jumps of the mean.

Returns:

float Its latest value.

getTestSignalPlus(self) float

Get the latest value of the test signal for upward jumps of the mean.

Returns:

float Its latest value.

init(*args, **kwargs)

Overloaded function.

  1. init(self: visp._visp.core.StatisticalTestMeanAdjustedCUSUM, h: float, k: float, nbPtsForStats: int) -> None

(Re)Initialize the mean adjusted CUSUM test.

Parameters:
h

The alarm factor that permits to determine when the process is out of control from the standard deviation of the signal.

k

The detection factor that permits to determine the slack of the CUSUM test, i.e. the minimum value of the jumps we want to detect, from the standard deviation of the signal.

nbPtsForStats

The number of points to use to compute the mean and the standard deviation of the signal

  1. init(self: visp._visp.core.StatisticalTestMeanAdjustedCUSUM, delta: float, limitDown: float, limitUp: float, nbPtsForStats: int) -> None

Initialize the mean adjusted CUSUM test.

Parameters:
delta

The slack of the CUSUM test, i.e. the minimum value of the jumps we want to detect.

limitDown

The lower limit of the CUSUM test, for the downward jumps.

limitUp

The upper limit of the CUSUM test, for the upward jumps.

nbPtsForStats

The number of points to use to compute the mean and the standard deviation of the signal to monitor.

  1. init(self: visp._visp.core.StatisticalTestMeanAdjustedCUSUM, h: float, k: float, mean: float, stdev: float) -> None

Initialize the mean adjusted CUSUM test.

Parameters:
h

The alarm factor that permits to determine when the process is out of control from the standard deviation of the signal.

k

The detection factor that permits to determine the slack of the CUSUM test, i.e. the minimum value of the jumps we want to detect, from the standard deviation of the signal.

mean

The expected mean of the signal to monitor.

stdev

The expected standard deviation of the signal to monitor.

  1. init(self: visp._visp.core.StatisticalTestMeanAdjustedCUSUM, delta: float, limitDown: float, limitUp: float, mean: float, stdev: float) -> None

Initialize the mean adjusted CUSUM test.

Parameters:
delta

The slack of the CUSUM test, i.e. the minimum value of the jumps we want to detect.

limitDown

The lower limit of the CUSUM test, for the downward jumps.

limitUp

The upper limit of the CUSUM test, for the upward jumps.

mean

The expected mean of the signal to monitor.

stdev

The expected standard deviation of the signal to monitor.

  1. init(self: visp._visp.core.StatisticalTestAbstract) -> None

(Re)Initialize the algorithm.

static print(type: visp._visp.core.StatisticalTestAbstract.MeanDriftType) None
setDelta(self, delta: float) None

Set the slack of the CUSUM test, i.e. the minimum value of the jumps we want to detect.

Parameters:
delta: float

The slack of the CUSUM test.

setLimits(self, limitDown: float, limitUp: float) None

Set the upward and downward jump limits.

Parameters:
limitDown: float

The limit for the downward jumps.

limitUp: float

The limit for the upward jumps.

setMinStdev(self, stdevmin: float) None

Set the minimum value of the standard deviation that is expected. The computed standard deviation cannot be lower this value if set.

Parameters:
stdevmin: float

The minimum value of the standard deviation that is expected.

setNbSamplesForStat(self, nbSamples: int) None

Set the number of samples required to compute the mean and standard deviation of the signal and allocate the memory accordingly.

Parameters:
nbSamples: int

The number of samples we want to use.

testDownUpwardMeanDrift(self, signal: float) visp._visp.core.StatisticalTestAbstract.MeanDriftType

Test if a downward or an upward mean drift occurred according to the new value of the signal.

Note

See testDownwardMeanDrift() testUpwardMeanDrift()

Parameters:
signal: float

The new value of the signal.

Returns:

vpMeanDriftType The type of mean drift that occurred.

testDownwardMeanDrift(self, signal: float) visp._visp.core.StatisticalTestAbstract.MeanDriftType

Test if a downward mean drift occurred according to the new value of the signal.

Note

See testUpwardMeanDrift()

Parameters:
signal: float

The new value of the signal.

Returns:

vpMeanDriftType The type of mean drift that occurred.

testUpwardMeanDrift(self, signal: float) visp._visp.core.StatisticalTestAbstract.MeanDriftType

Test if an upward mean drift occurred according to the new value of the signal.

Note

See testDownwardMeanDrift()

Parameters:
signal: float

The new value of the signal.

Returns:

vpMeanDriftType The type of mean drift that occurred.

static vpMeanDriftTypeFromString(name: str) visp._visp.core.StatisticalTestAbstract.MeanDriftType

Cast a string into a vpMeanDriftType .

Parameters:
name: str

The name of the mean drift.

Returns:

vpMeanDriftType The corresponding vpMeanDriftType .

static vpMeanDriftTypeToString(type: visp._visp.core.StatisticalTestAbstract.MeanDriftType) str