Remove all objects from workspace.

remove (list = objects() ) 

Load add-on packages - deSolve - contains lsoda function - differential equation solver.

library (deSolve)
## 
## Attaching package: 'deSolve'
## 
## The following object is masked from 'package:graphics':
## 
##     matplot

Function to compute derivatives of the differential equations.

sirc_model = function (current_timepoint, state_values, parameters)
{  
  # create state variables (local variables)
  S = state_values [1]        # susceptibles
  I = state_values [2]        # infectious
  R = state_values [3]        # recovered
  C = state_values [4]        # carrier
  
  with (
    as.list (parameters), # variable names within parameters can be used 
         { # compute derivatives
           dS = (-beta * S * I) - (reduce_transmission_rate *beta*S*C)
           dI = (beta*S*I)+(reduce_transmission_rate*beta*S*C)-(gamma*I)
           dR = (1-proportion_of_acute_infection)*(gamma * I) + (theta*C)
           dC = (proportion_of_acute_infection*gamma*I) - (theta*C)
           
           # combine results
           results = c (dS, dI, dR, dC)
           list (results)
         } 
        )
}

Parameters

contact_rate = 10                 # number of contacts per day
transmission_probability = 0.07   # transmission probability
infectious_period = 5             # infectious period
reduce_transmission_rate = 0.5    # recude transmission rate
proportion_of_acute_infection = 0.3 # propotion of acute infection that become carriers

Compute values of beta (tranmission rate) and gamma (recovery rate).

beta_value = contact_rate * transmission_probability
gamma_value = 1 / infectious_period
theta_value = 0.7

Compute Ro - Reproductive number.

Ro = beta_value / gamma_value

Disease dynamics parameters.

parameter_list = c (beta = beta_value, gamma = gamma_value, theta = theta_value, reduce_transmission_rate = 0.5, proportion_of_acute_infection = 0.3)

Initial values for sub-populations.

X = 9998       # susceptible hosts
Y = 1           # infectious hosts
Z = 0           # recovered hosts
W = 1           # carrier hosts

Compute total population.

N = X + Y + Z + W

Initial state values for the differential equations.

initial_values = c (S = X/N, I = Y/N, R = Z/N, C = W/N)

Output timepoints.

timepoints = seq (0, 50, by=1)

Simulate the SIRC epidemic.

output = lsoda (initial_values, timepoints, sirc_model, parameter_list)

Plot dynamics of Susceptibles sub-population.

plot (S ~ time, data = output, type='b', col = 'blue') 

Plot dynamics of Infectious sub-population.

plot (I ~ time, data = output, type='b', col = 'red')

Plot dynamics of Recovered sub-population.

plot (R ~ time, data = output, type='b', col = 'green') 

Plot dynamics of carrier sub-population.

plot (C ~ time, data = output, type='b', col = 'purple') 

Plot dynamics of Susceptibles, Infectious and Recovered sub-populations in the same plot.

# susceptible hosts over time
plot (S ~ time, data = output, type='b', ylim = c(0,1), col = 'blue', ylab = 'SIR/C', main = 'SIR/c epidemic') 
text(15,0.50, "S", col = 'blue')

# remain on same frame
par (new = TRUE)    

# infectious hosts over time
plot (I ~ time, data = output, type='b', ylim = c(0,1), col = 'red', ylab = '', axes = FALSE) 
text(30,0.25, "I", col = 'red')

# remain on same frame
par (new = TRUE)  

# recovered hosts over time
plot (R ~ time, data = output, type='b', ylim = c(0,1), col = 'green', ylab = '', axes = FALSE)   
text(30,0.70, "R", col = 'green')

# remain on same frame
par (new = TRUE)  

# carriered hosts over time
plot (C ~ time, data = output, type='b', ylim = c(0,1), col = 'purple', ylab = '', axes = FALSE)   
text(20,0.08, "C", col = 'purple')

Description: This infectious disease model has four (4) compartments which are susceptible (S), infected(I), recovered (R), and carrier (C). The disease dynamic is moving from susceptible hosts to infected stage. From the infected stage, hosts can develop immunity and move to recovery phase or hosts can be carrier. Carrier host could be developed to recovery phase later on. Hepatitis B is a good example of this infectious disease model.