-
Notifications
You must be signed in to change notification settings - Fork 18
postCP change point detection
Change-point detection algorithms are useful for analyzing time series data that exhibit abrupt changes in distribution. There are many R packages for detecting K change-points in N data points, but only a few are able to compute error bands (confidence intervals) for change point locations. The only R package that can compute error bands with provably linear O(N) time complexity is the postCP package. However, the last time I checked (25 Nov 2015), CRAN has put the postCP package in the Archive: “Archived on 2014-09-26 as misused .C(DUP = FALSE) and failed its checks on several platforms, including Solaris and Linux under valgrind.”
Some other R packages that can compute error bands for multiple change-point models:
paper | package | time |
---|---|---|
Luong et al | postCP | O(N) |
Rigaill et al | EBS | O(KN^2) |
Frick et al | stepR | near-linear |
Start from the most recent version of postCP on CRAN, and make the necessary changes to get it passing checks and back on CRAN.
Writing a vignette and tests for this package would also be nice.
Gregory Nuel <[email protected]> would be the primary mentor since he knows the theory and C++ code implemented in the postCP package. Toby Dylan Hocking <[email protected]> could co-mentor since he would be a user of the postCP package, and could advise the student about R package development.
Do one or several — doing more hard tests makes you more likely to be selected.
- Easy: download and install the most recent version of postCP on CRAN, then run
example(postCP)
and explain why the output is problematic. - Medium: demonstrate that you know how to write vignettes and package tests. What tests would you suggest to verify that the postCP function is working?
- Hard: demonstrate that you know how to interface C++ code with R using
.C
and/or.Call
. Have you already written an R package that uses C code? If not, you may want to read ”When and how to write low-level (C/C++) instead of high-level (R/Python) code?” Then write a solution to this exercise to prove that you can write an interface using.C
.
Students, please post a link to your test results here.