Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## -----------------------------------------------------------------------------
library(changepointGA)
## -----------------------------------------------------------------------------
Ts = 200
betaT = c(0.5) # intercept
XMatT = matrix(rep(1, Ts), ncol=1)
colnames(XMatT) = c("intercept")
sigmaT = 1
phiT = c(0.5)
thetaT = c(0.8)
DeltaT = c(2, -2)
CpLocT = c(50, 150)
myts = ts.sim(beta=betaT, XMat=XMatT, sigma=sigmaT, phi=phiT, theta=thetaT, Delta=DeltaT, CpLoc=CpLocT, seed=1234)
str(myts)
## ----fig.align = "center", fig.height=4, fig.width=6--------------------------
TsPlotCheck(Y=myts, tau=CpLocT)
## -----------------------------------------------------------------------------
ARIMA.BIC.Order(chromosome=c(2, 1, 1, 50, 150, Ts+1), plen=2, XMat=XMatT, Xt=myts)
## -----------------------------------------------------------------------------
N = Ts
p.range = list(ar=c(0,2), ma=c(0,2))
GA_param = list(
popsize = 80,
Pcrossover = 0.95,
Pmutation = 0.3,
Pchangepoint = 10/N,
minDist = 1,
mmax = N/2 - 1,
lmax = 2 + N/2 - 1,
maxgen = 5000,
maxconv = 100,
option = "both",
monitoring = FALSE,
parallel = FALSE,
nCore = NULL,
tol = 1e-5,
seed = 1234
)
## -----------------------------------------------------------------------------
pop = matrix(0, nrow=2 + N/2 - 1, ncol=80)
# put the two desired candidate solutions into pop matrix
pop[1:6,1] = c(2, 1, 1, 50, 150, N+1)
pop[1:7,2] = c(3, 1, 1, 50, 100, 150, N+1)
# fill the remain 38 individuals slot from default generation
tmppop = random_population(popsize=80, prange=p.range, N=N, minDist=1, Pb=10/N,
mmax=N/2 - 1, 2 + N/2 - 1)
pop[,3:80] = tmppop[,3:80]
pop[1:10, 1:10]
operators.self = list(population = pop,
selection = "selection_linearrank",
crossover = "uniformcrossover",
mutation = "mutation")
## -----------------------------------------------------------------------------
XMatEst = matrix(1, nrow=N, ncol=1)
## -----------------------------------------------------------------------------
res.changepointGA = suppressWarnings(GA(ObjFunc=ARIMA.BIC.Order, N=N, GA_param, GA_operators = operators.self,
p.range=p.range, XMat=XMatEst, Xt=myts))
fit.changepointGA = res.changepointGA$overbestfit
fit.changepointGA
tau.changepointGA = res.changepointGA$overbestchrom
tau.changepointGA
## -----------------------------------------------------------------------------
IslandGA_param = list(
subpopsize = 80,
Islandsize = 2,
Pcrossover = 0.95,
Pmutation = 0.15,
Pchangepoint = 10/N,
minDist = 1,
mmax = N/2 - 1,
lmax = 2 + N/2 - 1,
maxMig = 1000,
maxgen = 50,
maxconv = 20,
option = "both",
monitoring = FALSE,
parallel = FALSE, ###
nCore = NULL,
tol = 1e-5,
seed = 1234
)
tim1 = Sys.time()
res.Island.changepointGA = suppressWarnings(IslandGA(ObjFunc=ARIMA.BIC.Order, N=N, IslandGA_param,
p.range=p.range, XMat=XMatEst, Xt=myts))
tim2 = Sys.time()
tim2 - tim1
fit.Island.changepointGA = res.Island.changepointGA$overbestfit
fit.Island.changepointGA
tau.Island.changepointGA = res.Island.changepointGA$overbestchrom
tau.Island.changepointGA
## -----------------------------------------------------------------------------
IslandGA_param = list(
subpopsize = 80,
Islandsize = 2,
Pcrossover = 0.95,
Pmutation = 0.15,
Pchangepoint = 10/N,
minDist = 1,
mmax = N/2 - 1,
lmax = 2 + N/2 - 1,
maxMig = 1000,
maxgen = 50,
maxconv = 20,
option = "both",
monitoring = FALSE,
parallel = TRUE, ###
nCore = 2,
tol = 1e-5,
seed = 1234
)
tim3 = Sys.time()
res.Island.changepointGA = suppressWarnings(IslandGA(ObjFunc=ARIMA.BIC.Order, N=N, IslandGA_param,
p.range=p.range, XMat=XMatEst, Xt=myts))
tim4 = Sys.time()
tim4 - tim3
fit.Island.changepointGA = res.Island.changepointGA$overbestfit
fit.Island.changepointGA
tau.Island.changepointGA = res.Island.changepointGA$overbestchrom
tau.Island.changepointGA
## -----------------------------------------------------------------------------
true.tau = c(50, 150)
est.tau = c(tau.Island.changepointGA[4:(4+tau.Island.changepointGA[1]-1)])
cptDist(tau1=true.tau, tau2=est.tau, N=N)
## -----------------------------------------------------------------------------
sessionInfo()
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.