detectChangePoint {cpm} | R Documentation |
Detect a Single Change Point in a Sequence
Description
This function is used to detect a single change point in a sequence of observations using the Change Point Model (CPM) framework for sequential (Phase II) change detection. The observations are processed in order, starting with the first, and a decision is made after each observation whether a change point has occurred. If a change point is detected, the function returns with no further observations being processed. A full description of the CPM framework can be found in the papers cited in the reference section.
For a fuller overview of this function including a description of the CPM framework and examples of how to use the various functions, please consult the package manual "Parametric and Nonparametric Sequential Change Detection in R: The cpm Package" available from www.gordonjross.co.uk
Usage
detectChangePoint(x, cpmType, ARL0=500, startup=20, lambda=NA)
Arguments
x |
A vector containing the univariate data stream to be processed. |
cpmType |
The type of CPM which is used. With the exception of the FET, these CPMs are all implemented in their two sided forms, and are able to detect both increases and decreases in the parameters monitored. Possible arguments are:
|
ARL0 |
Determines the |
startup |
The number of observations after which monitoring begins. No change points will be flagged during this startup period. This must be set to at least 20. |
lambda |
A smoothing parameter which is used to reduce the discreteness of the test statistic when using the FET CPM. See [Ross and Adams, 2012b] in the References section for more details on how this parameter is used. Currently the package only contains sequences of ARL0 thresholds corresponding to lambda=0.1 and lambda=0.3, so using other values will result in an error. If no value is specified, the default value will be 0.1. |
Value
x |
The sequence of observations which was processed. |
changeDetected |
TRUE if any |
detectionTime |
The observation after which the change point was detected, defined as the first observation after which |
changePoint |
The best estimate of the change point location. If the change is detected after the |
Ds |
The sequence of maximised |
Author(s)
Gordon J. Ross gordon@gordonjross.co.uk
References
Hawkins, D. , Zamba, K. (2005) – A Change-Point Model for a Shift in Variance, Journal of Quality Technology, 37, 21-31
Hawkins, D. , Zamba, K. (2005b) – Statistical Process Control for Shifts in Mean or Variance Using a Changepoint Formulation, Technometrics, 47(2), 164-173
Hawkins, D., Qiu, P., Kang, C. (2003) – The Changepoint Model for Statistical Process Control, Journal of Quality Technology, 35, 355-366.
Ross, G. J., Tasoulis, D. K., Adams, N. M. (2011) – A Nonparametric Change-Point Model for Streaming Data, Technometrics, 53(4)
Ross, G. J., Adams, N. M. (2012) – Two Nonparametric Control Charts for Detecting Arbitary Distribution Changes, Journal of Quality Technology, 44:102-116
Ross, G. J., Adams, N. M. (2013) – Sequential Monitoring of a Proportion, Computational Statistics, 28(2)
Ross, G. J., (2014) – Sequential Change Detection in the Presence of Unknown Parameters, Statistics and Computing 24:1017-1030
Ross, G. J., (2015) – Parametric and Nonparametric Sequential Change Detection in R: The cpm Package, Journal of Statistical Software, forthcoming
See Also
processStream, detectChangePointBatch
.
Examples
## Use a Student-t CPM to detect a mean shift in a stream of Gaussian
## random variables which occurs after the 100th observation
x <- c(rnorm(100,0,1),rnorm(1000,1,1))
detectChangePoint(x,"Student",ARL0=500,startup=20)
## Use a Mood CPM to detect a scale shift in a stream of Student-t
## random variables which occurs after the 100th observation
x <- c(rt(100,5),rt(100,5)*2)
detectChangePoint(x,"Mood",ARL0=500,startup=20)
## Use a FET CPM to detect a parameter shift in a stream of Bernoulli
##observations. In this case, the lambda parameter acts to reduce the
##discreteness of the test statistic.
x <- c(rbinom(100,1,0.2), rbinom(1000,1,0.5))
detectChangePoint(x,"FET",ARL0=500,startup=20,lambda=0.3)