truncate_sim: Truncate Simulation Time Series

View source: R/net.fn.utils.R

truncate_simR Documentation

Truncate Simulation Time Series

Description

Left-truncates simulation epidemiological summary statistics and network statistics at a specified time step.

Usage

truncate_sim(x, at, reset.time)

## S3 method for class 'dcm'
truncate_sim(x, at, reset.time = TRUE)

## S3 method for class 'icm'
truncate_sim(x, at, reset.time = TRUE)

## S3 method for class 'netsim'
truncate_sim(x, at, reset.time = TRUE)

Arguments

x

Object of class dcm, netsim, or icm.

at

Time step at which to left-truncate the time series.

reset.time

If TRUE, the time step sequence in the truncated model will be reset to start at 1. If FALSE, the original time step values will be preserved. Default is TRUE.

Details

This function would be used when running a follow-up simulation from time steps b to c after a burn-in period from time a to b, where the final time window of interest for data analysis is b to c only.

For icm and netsim objects, at is a time step as labeled by as.data.frame.icm(). With reset.time = FALSE, the time step of the first row kept is stored in control$epi.start, from which as.data.frame.icm(), the plot and summary methods, and comp_plot() label the time steps. Without it, the rows are labeled from 1, as in the output of icm() and netsim(), including restarted simulations.

For netsim objects, the network statistics are truncated along with the epi trackers, as both hold one row per time step. With reset.time = TRUE, the times of the attribute history, the raw records, the transmission matrix, and the cumulative edgelist are shifted to the new time steps as well, so that get_attr_at(), get_transmat() and make_networkDynamic() read them in the same frame. Their records before at are kept, with times of 0 or less, as the state of the nodes and edges at at depends on them and the transmissions before at remain part of the transmission chains.

The saved networks and the run sublists, which hold the state needed to restart a simulation, keep their original time steps. Build a restart point with make_restart_point() from the object before truncating it.

Value

The updated object of class dcm, netsim, or icm.

Examples

# DCM examples
param <- param.dcm(inf.prob = 0.2, act.rate = 0.25)
init <- init.dcm(s.num = 500, i.num = 1)
control <- control.dcm(type = "SI", nsteps = 200)
mod1 <- dcm(param, init, control)
plot(mod1)

# Reset time
mod2a <- truncate_sim(mod1, at = 150)
plot(mod2a)
head(as.data.frame(mod2a))

# Do not reset time
mod2b <- truncate_sim(mod1, at = 150, reset.time = FALSE)
plot(mod2b)
head(as.data.frame(mod2b))


# ICM example
param <- param.icm(inf.prob = 0.2, act.rate = 0.25)
init <- init.icm(s.num = 500, i.num = 1)
control <- control.icm(type = "SI", nsteps = 200, nsims = 1)
mod1 <- icm(param, init, control)

# Reset time
mod2a <- truncate_sim(mod1, at = 150)
plot(mod2a)
head(as.data.frame(mod2a))

# Do not reset time
mod2b <- truncate_sim(mod1, at = 150, reset.time = FALSE)
plot(mod2b)
head(as.data.frame(mod2b))



EpiModel documentation built on Oct. 16, 2026, 5:07 p.m.