Nothing
Modified genetic algorithm (GA) special for changepoint detection in time series.
You can install the version of changepointGA from CRAN:
install.packages("changepointGA")
or the development version from Github:
# install.packages("devtools")
devtools::install_github("mli171/changepointGA")
##### Stationary time series with autocorrelation
N = 1000
betaT = c(0.5, -0.5, 0.3) # intercept, B, D
period = 30
XMatT = cbind(rep(1, N), cos(2*pi*(1:N)/period), sin(2*pi*(1:N)/period))
colnames(XMatT) = c("intercept", "Bvalue", "DValue")
sigmaT = 1
phiT = c(0.5, -0.5)
thetaT = c(0.8)
DeltaT = c(2, -2)
Cp.prop = c(1/4, 3/4)
CpLocT = floor(N*Cp.prop)
Xt = ts.sim(beta=betaT, XMat=XMatT, sigma=sigmaT, phi=phiT, theta=thetaT, Delta=DeltaT, CpLoc=CpLocT, seed=1234)
TsPlotCheck(X=1:N, Xat=seq(from=1, to=N, length=10), Y=Xt, tau=CpLocT)
GA_param = list(
popsize = 200,
Pcrossover = 0.95,
Pmutation = 0.15,
Pchangepoint = 10/N,
minDist = 1,
mmax = N/2 - 1,
lmax = 2 + N/2 - 1,
maxgen = 100000,
maxconv = 1000,
option = "cp",
monitoring = FALSE,
parallel = FALSE,
nCore = NULL,
tol = 1e-5,
seed = NULL
)
tim1 = Sys.time()
tmp1 = GA(ObjFunc=BinSearch.BIC, N=N, GA_param=GA_param, Xt=Xt)
tim2 = Sys.time()
##### Stationary time series with autocorrelation
N = 1000
betaT = c(0.5) # intercept
XMatT = matrix(1, nrow=N, ncol=1)
colnames(XMatT) = "intercept"
sigmaT = 1
phiT = c(0.5, -0.5)
thetaT = c(0.8)
DeltaT = c(2, -2)
Cp.prop = c(1/4, 3/4)
CpLocT = floor(N*Cp.prop)
Xt = ts.sim(beta=betaT, XMat=XMatT, sigma=sigmaT, phi=phiT, theta=thetaT, Delta=DeltaT, CpLoc=CpLocT, seed=1234)
TsPlotCheck(X=1:N, Xat=seq(from=1, to=N, length=10), Y=Xt, tau=CpLocT)
## No parallel computing
IslandGA_param = list(
popsize = 40,
Islandsize = 5,
Pcrossover = 0.95,
Pmutation = 0.15,
Pchangepoint = 10/N,
minDist = 1,
mmax = N/2 - 1,
lmax = 2 + N/2 - 1,
maxMig = 500,
maxgen = 100,
maxconv = 100,
option = "cp",
monitoring = FALSE,
parallel = FALSE, ###
nCore = NULL,
tol = 1e-5,
seed = NULL
)
tim3 = Sys.time()
tmp2 = IslandGA(ObjFunc=BinSearch.BIC, N=N, IslandGA_param, Xt=Xt)
tim4 = Sys.time()
## Parallel computing
IslandGA_param = list(
popsize = 40,
Islandsize = 5,
Pcrossover = 0.95,
Pmutation = 0.15,
Pchangepoint = 10/N,
minDist = 1,
mmax = N/2 - 1,
lmax = 2 + N/2 - 1,
maxMig = 500,
maxgen = 100,
maxconv = 100,
option = "cp",
monitoring = FALSE,
parallel = TRUE, ###
nCore = 10,
tol = 1e-5,
seed = NULL
)
tim5 = Sys.time()
tmp3 = IslandGA(BinSearch.BIC, N=N, IslandGA_param, Xt=Xt)
tim6 = Sys.time()
tim4 - tim3
tim6 - tim5
tmp2$overbestfit
tmp3$overbestfit
tmp2$overbestchrom
tmp3$overbestchrom
N = 1000
betaT = c(0.5, -0.5, 0.3) # intercept, B, D
period = 30
XMatT = cbind(rep(1, N), cos(2*pi*(1:N)/period), sin(2*pi*(1:N)/period))
colnames(XMatT) = c("intercept", "Bvalue", "DValue")
sigmaT = 1
phiT = c(0.5, -0.5)
thetaT = c(0.8)
DeltaT = c(2, -2)
Cp.prop = c(1/4, 3/4)
CpLocT = floor(N*Cp.prop)
Xt = ts.sim(beta=betaT, XMat=XMatT, sigma=sigmaT, phi=phiT, theta=thetaT, Delta=DeltaT, CpLoc=CpLocT, seed=1234)
TsPlotCheck(X=1:N, Xat=seq(from=1, to=N, length=10), Y=Xt, tau=CpLocT)
p.range = list(ar=c(0,2), ma=c(0,2))
GA_param = list(
popsize = 200,
Pcrossover = 0.95,
Pmutation = 0.15,
Pchangepoint = 10/N,
minDist = 1,
mmax = N/2 - 1,
lmax = 2 + N/2 - 1,
maxgen = 10000,
maxconv = 1000,
option = "both",
monitoring = FALSE,
parallel = TRUE,
nCore = 10,
tol = 1e-5,
seed = NULL
)
tim1 = Sys.time()
tmp1 = GA(ObjFunc=ARIMA.BIC.Order, N=N, GA_param, p.range=p.range, XMat=XMatT, Xt=Xt)
tim2 = Sys.time()
tim2 - tim1
tmp1$overbestfit
tmp1$overbestchrom
N = 1000
betaT = c(0.5, -0.5, 0.3) # intercept, B, D
period = 30
XMatT = cbind(rep(1, N), cos(2*pi*(1:N)/period), sin(2*pi*(1:N)/period))
colnames(XMatT) = c("intercept", "Bvalue", "DValue")
sigmaT = 1
phiT = c(0.5, -0.5)
thetaT = c(0.8)
DeltaT = c(2, -2)
Cp.prop = c(1/4, 3/4)
CpLocT = floor(N*Cp.prop)
myts = ts.sim(beta=betaT, XMat=XMatT, sigma=sigmaT, phi=phiT, theta=thetaT, Delta=DeltaT, CpLoc=CpLocT, seed=1234)
TsPlotCheck(X=1:N, Xat=seq(from=1, to=N, length=10), Y=Xt, tau=CpLocT)
p.range = list(ar=c(0,2), ma=c(0,2))
IslandGA_param = list(
popsize = 40,
Islandsize = 5,
Pcrossover = 0.95,
Pmutation = 0.15,
Pchangepoint = 10/N,
minDist = 1,
mmax = N/2 - 1,
lmax = 2 + N/2 - 1,
maxMig = 500,
maxgen = 100,
maxconv = 50,
option = "both",
monitoring = FALSE,
parallel = FALSE,
nCore = NULL,
tol = 1e-5,
seed = NULL
)
tim3 = Sys.time()
tmp2 = IslandGA(ObjFunc=ARIMA.BIC.Order, N=N, IslandGA_param, p.range=p.range, XMat=XMatT, Xt=Xt)
tim4 = Sys.time()
IslandGA_param = list(
popsize = 40,
Islandsize = 5,
Pcrossover = 0.95,
Pmutation = 0.15,
Pchangepoint = 10/N,
minDist = 1,
mmax = N/2 - 1,
lmax = 2 + N/2 - 1,
maxMig = 500,
maxgen = 100,
maxconv = 50,
option = "both",
monitoring = FALSE,
parallel = TRUE,
nCore = 5,
tol = 1e-5,
seed = NULL
)
tim5 = Sys.time()
tmp3 = IslandGA(ObjFunc=ARIMA.BIC.Order, N=N, IslandGA_param, p.range=p.range, XMat=XMatT, Xt=Xt)
tim6 = Sys.time()
tim4 - tim3
tim6 - tim5
tmp2$overbestfit
tmp3$overbestfit
tmp2$overbestchrom
tmp3$overbestchrom
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.