Solved – change point analysis for At Most One Change(AMOC)

change pointr

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

Best Answer

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:

 ?cpt.mean

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