library("cpss")
set.seed(666)
n <- 400
tau <- c(80, 200, 300)
tau_ext <- c(0, tau, n)
be <- list(c(0, 1), c(1, 0.5), c(0, 1), c(-1, 0.5))
seg_len <- diff(c(0, tau, n))
x <- rnorm(n)
mu <- lapply(seq(1, length(tau) + 1), function(k) {
be[[k]][1] + be[[k]][2] * x[(tau_ext[k] + 1):tau_ext[k + 1]]
})
mu <- do.call(c, mu)
sig <- unlist(lapply(seq(1, length(tau) + 1), function(k) {
rep(be[[k]][2], seg_len[k])
}))
y <- rnorm(n, mu, sig)
res <- cpss.lm(
formula = y ~ x,
algorithm = "BS", ncps_max = 10
)
summary(res)
# 80 202 291
coef(res)
# $coef
# [,1] [,2] [,3] [,4]
# [1,] -0.00188792 1.0457718 -0.03963209 -0.9444813
# [2,] 0.91061557 0.6291965 1.20694409 0.4410036
#
# $sigma
# [1] 0.8732233 0.4753216 0.9566516 0.4782329
Run the code above in your browser using DataLab