Nothing
## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ---- echo = FALSE, message = FALSE-------------------------------------------
knitr::opts_chunk$set(collapse = T, comment = "#>")
options(tibble.print_min = 4L, tibble.print_max = 4L)
library(SNSeg)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # Please run the following function before running examples:
# mix_GauGPD <- function(u,p,trunc_r,gpd_scale,gpd_shape){
# indicator <- u<p
# rv <- rep(0, length(u))
# rv[indicator>0] <- qtruncnorm(u[indicator>0]/p,a=-Inf,b=trunc_r)
# rv[indicator<=0] <- qgpd((u[indicator<=0]-p)/(1-p), loc=trunc_r, scale=gpd_scale,shape=gpd_shape)
# return(rv)
# }
## -----------------------------------------------------------------------------
set.seed(7)
n <- 2000
reptime <- 2
cp_sets <- round(n*c(0,cumsum(c(0.5,0.25)),1))
mean_shift <- c(0.4,0,0.4)
rho <- -0.7
ts <- MAR(n, reptime, rho)
no_seg <- length(cp_sets)-1
for(index in 1:no_seg){ # Mean shift
tau1 <- cp_sets[index]+1
tau2 <- cp_sets[index+1]
ts[tau1:tau2,] <- ts[tau1:tau2,] + mean_shift[index]
}
ts <- ts[,2]
# grid_size undefined
result <- SNSeg_Uni(ts, paras_to_test = "mean", confidence = 0.9,
grid_size_scale = 0.05, grid_size = NULL,
plot_SN = FALSE, est_cp_loc = FALSE)
# grid_size defined & generate time series segmentation plot
result <- SNSeg_Uni(ts, paras_to_test = "mean", confidence = 0.9,
grid_size_scale = 0.05, grid_size = 116,
plot_SN = TRUE, est_cp_loc = TRUE)
# Estimated change-point locations
result$est_cp
# Parameter estimates (mean) of each segment
SNSeg_estimate(result)
# plot the SN-based test statistic
SN_stat <- max_SNsweep(result, plot_SN = TRUE, est_cp_loc = TRUE,
critical_loc = TRUE)
## -----------------------------------------------------------------------------
summary(result)
## -----------------------------------------------------------------------------
print(result)
## -----------------------------------------------------------------------------
plot(result, cpts.col = 'red')
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# set.seed(7)
# ts <- MAR_Variance(2, "V1")
# ts <- ts[,2]
# # grid_size defined
# result <- SNSeg_Uni(ts, paras_to_test = "variance", confidence = 0.9,
# grid_size_scale = 0.05, grid_size = NULL,
# plot_SN = FALSE, est_cp_loc = TRUE)
# # Estimated change-point locations
# result$est_cp
# # Parameter estimates (variance) of each segment
# SNSeg_estimate(result)
# # plot the SN-based test statistic
# SN_stat <- max_SNsweep(result, plot_SN = TRUE, est_cp_loc = TRUE,
# critical_loc = TRUE)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # built-in functions
# # summary statistic
# summary(result)
# # print
# print(result)
# # plot
# plot(result, cpts.col = 'red')
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# set.seed(7)
# ts <- MAR_Variance(2, "A3")
# ts <- ts[,2]
# # grid_size defined
# result <- SNSeg_Uni(ts, paras_to_test = "acf", confidence = 0.9,
# grid_size_scale = 0.05, grid_size = 92, plot_SN = FALSE,
# est_cp_loc = TRUE)
# # Estimated change-point locations
# result$est_cp
# # Parameter estimates (acf) of each segment
# SNSeg_estimate(result)
# # plot the SN-based test statistic
# SN_stat <- max_SNsweep(result, plot_SN = TRUE, est_cp_loc = TRUE,
# critical_loc = TRUE)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # built-in functions
# # summary statistic
# summary(result)
# # print
# print(result)
# # plot
# plot(result, cpts.col = 'red')
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# library(mvtnorm)
# set.seed(7)
# n <- 1000
# sigma_cross <- list(4*matrix(c(1,0.8,0.8,1), nrow=2),
# matrix(c(1,0.2,0.2,1), nrow=2),
# matrix(c(1,0.8,0.8,1), nrow=2))
# cp_sets <- round(c(0,n/3,2*n/3,n))
# noCP <- length(cp_sets)-2
# rho_sets <- rep(0.5, noCP+1)
# ts <- MAR_MTS_Covariance(n, 2, rho_sets, cp_sets, sigma_cross)
# ts <- ts[1][[1]]
# # grid_size defined
# result <- SNSeg_Uni(ts, paras_to_test = "bivcor", confidence = 0.9,
# grid_size_scale = 0.05, grid_size = 77,
# plot_SN = FALSE, est_cp_loc = TRUE)
# # Estimated change-point locations
# result$est_cp
# # Parameter estimates (bivariate correlation) of each segment
# SNSeg_estimate(result)
# # plot the SN-based test statistic
# SN_stat <- max_SNsweep(result, plot_SN = TRUE, est_cp_loc = TRUE,
# critical_loc = TRUE)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # built-in functions
# # summary statistic
# summary(result)
# # print
# print(result)
# # plot
# plot(result, cpts.col = 'red')
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# library(truncnorm)
# library(evd)
# set.seed(7)
# n <- 1000
# cp_sets <- c(0,n/2,n)
# noCP <- length(cp_sets)-2
# reptime <- 2
# rho <- 0.2
# # AR time series with no change-point (mean, var)=(0,1)
# ts <- MAR(n, reptime, rho)*sqrt(1-rho^2)
# trunc_r <- 0
# p <- pnorm(trunc_r)
# gpd_scale <- 2
# gpd_shape <- 0.125
# for(ts_index in 1:reptime){
# ts[(cp_sets[2]+1):n, ts_index] <- mix_GauGPD(pnorm(ts[(cp_sets[2]+1):n, ts_index]),
# p,trunc_r,gpd_scale,gpd_shape)
# }
# ts <- ts[,2]
# # grid_size undefined
# # test in 90% quantile
# result <- SNSeg_Uni(ts, paras_to_test = 0.9, confidence = 0.9,
# grid_size_scale = 0.066, grid_size = NULL,
# plot_SN = FALSE, est_cp_loc = TRUE)
# # Estimated change-point locations
# result$est_cp
# # Parameter estimates (90th quantile) of each segment
# SNSeg_estimate(result)
# # plot the SN-based test statistic
# SN_stat <- max_SNsweep(result, plot_SN = TRUE, est_cp_loc = TRUE,
# critical_loc = TRUE)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # built-in functions
# # summary statistic
# summary(result)
# # print
# print(result)
# # plot
# plot(result, cpts.col = 'red')
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# set.seed(7)
# n <- 500
# reptime <- 2
# cp_sets <- round(n*c(0,cumsum(c(0.5,0.25)),1))
# mean_shift <- c(0.4,0,0.4)
# rho <- -0.7
# ts <- MAR(n, reptime, rho)
# no_seg <- length(cp_sets)-1
# for(index in 1:no_seg){ # Mean shift
# tau1 <- cp_sets[index]+1
# tau2 <- cp_sets[index+1]
# ts[tau1:tau2,] <- ts[tau1:tau2,] + mean_shift[index]
# }
# ts <- ts[,2]
# # Define a general functional for the input 'paras_to_test'
# paras_to_test = function(ts){
# mean(ts)
# }
# result.SNCP.general <- SNSeg_Uni(ts, paras_to_test = paras_to_test,
# confidence = 0.9, grid_size_scale = 0.05,
# grid_size = NULL, plot_SN = FALSE,
# est_cp_loc = TRUE)
# # Estimated change-point locations
# result.SNCP.general$est_cp
# # Parameter estimates (general functional) of each segment
# SNSeg_estimate(result.SNCP.general)
# # plot the SN-based test statistic
# SN_stat <- max_SNsweep(result.SNCP.general, plot_SN = TRUE, est_cp_loc = TRUE,
# critical_loc = TRUE)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # built-in functions
# # summary statistic
# summary(result)
# # print
# print(result)
# # plot
# plot(result, cpts.col = 'red')
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# set.seed(7)
# n <- 1000
# cp_sets <- c(0,333,667,1000)
# no_seg <- length(cp_sets)-1
# rho <- 0
# # AR time series with no change-point (mean, var)=(0,1)
# ts <- MAR(n, 2, rho)*sqrt(1-rho^2)
# no_seg <- length(cp_sets)-1
# sd_shift <- c(1,1.6,1)
# for(index in 1:no_seg){ # Mean shift
# tau1 <- cp_sets[index]+1
# tau2 <- cp_sets[index+1]
# ts[tau1:tau2,] <- ts[tau1:tau2,]*sd_shift[index]
# }
# d <- 2
# ts <- ts[,2]
#
# # Test in 90th and 95th quantile with grid_size undefined
# result <- SNSeg_Uni(ts, paras_to_test = c(0.9, 0.95), confidence = 0.9,
# grid_size_scale = 0.05, grid_size = NULL,
# plot_SN = FALSE, est_cp_loc = FALSE)
#
# # Test in 90th quantile and the variance with grid_size undefined
# result <- SNSeg_Uni(ts, paras_to_test = c(0.9, 'variance'),
# confidence = 0.95, grid_size_scale = 0.078,
# grid_size = NULL, plot_SN = FALSE,
# est_cp_loc = FALSE)
#
# # Test in 90th quantile, variance and acf with grid_size undefined
# result <- SNSeg_Uni(ts, paras_to_test = c(0.9,'variance', "acf"),
# confidence = 0.9, grid_size_scale = 0.064,
# grid_size = NULL, plot_SN = TRUE,
# est_cp_loc = TRUE)
# # Estimated change-point locations
# result$est_cp
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # Test in 60th quantile, mean, variance and acf with grid_size defined
# result.last <- SNSeg_Uni(ts, paras_to_test = c(0.6, 'mean', "variance",
# "acf"), confidence = 0.9, grid_size_scale = 0.05,
# grid_size = 83, plot_SN = FALSE, est_cp_loc = TRUE)
# # Estimated change-point locations
# result.last$est_cp
# # Parameter estimates (of the last example) of each segment
# SNSeg_estimate(result.last)
# # SN-based test statistic segmentation plot
# SN_stat <- max_SNsweep(result.last, plot_SN = TRUE, est_cp_loc = TRUE,
# critical_loc = TRUE)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # built-in functions
# # summary statistic
# summary(result)
# # print
# print(result)
# # plot
# plot(result, cpts.col = 'red')
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # Please run this function before running examples:
# exchange_cor_matrix <- function(d, rho){
# tmp <- matrix(rho, d, d)
# diag(tmp) <- 1
# return(tmp)
# }
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# library(mvtnorm)
# set.seed(10)
# d <- 5
# n <- 1000
# cp_sets <- round(n*c(0,cumsum(c(0.075,0.3,0.05,0.1,0.05)),1))
# mean_shift <- c(-3,0,3,0,-3,0)/sqrt(d)
# mean_shift <- sign(mean_shift)*ceiling(abs(mean_shift)*10)/10
# rho_sets <- 0.5
# sigma_cross <- list(exchange_cor_matrix(d,0))
# ts <- MAR_MTS_Covariance(n, 2, rho_sets, cp_sets=c(0,n), sigma_cross)
# noCP <- length(cp_sets)-2
# no_seg <- length(cp_sets)-1
# for(rep_index in 1:2){
# for(index in 1:no_seg){ # Mean shift
# tau1 <- cp_sets[index]+1
# tau2 <- cp_sets[index+1]
# ts[[rep_index]][,tau1:tau2] <- ts[[rep_index]][,tau1:tau2] + mean_shift[index]
# }
# }
# ts <- ts[1][[1]]
#
# # grid_size undefined
# result <- SNSeg_Multi(ts, paras_to_test = "mean", confidence = 0.95,
# grid_size_scale = 0.079, grid_size = NULL,
# plot_SN = FALSE, est_cp_loc = TRUE)
# # grid_size defined
# result <- SNSeg_Multi(ts, paras_to_test = "mean", confidence = 0.99,
# grid_size_scale = 0.05, grid_size = 65,
# plot_SN = FALSE, est_cp_loc = TRUE)
# # Estimated change-point locations
# result$est_cp
# # Parameter estimates (multivariate mean) of each segment
# SNSeg_estimate(result)
# # SN-based test statistic segmentation plot
# SN_stat <- max_SNsweep(result, plot_SN = TRUE, est_cp_loc = TRUE,
# critical_loc = TRUE)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # built-in functions
# # summary statistic
# summary(result)
# # print
# print(result)
# # plot
# par(mfrow=c(2,3))
# plot(result, cpts.col = 'red')
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# library(mvtnorm)
# set.seed(10)
# reptime <- 2
# d <- 4
# n <- 1000
# sigma_cross <- list(exchange_cor_matrix(d,0.2),
# 2*exchange_cor_matrix(d,0.5),
# 4*exchange_cor_matrix(d,0.5))
# rho_sets <- c(0.3,0.3,0.3)
# mean_shift <- c(0,0,0) # with mean change
# cp_sets <- round(c(0,n/3,2*n/3,n))
# ts <- MAR_MTS_Covariance(n, reptime, rho_sets, cp_sets, sigma_cross)
# noCP <- length(cp_sets)-2
# no_seg <- length(cp_sets)-1
# for(rep_index in 1:reptime){
# for(index in 1:no_seg){ # Mean shift
# tau1 <- cp_sets[index]+1
# tau2 <- cp_sets[index+1]
# ts[[rep_index]][,tau1:tau2] <- ts[[rep_index]][,tau1:tau2] +
# mean_shift[index]
# }
# }
# ts <- ts[[1]]
#
# # grid_size undefined
# result <- SNSeg_Multi(ts, paras_to_test = "covariance",
# confidence = 0.9, grid_size_scale = 0.05,
# grid_size = NULL, plot_SN = FALSE, est_cp_loc = FALSE)
# # grid_size defined
# result <- SNSeg_Multi(ts, paras_to_test = "covariance",
# confidence = 0.9, grid_size_scale = 0.05,
# grid_size = 81, plot_SN = FALSE,
# est_cp_loc = TRUE)
# # Estimated change-point locations
# result$est_cp
# # Parameter estimates (covariance estimate) of each segment
# SNSeg_estimate(result)
# # SN-based test statistic segmentation plot
# SN_stat <- max_SNsweep(result, plot_SN = TRUE, est_cp_loc = TRUE,
# critical_loc = TRUE)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # built-in functions
# # summary statistic
# summary(result)
# # print
# print(result)
# # plot
# par(mfrow=c(1,1))
# plot(result, cpts.col = 'red')
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# n <- 600
# p <- 100
# nocp <- 5
# cp_sets <- round(seq(0,nocp+1,1)/(nocp+1)*n)
# num_entry <- 5
# kappa <- sqrt(4/5) # Wang et al(2020)
# mean_shift <- rep(c(0,kappa),100)[1:(length(cp_sets)-1)]
# set.seed(1)
# ts <- matrix(rnorm(n*p,0,1),n,p)
# no_seg <- length(cp_sets)-1
# for(index in 1:no_seg){ # Mean shift
# tau1 <- cp_sets[index]+1
# tau2 <- cp_sets[index+1]
# ts[tau1:tau2,1:num_entry] <- ts[tau1:tau2,1:num_entry] +
# mean_shift[index] # sparse change
# }
# # SN segmentation plot
# # grid_size undefined (plot the first 3 time series)
# result <- SNSeg_HD(ts, confidence = 0.9, grid_size_scale = 0.05,
# grid_size = NULL, plot_SN = FALSE, est_cp_loc = TRUE,
# ts_index = c(1:3))
# # grid_size defined (plot the 1st, 3rd and 5th time series)
# result <- SNSeg_HD(ts, confidence = 0.9, grid_size_scale = 0.05,
# grid_size = 52, plot_SN = FALSE, est_cp_loc = TRUE,
# ts_index = c(1,3,5))
# # Estimated change-point locations
# result$est_cp
# # Parameter estimates (high-dimensional means) of each segment
# summary.stat <- SNSeg_estimate(result)
# # SN-based test statistic segmentation plot
# SN_stat <- max_SNsweep(result, plot_SN = TRUE, est_cp_loc = TRUE,
# critical_loc = TRUE)
## ----echo=TRUE, eval=FALSE----------------------------------------------------
# # built-in functions
# # summary statistic
# summary(result)
# # print
# print(result)
# # plot
# plot(result, cpts.col = 'red', ts_index = c(1:3))
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.