## ---- eval=TRUE--------------------------------------------------------------- # parameters a = 0.52 b = 2 c = 4 # equations Eq1 <- c(0,-1, 0,-1, 0, 0, 0, 0, 0, 0) Eq2 <- c(0, 0, 0, a, 0, 0, 1, 0, 0, 0) Eq3 <- c(b,-c, 0, 0, 0, 0, 0, 1, 0, 0) K = cbind(Eq1, Eq2, Eq3) visuEq(K, substit = c("x", "y", "z")) ## ---- eval=TRUE, fig.align='center'------------------------------------------- # equations v1 <- c(0.6, -0.6, 0.4) v2 <- c(-4, 2, 0.) nVar = 3 dMax = 2 outNumi1 <- numicano(nVar, dMax, Istep = 2000, onestep = 1/50, KL = K, v0 = v1) outNumi2 <- numicano(nVar, dMax, Istep = 2000, onestep = 1/50, KL = K, v0 = v2) plot(outNumi2$reconstr[,1], outNumi2$reconstr[,2], type = 'l', xlab = 't', ylab = 'x(t)') lines(outNumi1$reconstr[,1], outNumi1$reconstr[,2], type = 'l', col = 'red') legend(3,-2.5, c("i.c. v1", "i.c. v2"), col=c('red', 'black'), lty=1, cex = 0.8) ## ---- eval=TRUE, fig.align='center', fig.width=5, fig.height=5---------------- plot(outNumi2$reconstr[,2], outNumi2$reconstr[,3], type = 'l', xlab = 'x(t)', ylab = 'y(t)') lines(outNumi1$reconstr[,2], outNumi1$reconstr[,3], type = 'l', col = 'red') lines(outNumi2$reconstr[1:400,2], outNumi2$reconstr[1:400,3], type = 'p', col = 'orange', cex = 0.6) # initial condition lines(outNumi2$reconstr[1,2], outNumi2$reconstr[1,3], type = 'p', lwd = 3) lines(outNumi1$reconstr[1,2], outNumi1$reconstr[1,3], type = 'p', col = 'red', lwd = 3) legend(4,2, c("i.c. v1", "i.c. v2", "transient v2"), col=c('red', 'black', 'orange'), lty=c(1,1, NA), pch = c(NA,NA,1), cex = 0.6) ## ----gpomo1, eval=TRUE-------------------------------------------------------- # time vector tin <- outNumi1$reconstr[,1] # modelling from time series starting from initial condition v1 out1 <- gPoMo(data = outNumi1$reconstr[,2:4], tin = tin, dMax = 2, nS = c(1,1,1), show = 0, IstepMin = 10, IstepMax = 1500, nPmin = 7, nPmax = 7, method = 'rk4') ## ----gpomo2, eval=FALSE, include=FALSE---------------------------------------- # # # modelling from time series starting from initial condition v1 # out2 <- gPoMo(data = outNumi2$reconstr[,2:4], tin = tin, dMax = 2, nS = c(1,1,1), show = 0, # IstepMin = 10, IstepMax = 1500, nPmin = 7, nPmax = 7, method = 'rk4') ## ---- eval=FALSE-------------------------------------------------------------- # # visualize all the models obtained from i.c. v1 # visuOutGP(out1) # # visualize all the models obtained from i.c. v2 # visuOutGP(out2) ## ----visu1, eval=FALSE-------------------------------------------------------- # # Edit the equations of model obtained from time series generated from v1 # visuEq(out1$models$model5, substit = c("x", "y", "z"), approx = 2) ## ----visu1b, echo = FALSE, eval=TRUE------------------------------------------ # Edit the equations of model obtained from time series generated from v1 visuEq(data_vignetteVI$out1model5, substit = c("x", "y", "z"), approx = 2) ## ----visu2, eval=FALSE-------------------------------------------------------- # # Edit the equations of model obtained from time series generated from v2 # visuEq(out2$models$model5, substit = c("x", "y", "z"), approx = 2) ## ----visu2b, eval=TRUE, echo=FALSE-------------------------------------------- # Edit the equations of model obtained from time series generated from v2 visuEq(data_vignetteVI$out1model5, substit = c("x", "y", "z"), approx = 2) ## ---- eval=TRUE, include=FALSE------------------------------------------------ # modelling from time series starting from initial condition v1 out3 <- gPoMo(data = outNumi2$reconstr[1:400,2:4], tin = tin[1:400], dMax = 2, nS = c(1,1,1), show = 0, IstepMin = 10, IstepMax = 1500, nPmin = 7, nPmax = 7, method = 'rk4') ## ---- eval=FALSE-------------------------------------------------------------- # # min values # min(abs((out1$models$model5 - K) / K) * 100, na.rm = TRUE) # min(abs((out2$models$model5 - K) / K) * 100, na.rm = TRUE) # min(abs((out3$models$model5 - K) / K) * 100, na.rm = TRUE) # # max values # max(abs((out1$models$model5 - K) / K) * 100, na.rm = TRUE) # max(abs((out2$models$model5 - K) / K) * 100, na.rm = TRUE) # max(abs((out3$models$model5 - K) / K) * 100, na.rm = TRUE) ## ---- eval=TRUE, fig.align='center'------------------------------------------- plot(outNumi1$reconstr[,1], outNumi1$reconstr[,2], type = 'l', xlab = 't', ylab = 'x(t)', lwd = 3) lines(outNumi1$reconstr[1:1000,1], outNumi1$reconstr[1:1000,2]+0.25, col = 2, lwd = 3) lines(outNumi1$reconstr[1:900,1], outNumi1$reconstr[1:900,2]+0.5, col = 3, lwd = 3) lines(outNumi1$reconstr[1:800,1], outNumi1$reconstr[1:800,2]+1., col = 4, lwd = 3) lines(outNumi1$reconstr[1:700,1], outNumi1$reconstr[1:700,2]+1.25, col = 5, lwd = 3) ## ---- eval=TRUE, fig.align='center', fig.width=4, fig.height=4---------------- plot(outNumi1$reconstr[,2], outNumi1$reconstr[,3], type = 'l', xlab = 'x(t)', ylab = 'y(t)', lwd = 3) lines(outNumi1$reconstr[1:1000,2], outNumi1$reconstr[1:1000,3], col = 2, lwd = 3) lines(outNumi1$reconstr[1:900,2], outNumi1$reconstr[1:900,3], col = 3, lwd = 3) lines(outNumi1$reconstr[1:800,2], outNumi1$reconstr[1:800,3], col = 4, lwd = 3) lines(outNumi1$reconstr[1:700,2], outNumi1$reconstr[1:700,3], col = 5, lwd = 3) ## ---- eval=FALSE, include=FALSE----------------------------------------------- # # modelling using half the initial time series # out4 <- gPoMo(data = outNumi1$reconstr[1:1000,2:4], tin = tin[1:1000], # dMax = 2, nS = c(1,1,1), show = 0, # IstepMin = 10, IstepMax = 400, nPmin = 7, nPmax = 7, # method = 'rk4') # # modelling using 45% of the initial time series # out5 <- gPoMo(data = outNumi1$reconstr[1:900,2:4], tin = tin[1:900], # dMax = 2, nS = c(1,1,1), show = 0, # IstepMin = 10, IstepMax = 400, nPmin = 7, nPmax = 7, # method = 'rk4') # # modelling using 40% of the initial time series # out6 <- gPoMo(data = outNumi1$reconstr[1:800,2:4], tin = tin[1:800], # dMax = 2, nS = c(1,1,1), show = 0, # IstepMin = 10, IstepMax = 400, nPmin = 7, nPmax = 7, # method = 'rk4') # # modelling using 35% of the initial time series # out7 <- gPoMo(data = outNumi1$reconstr[1:700,2:4], tin = tin[1:700], # dMax = 2, nS = c(1,1,1), show = 0, # IstepMin = 10, IstepMax = 400, nPmin = 7, nPmax = 7, # method = 'rk4') ## ---- eval=FALSE-------------------------------------------------------------- # # visualize all the models obtained from i.c. v1 # visuOutGP(out7) ## ---- eval=FALSE-------------------------------------------------------------- # # min values # min(abs((out1$models$model5 - K) / K) * 100, na.rm = TRUE) # min(abs((out4$models$model5 - K) / K) * 100, na.rm = TRUE) # min(abs((out5$models$model5 - K) / K) * 100, na.rm = TRUE) # min(abs((out6$models$model5 - K) / K) * 100, na.rm = TRUE) # min(abs((out7$models$model5 - K) / K) * 100, na.rm = TRUE) # # max values # max(abs((out1$models$model5 - K) / K) * 100, na.rm = TRUE) # max(abs((out4$models$model5 - K) / K) * 100, na.rm = TRUE) # max(abs((out5$models$model5 - K) / K) * 100, na.rm = TRUE) # max(abs((out6$models$model5 - K) / K) * 100, na.rm = TRUE) # max(abs((out7$models$model5 - K) / K) * 100, na.rm = TRUE) ## ---- eval=TRUE, fig.align='center'------------------------------------------- plot(outNumi1$reconstr[,1], outNumi1$reconstr[,2], type = 'l', col = 'gray', xlab = 't', ylab = 'x(t)', lwd = 3) # subsample sub1 <- 50 tsub1 <- outNumi1$reconstr[seq(1, 2000, by = sub1),][,1] datsub1 <- outNumi1$reconstr[seq(1, 2000, by = sub1),][,2:4] lines(tsub1, datsub1[,1], type = 'p', col = 'red', lwd = 3) # resample xout <- seq(min(tsub1), max(tsub1), by = 0.01) rspl1x <- spline(tsub1, y = datsub1[,1], method = "fmm", xout = xout) rspl1y <- spline(tsub1, y = datsub1[,2], method = "fmm", xout = xout) rspl1z <- spline(tsub1, y = datsub1[,3], method = "fmm", xout = xout) lines(rspl1x$x, rspl1x$y, type='l', col='green') legend(0, 5, c("original", "subsampled", "resampled"), col=c('gray', 'red', 'green'), lty=c(1, NA, 1), pch = c(NA,1,NA), cex = 0.8) ## ---- include=TRUE, eval=FALSE------------------------------------------------ # # modelling using half the initial time series # out8 <- gPoMo(data = datsub1, tin = tsub1, dMax = 2, nS = c(1,1,1), show = 0, # IstepMin = 10, IstepMax = 400, nPmin = 2, nPmax = 12, method = 'rk4') ## ---- include=TRUE, eval=FALSE------------------------------------------------ # # modelling using half the initial time series # out9 <- gPoMo(data = cbind(rspl1x$y, rspl1y$y, rspl1z$y), tin = rspl1x$x, # dMax = 2, nS = c(1,1,1), show = 0, IstepMin = 10, IstepMax = 400, # nPmin = 2, nPmax = 12, method = 'rk4') ## ---- eval=FALSE-------------------------------------------------------------- # # model #44 # visuOutGP(out9, selecmod = 44, prioMinMax = "model") ## ----visu9, eval=FALSE-------------------------------------------------------- # # Equations # visuEq(out9$models$model44, substit = 1, approx = 4) ## ----visu9b, eval=TRUE, echo=FALSE-------------------------------------------- # Equations visuEq(data_vignetteVI$out9model44 , substit = 1, approx = 4) ## ---- include=TRUE, eval=FALSE------------------------------------------------ # # modelling using half the initial time series # out10 <- gPoMo(data = cbind(rspl1x$y, rspl1y$y, rspl1z$y), tin = rspl1x$x, # dMax = 2, nS = c(1,1,1), show = 0, winL = 13, # IstepMin = 10, IstepMax = 400, nPmin = 2, nPmax = 7, # method = 'rk4') ## ---- eval=FALSE-------------------------------------------------------------- # # model #25 # visuOutGP(out10, selecmod = 25, prioMinMax = "model") ## ---- eval=FALSE-------------------------------------------------------------- # # Equations # visuEq(out10$models$model25, substit = 1, approx = 4) ## ---- eval=TRUE, echo=FALSE--------------------------------------------------- # Equations visuEq(data_vignetteVI$out10model25, substit = 1, approx = 4) ## ---- eval=TRUE, fig.align='center'------------------------------------------- plot(outNumi1$reconstr[,1], outNumi1$reconstr[,2], type = 'l', col = 'gray', xlab = 't', ylab = 'x(t)', lwd = 3) # variance of (x, y, z): (5.795879, 5.629243, 4.654374) # add noise of 5% of the variance An1 <- 0.05 t <- outNumi1$reconstr[,1] datn1 <- outNumi1$reconstr[,2:4] datn1[,1] <- datn1[,1] + rnorm(dim(datn1)[1], mean = 0, sd = sqrt(5.795879) * An1) datn1[,2] <- datn1[,2] + rnorm(dim(datn1)[1], mean = 0, sd = sqrt(5.629243) * An1) datn1[,3] <- datn1[,3] + rnorm(dim(datn1)[1], mean = 0, sd = sqrt(4.654374) * An1) lines(t, datn1[,1], type = 'l', col = 'red', lwd = 1) bf <- butter(2, 1/50, type="low") b1x <- as.vector(filter(bf, datn1[,1])) b1y <- as.vector(filter(bf, datn1[,2])) b1z <- as.vector(filter(bf, datn1[,3])) b1 <- cbind(b1x, b1y, b1z) points(t[100:2000] - 0.5, b1[100:2000,1], col="black", pch=20) legend(0, 5, c("original", "noisy (5%)"), col=c('gray', 'red'), lty=1, cex = 0.8) ## ---- eval=TRUE, fig.align='center'------------------------------------------- plot(outNumi1$reconstr[,1], outNumi1$reconstr[,2], type = 'l', col = 'gray', xlab = 't', ylab = 'x(t)', lwd = 3) # add noise of 10% of the variance An2 <- 0.2 t <- outNumi1$reconstr[,1] datn2 <- outNumi1$reconstr[,2:4] datn2[,1] <- datn2[,1] + rnorm(dim(datn2)[1], mean = 0, sd = sqrt(5.795879) * An2) datn2[,2] <- datn2[,2] + rnorm(dim(datn2)[1], mean = 0, sd = sqrt(5.629243) * An2) datn2[,3] <- datn2[,3] + rnorm(dim(datn2)[1], mean = 0, sd = sqrt(4.654374) * An2) lines(t, datn2[,1], type = 'l', col = 'red', lwd = 1) bf <- butter(2, 1/70, type="low") b2x <- as.vector(filter(bf, datn2[,1])) b2y <- as.vector(filter(bf, datn2[,2])) b2z <- as.vector(filter(bf, datn2[,3])) b2 <- cbind(b2x, b2y, b2z) points(t[50:2000] - 0.5, b2[50:2000,1], col="black", pch=20) legend(0, 5, c("original", "noisy (10%)"), col=c('gray', 'red'), lty=1, cex = 0.8) ## ---- include=FALSE, eval=FALSE----------------------------------------------- # # modelling using half the initial time series # out11 <- gPoMo(data = b1, tin = t, # dMax = 2, nS = c(1,1,1), show = 0, # IstepMin = 10, IstepMax = 400, nPmin = 2, nPmax = 12, # method = 'rk4') ## ---- eval=FALSE-------------------------------------------------------------- # # model #25 # visuOutGP(out11, selecmod = 25, prioMinMax = "model") ## ---- eval=FALSE-------------------------------------------------------------- # # Equations # visuEq(out11$models$model25, substit = 1, approx = 4) ## ---- echo=FALSE, eval=TRUE--------------------------------------------------- # Equations visuEq(data_vignetteVI$out11model25, substit = 1, approx = 4) ## ---- eval=FALSE-------------------------------------------------------------- # # min values # min(abs((out11$models$model25 - K) / K) * 100, na.rm = TRUE) # # max values # max(abs((out11$models$model25 - K) / K) * 100, na.rm = TRUE)