2014-11-21 Model with vaccines

References

Load packages

library(magrittr)
library(reshape2)
library(ggplot2)
library(deSolve)
## Warning: package 'deSolve' was built under R version 3.1.2

PlotFun <- function(parms = c(beta = (0.5*1), r = 1/7, u = 1/(70*365.25), v = 0.75),
                    inits = c(S = 499, I = 1, R = 0),
                    dt =  seq(0, 52, 0.01)) {

    fun <- function(t, x, parms) {
        with(as.list(c(parms, x)), {

            N  <- S + I + R

            dS <- - beta * I * S/N         + (1-v) * u * N - u * S
            dI <- + beta * I * S/N - r * I                 - u * I
            dR <-                  + r * I +    v  * u * N - u * R

            c(dS, dI, dR) %>% list
        })
    }

    ## simulate
    simulation <- as.data.frame(lsoda(inits, dt, fun, parms = parms))

    ## Plot
    outPlot <- melt(data          = simulation,
                    id.vars       = c("time"),
                    variable.name = "variable",
                    value.name    = "value") %>%
                        subset(x = ., TRUE) %>%
                        ggplot(data = ., mapping = aes(x = time, y = value, color = variable)) +
                        layer(geom = "line", size = 2) +
                        theme_bw() + theme(legend.key = element_blank())

    list(simulation, outPlot)
}

PlotFun(dt =  seq(0, 52, 0.01))[[2]]

plot of chunk unnamed-chunk-3

PlotFun(dt =  seq(0, 100000, 10))[[2]]

plot of chunk unnamed-chunk-3

Leaky vaccine

PlotFun <- function(parms = c(beta = (0.5*1), r = 1/7, u = 1/(70*365.25), v = 0.75, e = 0.1),
                    inits = c(S = 499, I = 1, R = 0, V = 0),
                    dt =  seq(0, 52, 0.01)) {

    fun <- function(t, x, parms) {
        with(as.list(c(parms, x)), {

            N  <- S + I + R + V

            dS <- - beta * I * S/N                            + (1-v) * u * N  - u * S
            dI <- + beta * I * S/N + e*beta * I * V/N - r * I                  - u * I
            dR <-                                     + r * I                  - u * R
            dV <-                  - e*beta * I * V/N         +    v  * u * N  - u * V

            c(dS, dI, dR, dV) %>% list
        })
    }

    ## simulate
    simulation <- as.data.frame(lsoda(inits, dt, fun, parms = parms))

    ## Plot
    outPlot <- melt(data          = simulation,
                    id.vars       = c("time"),
                    variable.name = "variable",
                    value.name    = "value") %>%
                        subset(x = ., TRUE) %>%
                        ggplot(data = ., mapping = aes(x = time, y = value, color = variable)) +
                        layer(geom = "line", size = 2) +
                        theme_bw() + theme(legend.key = element_blank())

    list(simulation, outPlot)
}

PlotFun(dt =  seq(0, 52, 0.01))[[2]]

plot of chunk unnamed-chunk-4

PlotFun(dt =  seq(0, 100000, 10))[[2]]

plot of chunk unnamed-chunk-4