Liens

Références pour les curieux

Anderson, R. M., Heesterbeek, H., Klinkenberg, D., & Hollingsworth, T. D. (2020). How will country-based mitigation measures influence the course of the COVID-19 epidemic? The Lancet, 395(10228), 931–934. https://doi.org/10.1016/S0140-6736(20)30567-5
Anderson, R. M., & May, R. M. (1979). Population biology of infectious diseases: Part I. Nature, 280(5721), 361–367. https://doi.org/10.1038/280361a0
Blackwood, J. C., & Childs, L. M. (2018). An introduction to compartmental modeling for the budding infectious disease modeler. Letters in Biomathematics, 5(1), 195–221. https://doi.org/10.1080/23737867.2018.1509026
Brauer, F. (2017). Mathematical epidemiology: Past, present, and future. Infectious Disease Modelling, 2(2), 113–127. https://doi.org/10.1016/j.idm.2017.02.001
Brauer, F. (2019). The Final Size of a Serious Epidemic. Bulletin of Mathematical Biology, 81(3), 869–877. https://doi.org/10.1007/s11538-018-00549-x
Chatzilena, A., van Leeuwen, E., Ratmann, O., Baguelin, M., & Demiris, N. (2019). Contemporary statistical inference for infectious disease models using Stan. Epidemics, 29, 100367. https://doi.org/10.1016/j.epidem.2019.100367
Chowell, G., Sattenspiel, L., Bansal, S., & Viboud, C. (2016). Mathematical models to characterize early epidemic growth: A review. Physics of Life Reviews, 18, 66–97. https://doi.org/10.1016/j.plrev.2016.07.005
Delamater, P. L., Street, E. J., Leslie, T. F., Yang, Y. T., & Jacobsen, K. H. (2019). Complexity of the Basic Reproduction Number (R 0 ). Emerging Infectious Diseases, 25(1), 1–4. https://doi.org/10.3201/eid2501.171901
Hébert-Dufresne, L., Althouse, B. M., Scarpino, S. V., & Allard, A. (2020). Beyond \(R_0\): The importance of contact tracing when predicting epidemics. ArXiv:2002.04004 [Physics, q-Bio]. http://arxiv.org/abs/2002.04004
Heesterbeek, H., Anderson, R. M., Andreasen, V., Bansal, S., De Angelis, D., Dye, C., Eames, K. T. D., Edmunds, W. J., Frost, S. D. W., Funk, S., Hollingsworth, T. D., House, T., Isham, V., Klepac, P., Lessler, J., Lloyd-Smith, J. O., Metcalf, C. J. E., Mollison, D., Pellis, L., … Isaac Newton Institute IDD Collaboration. (2015). Modeling infectious disease dynamics in the complex landscape of global health. Science, 347(6227), aaa4339–aaa4339. https://doi.org/10.1126/science.aaa4339
House, T., Ross, J. V., & Sirl, D. (2013). How big is an outbreak likely to be? Methods for epidemic final-size calculation. Proceedings of the Royal Society A: Mathematical, Physical and Engineering Sciences, 469(2150), 20120436. https://doi.org/10.1098/rspa.2012.0436
Keeling, M. J., & Eames, K. T. D. (2005). Networks and epidemic models. Journal of The Royal Society Interface, 2(4), 295–307. https://doi.org/10.1098/rsif.2005.0051
Lloyd-Smith, J. O., Schreiber, S. J., Kopp, P. E., & Getz, W. M. (2005). Superspreading and the effect of individual variation on disease emergence. Nature, 438(7066), 355–359. https://doi.org/10.1038/nature04153
Ma, J. (2020). Estimating epidemic exponential growth rate and basic reproduction number. Infectious Disease Modelling, 5, 129–141. https://doi.org/10.1016/j.idm.2019.12.009
Ma, J., Dushoff, J., Bolker, B. M., & Earn, D. J. D. (2014). Estimating Initial Epidemic Growth Rates. Bulletin of Mathematical Biology, 76(1), 245–260. https://doi.org/10.1007/s11538-013-9918-2
Mollison, D., Isham, V., & Grenfell, B. (1994). Epidemics: Models and Data. Journal of the Royal Statistical Society. Series A (Statistics in Society), 157(1), 115. https://doi.org/10.2307/2983509
Pandemic Influenza Outbreak Research Modelling Team (Pan-InfORM). (2009). Modelling an influenza pandemic: A guide for the perplexed. Canadian Medical Association Journal, 181(3–4), 171–173. https://doi.org/10.1503/cmaj.090885
Ridenhour, B., Kowalik, J. M., & Shay, D. K. (2014). Unraveling R 0: Considerations for Public Health Applications. American Journal of Public Health, 104(2), e32–e41. https://doi.org/10.2105/AJPH.2013.301704
Santillana, M., Tuite, A., Nasserie, T., Fine, P., Champredon, D., Chindelevitch, L., Dushoff, J., & Fisman, D. (2018). Relatedness of the incidence decay with exponential adjustment (IDEA) model, “Farr’s law” and SIR compartmental difference equation models. Infectious Disease Modelling, 3, 1–12. https://doi.org/10.1016/j.idm.2018.03.001
St-Onge, G., Thibeault, V., Allard, A., Dubé, L. J., & Hébert-Dufresne, L. (2020). School closures, event cancellations, and the mesoscopic localization of epidemics in networks with higher-order structure. ArXiv:2003.05924 [Nlin, Physics:Physics]. http://arxiv.org/abs/2003.05924
Sun, P., Lu, X., Xu, C., Sun, W., & Pan, B. (2020). Understanding of COVID‐19 based on current evidence. Journal of Medical Virology, jmv.25722. https://doi.org/10.1002/jmv.25722
Tuite, A., Fisman, D. N., & Greer, A. L. (2020). Mathematical modeling of COVID-19 transmission and mitigation strategies in the population of Ontario, Canada [Preprint]. Epidemiology. https://doi.org/10.1101/2020.03.24.20042705
Viboud, C., Simonsen, L., & Chowell, G. (2016). A generalized-growth model to characterize the early ascending phase of infectious disease outbreaks. Epidemics, 15, 27–37. https://doi.org/10.1016/j.epidem.2016.01.002


Heesterbeek et al. (2015)

Modèles phénoménologiques

Exponentiel

\[N(t) = N_{0}e^{rt}\]

EXP<-function(r,I0=1,days=30,dt=0.01){
    k<-seq(0,days,dt)
    m<-matrix(NA,nrow=length(k),ncol=length(r))
    colnames(m)<-r
    rownames(m)<-k
    m[1,]<-I0
    dN<-function(I){r*I}
    for(i in 2:length(k)){
         m[i,]<-m[i-1,]+dt*dN(m[i-1,])
    }
    m
}

r<-c(0.1,0.2)
days<-30
dt<-0.01
x<-EXP(r=r,I0=1,days=days,dt=dt)
matplot(x,type="l",xlab="Days",ylab="Nombre de cas cumulatifs",lty=1,lwd=2,xaxs="i",yaxs="i",log="",xaxt="n")
axis(1,at=seq(1,nrow(x),by=1/dt),labels=rownames(x)[seq(1,nrow(x),by=1/dt)])

Logistique

\[\frac{dN}{dt} = rN(t)\left(1-\frac{N(t)}{K}\right)\]

RLG<-function(r,a=1,K=c(100,1000,2000),I0=1,dt=0.01,days=30){
    k<-seq(0,days,dt)
    m<-matrix(NA,nrow=length(k),ncol=length(K))
    colnames(m)<-K
    rownames(m)<-k
    m[1,]<-I0
    dI<-function(I){r*I*(1-(I/K)^a)}
    for(i in 2:length(k)){
        m[i,]<-m[i-1,]+dt*dI(m[i-1,])
    }
    m
}

K<-c(100,1000,2000)
dt<-0.01
days<-30
x<-RLG(r=1.1,a=1,K=K,I0=1,dt=dt,days=days)
matplot(x,type="l",xlab="Days",ylab="Nombre de cas cumulatifs",lty=1,lwd=2,xaxs="i",yaxs="i",log="",xaxt="n",ylim=c(0,max(K)*1.1))
axis(1,at=seq(1,nrow(x),by=1/dt),labels=rownames(x)[seq(1,nrow(x),by=1/dt)])
legend("topleft",legend=paste("K =",K),bty="n",col=1:3,lwd=2)

Richards

\[\frac{dN}{dt} = rN(t)\left(1-\left(\frac{N(t)}{K}\right)^a\right)\]

RLG<-function(r,a,K,I0,dt,days){
    k<-seq(0,days,dt)
    m<-matrix(NA,nrow=length(k),ncol=length(a))
    colnames(m)<-a
    rownames(m)<-k
    m[1,]<-I0
    dI<-function(I){r*I*(1-(I/K)^a)}
    for(i in 2:length(k)){
        m[i,]<-m[i-1,]+dt*dI(m[i-1,])
    }
    m
}

a<-c(0.2,0.5,1)
days<-30
dt<-0.01
x<-RLG(r=1.5,a=a,K=10000,I0=1,dt=dt,days=days)
matplot(x,type="l",xlab="Days",ylab="Nombre de cas cumulatifs",lty=1,lwd=2,xaxs="i",yaxs="i",log="",xaxt="n",ylim=c(0,10000*1.1))
axis(1,at=seq(1,nrow(x),by=1/dt),labels=rownames(x)[seq(1,nrow(x),by=1/dt)])
legend("right",legend=paste("a =",a),bty="n",col=1:3,lwd=2)

Generalized Growth Model

\[\frac{dN}{dt} = rN(t)^{p}\]

\(p\) est un paramètre de décélération.
GGM<-function(r,p,I0=1,dt=0.1,days=5){
    k<-seq(0,days,dt)
    m<-matrix(NA,nrow=length(k),ncol=length(p))
    colnames(m)<-p
    rownames(m)<-k
    m[1,]<-I0
    dI<-function(I){r*I^p}
    for(i in 2:length(k)){
         m[i,]<-m[i-1,]+dt*dI(m[i-1,])
    }
    m
}

p<-c(0.5,0.9,1)
days<-30
dt<-0.01
x<-GGM(r=0.2,p=p,I0=1,dt=dt,days=days)
par(mfrow=c(1,2))
matplot(x,type="l",xlab="Times",ylab="Nombre de cas cumulatifs",lty=1,lwd=2,xaxs="i",yaxs="i",log="",xaxt="n")
axis(1,at=seq(1,nrow(x),by=1/dt),labels=rownames(x)[seq(1,nrow(x),by=1/dt)])
matplot(x,type="l",xlab="Times",ylab="Nombre de cas cumulatifs",lty=1,lwd=2,xaxs="i",yaxs="i",log="y",xaxt="n")
axis(1,at=seq(1,nrow(x),by=1/dt),labels=rownames(x)[seq(1,nrow(x),by=1/dt)])
legend("topleft",legend=paste("p =",p),bty="n",col=1:length(p),lwd=2)

Viboud et al. (2015)

Modèles compartimentaux


Ma et al. (2014)

SIR

\[\mathbf{S}usceptible - \mathbf{I}nfected - \mathbf{R}ecovered\]
\[\frac{dS}{dt} = -\beta \frac{SI}{N}\]
\[\frac{dI}{dt} = \beta \frac{SI}{N}-\gamma I\]
\[\frac{dR}{dt} = \gamma I\]
\[\frac{d}{dt}(S+I+R) = 0\]


\(\beta\): taux de transmission

\(\gamma\): taux de guérison

\(N\): population totale


\[R_{0} = \frac{\beta}{\gamma}\]

SIR<-function(S0,I0,beta,gamma,dt,days){
    N0<-S0+I0
    k<-seq(0,days,dt)
    m<-matrix(NA,ncol=3,nrow=length(k))
    colnames(m)<-c("S","I","R")
    rownames(m)<-k
    m[1,]<-c(S0,I0,N0-S0-I0)
    dS<-function(S,I){-beta*I*S/N0}
    dI<-function(S,I){beta*I*S/N0-gamma*I}
    for(i in 2:length(k)){
        S<-m[i-1,1] 
        I<-m[i-1,2] 
        m[i,1]<-S+dt*dS(S,I)
        m[i,2]<-I+dt*dI(S,I)
    }
    m[,3]<-N0-m[,1]-m[,2]
    m
}

beta<-c(3,3,3)
gamma<-c(0.5,1.5,2.5)
days<-30
dt<-0.01

par(mfrow=c(1,3))
l<-lapply(seq_along(beta),function(i){
     x<-SIR(S0=10^4,I0=1,beta=beta[i],gamma=gamma[i],dt=dt,days=days)
  matplot(x,type="l",xlab="Days",ylab="Population size",lty=1,lwd=2,xaxs="i",yaxs="i",xaxt="n")
  axis(1,at=seq(1,nrow(x),by=1/dt),labels=rownames(x)[seq(1,nrow(x),by=1/dt)])
  mtext(side=3,text=bquote(beta == .(beta[i]) ~~ gamma == .(gamma[i])))
  legend("right",legend=c("Susceptible","Infected","Recovered"),bty="n",col=1:3,lwd=2)
})

SEIR

\[\mathbf{S}usceptible - \mathbf{E}xposed - \mathbf{I}nfectious - \mathbf{R}ecovered\]
\[\frac{dS}{dt} = -\beta \frac{SI}{N}\]
\[\frac{dE}{dt} = \beta \frac{SI}{N}-\sigma E\]
\[\frac{dI}{dt} = \sigma E-\gamma I\]
\[\frac{dR}{dt} = \gamma I\]
\[\frac{d}{dt}(S+E+I+R) = 0\]


\(\beta\): taux de transmission

\(\sigma\): taux de développement des symptômes

\(\gamma\): taux de guérison

\(N\): population totale

SEIR<-function(S0,I0,beta,gamma,sigma,dt,days){
    N0<-S0+I0
    k<-seq(0,days,dt)
    m<-matrix(NA,ncol=4,nrow=length(k))
    colnames(m)<-c("S","E","I","R")
    rownames(m)<-k
    m[1,]<-c(S0,I0,0,0)
    dS<-function(S,I){-beta*I*S/N0}
    dE<-function(S,I){beta*I*S/N0-sigma*E}
    dI<-function(S,I){sigma*E-gamma*I}
    for(i in 2:length(k)){
        S<-m[i-1,1] 
        E<-m[i-1,2] 
        I<-m[i-1,3] 
        m[i,1]<-S+dt*dS(S,I)
        m[i,2]<-E+dt*dE(S,I)
        m[i,3]<-I+dt*dI(S,I)
    }
    m[,4]<-N0-m[,1]-m[,2]-m[,3]
    m
}

beta<-c(3,3,3)
sigma<-c(2,1,0.5)
gamma<-c(0.5,0.5,0.5)
dt<-0.01
days<-30

par(mfrow=c(1,3))
l<-lapply(seq_along(beta),function(i){
     x<-SEIR(S0=10^4,I0=1,beta=beta[i],sigma=sigma[i],gamma=gamma[i],dt=dt,days=days)
  cols<-c(1,"orange",2,3)
     matplot(x,type="l",xlab="Days",ylab="Population size",lty=1,lwd=2,xaxs="i",yaxs="i",col=cols,xaxt="n")
     axis(1,at=seq(1,nrow(x),by=1/dt),labels=rownames(x)[seq(1,nrow(x),by=1/dt)])
  mtext(side=3,text=bquote(beta == .(beta[i]) ~~ gamma == .(gamma[i])~~ sigma == .(sigma[i]) ))
  legend("right",legend=c("Susceptible","Exposed","Infectious","Recovered"),bty="n",col=cols,lwd=2)
})

Supposition du modèle SIR
  • Immunité complète (ou mort) suite à l’infection
  • Tous les individus sont également susceptibles
  • Population fermée (pas de naissances)
  • Tous les individus sont également suceptibles d’interagir
  • SIR avec décélération

    \[\beta(t) = \beta_{0}((1-\phi)e^{-qt}+\phi)\]


    \(\beta_{0}\): taux d’infection initial

    \(\phi\): proportion de la valeur initiale de \(\beta_{0}\) jusqu’où la décroissance se rend

    \(q\): taux de diminution de \(\beta\)

    bt<-function(t,beta0,phi,q){beta0*(((1-phi)*exp(-q*t))+phi)}
    
    days<-seq(0,30)
    beta0<-c(3,3,3)
    phi<-c(0.0,0.5,0.5)
    q<-c(0.3,0.3,0.001)
    
    par(mfrow=c(1,3))
    l<-lapply(seq_along(beta0),function(i){
        x<-bt(days,beta0[i],q=q[i],phi=phi[i])
        plot(x,type="l",xlab="Days",ylab=expression(beta),lty=1,lwd=2,xaxs="i",yaxs="i",ylim=c(0,max(beta0)))
        mtext(side=3,text=bquote(phi == .(phi[i]) ~~ q == .(q[i])))
    })


    \[\frac{dS}{dt} = -\beta(t) \frac{SI}{N}\]
    \[\frac{dI}{dt} = \beta(t) \frac{SI}{N}-\gamma I\]
    \[\frac{dR}{dt} = \gamma I\]
    \[\beta(t) = \beta_{0}((1-\phi)e^{-qt}+\phi)\]

    SIRb<-function(S0,I0,beta0,gamma,q,phi,dt,days){
        N0<-S0+I0
        k<-seq(0,days,dt)
        m<-matrix(NA,ncol=4,nrow=length(k))
        colnames(m)<-c("S","I","R","beta")
        rownames(m)<-k
        m[1,]<-c(S0,I0,N0-S0-I0,beta0)
        bt<-function(t){beta0*(((1-phi)*exp(-q*t))+phi)}
        dS<-function(b,S,I){-b*I*S/N0}
        dI<-function(b,S,I){b*I*S/N0-gamma*I}
        for(i in 2:length(k)){
            S<-m[i-1,1] 
            I<-m[i-1,2] 
            beta<-bt(i)
            m[i,1]<-S+dt*dS(beta,S,I)
            m[i,2]<-I+dt*dI(beta,S,I)
        }
        m[,3]<-N0-m[,1]-m[,2]
        m
    }
    
    beta0<-c(3,3,3)
    gamma<-c(1,1,1)
    phi<-c(0.1,0.1,0.1)
    q<-c(0.0025,0.0015,0.0001)
    days<-30
    dt<-0.01
    phi<-c(0.0,0.5,0.5)
    q<-c(0.3,0.3,0.001)
    
    
    par(mfrow=c(1,3))
    l<-lapply(seq_along(beta0),function(i){
        x<-SIRb(S0=10^4,I0=1,beta0=beta0[i],gamma=gamma[i],q=q[i],phi=phi[i],dt=dt,days=days)
        matplot(x,type="l",xlab="Times",ylab="Population size",lty=1,lwd=2,xaxs="i",yaxs="i",xaxt="n")
        axis(1,at=seq(1,nrow(x),by=1/dt),labels=rownames(x)[seq(1,nrow(x),by=1/dt)])
        mtext(side=3,text=bquote(phi == .(phi[i]) ~~ q == .(q[i])))
        legend("right",legend=c("Susceptible","Infected","Recovered"),bty="n",col=1:3,lwd=2)
        x
    })

    Extensions

    Types de modèles

    Stochastique

    Allen, L. J. S. (2017). A primer on stochastic epidemic models: Formulation, numerical simulation, and analysis. Infectious Disease Modelling, 2(2), 128–142. https://doi.org/10.1016/j.idm.2017.03.001

    Sur réseaux

    Keeling, M. J., & Eames, K. T. D. (2005). Networks and epidemic models. Journal of The Royal Society Interface, 2(4), 295–307. https://doi.org/10.1098/rsif.2005.0051

    Population multiples

    Chowell et al. (2016)

    Hétérogénéité dans les contacts


    Hébert-Dufresne et al. (2020)

    Distanciation sociale

    Park et al. (2020)