Minimal SIR-like model

Defining and solving a simple ODE model

library('deSolve')
library('FME')

parameters <- list(beta = 2, 
                   gamma = 1)

infected_initial <- 0.01
initial_condition <- 
  c(S = 1 - infected_initial,
    I = infected_initial,
    R = 0)


sir_ode <- function(t, state, pars) {
  with(as.list(c(state, pars)), {
    dS <- - beta * I * S
    dI <- beta * I * S - gamma * I
    dR <- gamma * I
    return(list(c(dS, dI, dR)))
  })
}

timepoints <- seq(0, 10, by = 0.1)
sir_solution <- ode(y = initial_condition, 
                    times = timepoints,
                    func = sir_ode,
                    parms = parameters)

plot(sir_solution)

Trying to perform a sensitivity analysis

par_ranges <- data.frame(min = c(0.1, 0.1), 
                         max = c(5, 5), 
                         row.names = c('beta', 'gamma'))
s_r <- sensRange(sir_ode, state = initial_condition, 
                 sensvar = 'I', dist = 'grid',
                 pars = parameters, parRange = par_ranges[2, ])