library(cpm)

Change Detection

  1. Detect if there was a change
  2. Estimate change point

Change in mean, median

# simulate data
set.seed(0)
x <- c(rnorm(200, 0, 1), rnorm(200, 0.5, 1))
resultsMW <- detectChangePointBatch(x, cpmType = "Mann-Whitney", alpha = 0.05)
par(mfrow = c(1, 2))
plot(x, type = "l", xlab = "time", ylab = "x", bty = "l")
if (resultsMW$changeDetected)
  abline(v = resultsMW$changePoint, lty = 2, col = "red")

plot(resultsMW$Ds, type = "l", xlab = "time", ylab = expression(D[t]), bty = "l")
abline(h = resultsMW$threshold, lty = 2)

LS0tDQp0aXRsZTogIkNoYW5nZSBEZXRlY3Rpb24iDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkoY3BtKQ0KDQpgYGANCg0KDQojIyBDaGFuZ2UgRGV0ZWN0aW9uDQoNCjEuIERldGVjdCBpZiB0aGVyZSB3YXMgYSBjaGFuZ2UgDQoyLiBFc3RpbWF0ZSBjaGFuZ2UgcG9pbnQNCg0KDQojIyMgQ2hhbmdlIGluIG1lYW4sIG1lZGlhbg0KDQpgYGB7cn0NCiMgc2ltdWxhdGUgZGF0YQ0Kc2V0LnNlZWQoMCkNCnggPC0gYyhybm9ybSgyMDAsIDAsIDEpLCBybm9ybSgyMDAsIDAuNSwgMSkpDQoNCmBgYA0KDQoNCg0KDQpgYGB7cn0NCnJlc3VsdHNNVyA8LSBkZXRlY3RDaGFuZ2VQb2ludEJhdGNoKHgsIGNwbVR5cGUgPSAiTWFubi1XaGl0bmV5IiwgYWxwaGEgPSAwLjA1KQ0KcGFyKG1mcm93ID0gYygxLCAyKSkNCnBsb3QoeCwgdHlwZSA9ICJsIiwgeGxhYiA9ICJ0aW1lIiwgeWxhYiA9ICJ4IiwgYnR5ID0gImwiKQ0KaWYgKHJlc3VsdHNNVyRjaGFuZ2VEZXRlY3RlZCkNCiAgYWJsaW5lKHYgPSByZXN1bHRzTVckY2hhbmdlUG9pbnQsIGx0eSA9IDIsIGNvbCA9ICJyZWQiKQ0KDQpwbG90KHJlc3VsdHNNVyREcywgdHlwZSA9ICJsIiwgeGxhYiA9ICJ0aW1lIiwgeWxhYiA9IGV4cHJlc3Npb24oRFt0XSksIGJ0eSA9ICJsIikNCmFibGluZShoID0gcmVzdWx0c01XJHRocmVzaG9sZCwgbHR5ID0gMikNCg0KYGBgDQoNCg0KDQpgYGB7cn0NCg0KDQpgYGANCg0K