Find change points efficiently in variance change models
Source:R/fastcpd_wrappers.R
fastcpd_variance.Rd
fastcpd_variance()
and fastcpd.variance()
are wrapper
functions of fastcpd()
to find the variance change. The
function is similar to fastcpd()
except that the data is by
default a matrix or data frame or a vector with each row / element as an
observation and thus a formula is not required here.
Arguments
- data
A matrix, a data frame or a vector.
- ...
Other arguments passed to
fastcpd()
, for example,segment_count
.
Value
A fastcpd object.
Examples
set.seed(1)
data <- c(rnorm(300, 0, 1), rnorm(400, 0, 100), rnorm(300, 0, 1))
result <- fastcpd.variance(data)
summary(result)
#>
#> Call:
#> fastcpd.variance(data = data)
#>
#> Change points:
#> 300 700
#>
#> Cost values:
#> 281.1478 1866.208 283.3836
if (requireNamespace("mvtnorm", quietly = TRUE)) {
set.seed(1)
p <- 3
result <- fastcpd.variance(
rbind(
mvtnorm::rmvnorm(
3000, rep(0, p), crossprod(matrix(runif(p^2) * 2 - 1, p))
),
mvtnorm::rmvnorm(
4000, rep(0, p), crossprod(matrix(runif(p^2) * 2 - 1, p))
),
mvtnorm::rmvnorm(
3000, rep(0, p), crossprod(matrix(runif(p^2) * 2 - 1, p))
)
)
)
summary(result)
}
#>
#> Call:
#> fastcpd.variance(data = rbind(mvtnorm::rmvnorm(3000, rep(0, p),
#> crossprod(matrix(runif(p^2) * 2 - 1, p))), mvtnorm::rmvnorm(4000,
#> rep(0, p), crossprod(matrix(runif(p^2) * 2 - 1, p))), mvtnorm::rmvnorm(3000,
#> rep(0, p), crossprod(matrix(runif(p^2) * 2 - 1, p)))))
#>
#> Change points:
#> 3002 7034
#>
#> Cost values:
#> -5139.082 -2364.878 -3275.621
# \donttest{
set.seed(1)
data <- c(rnorm(2000, 0, 1), rnorm(2000, 0, 5), rnorm(2000, 0, 1))
(result_time <- system.time(
result <- fastcpd.variance(data, r.progress = FALSE, cp_only = TRUE)
))
#> user system elapsed
#> 0.016 0.000 0.016
result@cp_set
#> [1] 2000 4000
# }
# \donttest{
set.seed(1)
data <- c(rnorm(3000, 0, 1), rnorm(3000, 0, 2), rnorm(3000, 0, 1))
(result_time <- system.time(
result <- fastcpd.variance(
data, beta = "BIC", cost_adjustment = "BIC",
r.progress = FALSE, cp_only = TRUE
)
))
#> user system elapsed
#> 1.264 0.000 1.264
result@cp_set
#> [1] 2997 5989
# }