4
$\begingroup$

I know that there are many related threads, packages and papers. Currently I`m reading through many of them. However, I don't plan to dig too deeply into this topic. I need a sound method that works with strongly dependent univariate time series (in large samples). My champion so far is the Kokoszka & Leipus test as evaluated and discussed in this paper

ANDREOU (2002) DETECTING MULTIPLE BREAKS IN FINANCIAL MARKET VOLATILITY DYNAMICS

but there seems to be no implementation of this test in R? Maybe someone knows better?

I've spotted the Inclán and Tiao (1994) test (which is also discussed in this paper) in the changepoint package. But this method is too sensitive to outliers. It is originally developed for independent data, so additional transformations might be required first.

The following paper also develops an interesting method and offers R code:

Fryzlewicz (2014) Multiple-change-point detection for auto-regressive conditional heteroscedastic processes

Currently I'm also checking the bcppackage and the strucchange package (while the latter seems to be made for roughly independent data). I`m a bit lost between all these alternatives. And due to deadline constraints I have not the time to evaluate all these different possibilities (and many more that I have not listed here).

Is there an R user who can recommend a certain method based on his own experience? The application will be to financial returns for a project at uni.

$\endgroup$
1
$\begingroup$

As there has been no reply i'll throw a suggestion into the pot.

As far as i'm aware there is no non-Bayesian implementation of a dependent changepoint test currently in R.

Having said this the strucchange package implements changes in regression and as such you can construct AR models manually in this framework. Take an AR(1) model as an example:

set.seed(1) # reproducibility
x=c(arima.sim(model=list(ar=0.8),n=50),arima.sim(model=list(ar=-0.8),n=50)) # simulate some data with a change
library(strucchange) # load the package
breakpoints(x[2:100]~x[1:99]) # detect breaks in an AR1 model

The final line fits an AR(1) model to the data and assesses if there is a change in the AR(1) parameter. You have to essentially ignore the first p data points in order to fit an AR(p) model.

This is probably not exactly what we want as you are required to fully specify the AR model but i'd argue it is better than nothing.

I have some code to fit general AR(p) models to changepoints using likelihoods where the code automatically chooses the best p for a segment but I haven't had time to incorporate this into the changepoint package yet. I can post this to a repository if it would be useful to you.

For information there is a list of R packages related to changepoint analysis at: www.changepoint.info/software

$\endgroup$
  • $\begingroup$ Thanks a lot for your ideas, adunaic! I`ll have a closer look at the packages-list for sure! Unfortunately your approach makes strong assumptions about the data generating process which is not what I am looking for. $\endgroup$ – Joz May 12 '14 at 15:20

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.