Can any one explain me how can I choose the pen.value and penalty for the single change point detection i.e., for At Most One Change (AMOC). Is there any books that contains rich explanation of these parameters?. I'm not able to figure out when exactly to use what. It would be helpful if you explain it with an example. what is the diff between the cpt.mean, cpt.var, cpt.meanvar(same confusion when to use what?). I'm getting diff diff change points and in that how can I found the most desirable one?. Help me out of these

Thanks in advance

  • $\begingroup$ Welcome to the Cross-Validation site. Would you be so kind as to supply details as to which computer language the AMOC routines that you refer to originate and perhaps links to documentation and/or to original papers that you are referring to? That might allow the reader to become interested in reading, commenting on, and/or answering your question. $\endgroup$ – Carl Oct 3 '16 at 14:20

It appears as though you are using the changepoint package in R from the function names mentioned and the AMOC definition. If this is correct then the help files for the package give references:


gives the following references:

 Change in Normal mean: Hinkley, D. V. (1970) Inference About the Change-Point
 in a Sequence of Random Variables, Biometrika 57, 1–17
 CUSUM Test: M. Csorgo, L. Horvath (1997) Limit Theorems in Change-Point Analysis, Wiley

I acknowledge that it isn't 100% clear that AMOC should use these references. If you have test.stat="Normal" which is the default then the first Hinkley reference is the one you want. If you use test.stat="CUSUM" then you want the second reference.

The majority of changepoint techniques start with AMOC or a single changepoint. The changepoint package was designed more for multiple changes but allows single changes using AMOC.

The above covers the reference part of your question. For the "what pen.value option should I use" that is like asking "who is the best guitarist?", the answer depends on personal experience.

For AMOC you have the option of using asymptotic penalty values, for example, if you want to be 95% confident that a changepoint has occurred then you would use penalty="Asymptotic", pen.value=0.05. If you are happy with any of the other penalty choices i.e. MBIC (default), BIC, SIC, AIC, Hannan-Quinn then you don't need to specify pen.value as it is taken care of by setting the penalty to be one of the options, e.g. cpt.mean(data,penalty='SIC') would be valid if you wanted to use the SIC penalty.

If you don't like any of the options then you can set your own penalty but you have to select a value that works for your problem - sadly it is still an open research question as to which penalty is best.

Finally, you will get different answers when using the different cpt.mean, cpt.var, cpt.meanvar functions as they are doing different things. cpt.mean looks for a change in the mean value only, assuming a constant variance. cpt.var looks for a change in the variance only, assuming a constant mean. cpt.meanvar looks for a change in both the mean and variance.

If you haven't read the paper associated to the package then I suggest you read it as it gives several examples demonstrating how to change the penalties and also how to use the 3 different functions.

URL to paper

  • $\begingroup$ THANKS A LOT for your precious time. Still I have doubts with test.stat as you suggested I will go through those ref's. One more query, is the change point that we are getting is most persistent and significant ?. $\endgroup$ – Satya Oct 4 '16 at 12:42
  • $\begingroup$ If you have or suspect multiple changes may be present then you should use a multiple changepoint algorithm such as PELT or BinSeg which you can specify using method="PELT" for example. By definition of the test statistic the most significant would be selected but what significant means to a statistical algorithm and what significant means to the human eye are different. It may not correspond to the largest change (think about a large change followed quickly by smaller ones and you can create a counterexample). $\endgroup$ – adunaic Oct 6 '16 at 8:36
  • $\begingroup$ can't I loop AMOC for multiple change points(dividing data at change point). where exactly it differs from PELT and BinSeg. $\endgroup$ – Satya Oct 12 '16 at 11:48
  • $\begingroup$ You can loop AMOC for multiple changes by dividing the data at the changepoint - that is precisely what BinSeg (Binary Segmentation) does. This is an approximate algorithm as the changepoints identified are conditional on the ones found at the previous steps. $\endgroup$ – adunaic Oct 13 '16 at 15:13
  • $\begingroup$ In contrast the PELT algorithm solve the changepoint placement optimization problem exactly. In the SegNeigh option (not mentioned above) all the placement combinations are considered but as you can imagine that is computationally expensive. The PELT algorithm solves the problem exactly but in a smart way so it doesn't evaluate many non-optimal combinations. The paper given in the references of the package gives more details. $\endgroup$ – adunaic Oct 13 '16 at 15:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.