sim.TSIR.full: Simulate full stochastic TSIR in parallel

Description Usage Arguments Value Author(s) See Also Examples

View source: R/hmob_funcs.R

Description

This function simulates TSIR models using both the basic gravity model and the gravity model with duration for each stochastic realization of the estimated model parameters (lambda, pi, rho, tau). The function runs the N.sim1 level simulations in parallel and the N.sim2 level simulations sequentially.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
sim.TSIR.full(
  N,
  D,
  B,
  R,
  lambda,
  prop.leave,
  prop.remain,
  beta,
  gamma,
  gen,
  I.0,
  N.sim1,
  N.sim2 = 100,
  max.t = 100,
  freq.dep = TRUE,
  parallel = FALSE,
  n.cores = NULL
)

Arguments

N

Vector giving the population size of each district

D

Distance matrix

B

Estimated parameters from basic gravity model

R

Estimated parameters from gravity model with duration

lambda

Estimated parameters from trip duration decay model (lambda), processed by the get.param.vals function

prop.leave

Observed proportion individuals leaving origin at time t in trip duration data

prop.remain

Observed proportion of individuals remaining in destination j

beta

Transmission rate

gamma

Recovery rate

I.0

Vector giving number of infected individuals in each district at time 0

N.sim1

Number of times to simulate matrices of model parameters (lambda, pi, tau, rho)

N.sim2

Number of times to simulate epidemic outcomes under each realization of model parameters (lambda, pi, tau, rho; default = 100)

max.t

Maximum number of generations (default = 100)

freq.dep

Logical indicating frequency (TRUE) or density dependent (FALSE) transmission

parallel

Logical indicating whether to initiate the cluster within sim.TSIR.full and register as foreach backend

n.cores

Number of cores to use when running in parallel

gen.t

Pathogen generation time (days)

Value

a list containing simulations using the basic gravity model and the gravity model with duration

Author(s)

John Giles

See Also

Other simulation: calc.hpd(), calc.prop.inf(), calc.prop.remain(), calc.timing.magnitude(), calc.wait.time(), decay.func(), get.age.beta(), get.beta.params(), sim.TSIR(), sim.combine.dual(), sim.combine(), sim.gravity.duration(), sim.gravity(), sim.lambda(), sim.pi(), sim.rho(), sim.tau()

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Duration data for the purpose of subsetting districts
y.route <- load.obj(3, './data/duration_data_arrays_1day_full.Rdata')      # y.month, y.route
y.route <- get.subsamp(y.route, min.locations=30, min.samp=20)

D <- load.obj(1, './data/distance_matrix_named.rdata')                # distance.matrix
N <- load.obj(1, './data/N_pop.rdata')  
B <- load.obj(2, './output/gravity_model_basic_nogamma.Rdata')
R <- load.obj(2, './output/gravity_model_duration_multialpha_nogamma_meanbasic.Rdata')

load('./output/decay_1day_62dists_summary.Rdata')                   # mod.decay # Decay model parameters (Lambda) 
load('./output/prop_remain_6pathogens_62dists_subsamp100.Rdata')    # prop.remain # proportion individuals remaining for full generation for each pathogen generation
load('./data/prop_leave.rdata')                                     # prop.leave # observed proportion individuals leaving origin at time t in trip duration data  

districts.all <- dimnames(D)[[1]] # full set of district names
districts <- attributes(y.route)$dimnames$origin # subset of 62 districts
n.districts <- length(districts)

tmp <- districts.all %in% districts
D <- D[tmp, tmp]
N <- N[names(N) %in% districts]
prop.leave <- prop.leave[,dimnames(prop.leave)$origin %in% districts]
lambda <- get.param.vals(n.districts=n.districts, name='lambda', level='route', stats=mod.decay)

params <- list(
     influenza=data.frame(pathogen='influenza', beta=1.5, gamma=0.75, gen=3, yrs=0.6)
)

pathogen <- 'influenza'
intro.district <- 42

I.0 <- rep(0, n.districts)
I.0[which(districts == intro.district)] <- 1   # introduction  

t <- Sys.time()
sim <- sim.TSIR.full(
     N=N,                                                                  # Vector giving the population size of each district
     D=D,                                                                  # Distance matrix
     lambda=lambda,                                                        # Decay model parameters (Lambda)
     B=B,                                                                  # Gravity model with duration
     R=R,                                                                  # Basic gravity model
     prop.leave=prop.leave,                                                # observed proportion individuals leaving origin at time t in trip duration data 
     prop.remain=prop.remain[[which(names(prop.remain) == pathogen)]],     # bserved proportion of individuals remaining in destination j
     beta=params[[pathogen]]$beta,                                         # Transmission rate
     gamma=params[[pathogen]]$gamma,                                       # Recovery rate
     gen=params[[pathogen]]$gen,                                           # Pathogen generation time
     I.0=I.0,                                                              # Vector giving number of infected individuals in each district at time 0
     N.sim1=5,                                                             # Number of times to simulate matrices of model parameters (lambda, pi, tau, rho)
     N.sim2=5,                                                             # Number of times to simulate epidemic outcomes under each realization of model parameters
     max.t=ceiling((365*params[[pathogen]]$yrs)/params[[pathogen]]$gen),   # Maximum number of generations
     parallel=TRUE,
     n.cores=n.cores
)
Sys.time() - t

gilesjohnr/hmob documentation built on Aug. 8, 2020, 1:26 a.m.