[R-sig-dyn-mod] HELP for deSolve with SEIR model

Thomas Petzoldt thomas.petzoldt at tu-dresden.de
Thu Aug 11 07:48:38 CEST 2016


Dear Jack,

please have a look at:

http://desolve.r-forge.r-project.org

and especially:

http://desolve.r-forge.r-project.org/slides/tutorial.pdf

Thomas

Am 11.08.2016 um 05:53 schrieb 异昔时:
> Dear colleagues,
>
> I��m a new R-help user. I've read the advertisements about the good manners and I hope to propose a good question.
>
> I��m using R to build an epidemiological SEIR model based on ODEs. The deSolve package is very useful to solve deterministic ODE systems but I'd like to perform a SEIR model with a 'time control variable 'on the beta parameter.
>            Because my study is in school, so every Saturday and Sunday is vacation. the value of beta (the rate of spread of the disease) is 0 on vacation. The value of beta is a piecewise function rather than a fixed value.
> I don��t know how to change the code of original R-CODE. Have you some suggestions about useful methods and/or function in R for reaching my aim.
>
>
>
> Thanks in advance. Jack
>
>
>
>
>
> library (deSolve)
>
> seir_model = function (current_timepoint, state_values, parameters)
>
> {
>
>   # create state variables (local variables)
>
>   S = state_values [1]        # susceptibles
>
>   E = state_values [2]        # exposed
>
>   I = state_values [3]        # infectious
>
>   R = state_values [4]        # recovered
>
>
>
>   with (
>
>     as.list (parameters),     # variable names within parameters can be used
>
>          {
>
>            # compute derivatives
>
>            dS = (-beta * S * I)
>
>            dE = (beta * S * I) - (delta * E)
>
>            dI = (delta * E) - (gamma * I)
>
>            dR = (gamma * I)
>
>
>
>            # combine results
>
>            results = c (dS, dE, dI, dR)
>
>            list (results)
>
>          }
>
>     )
>
> }
>
>
>
>
>
> beta_value<-function(timepoints)              # beta=0.7 in original
>
> {
>
> result=ifelse(timepoints %in% c(6,7,12,14)==T,0,0.7)
>
> return(result)
>
> }
>
> beta_value(timepoints)
>
>
>
> gamma_value = 0.2
>
> delta_value = 1 / 21
>
>
>
> parameter_list = c (beta = beta_value(timepoints), gamma = gamma_value, delta = delta_value)
>
> V = 5000        # exposed hosts
>
> X = 9999        # susceptible hosts
>
> Y = 1           # infectious hosts
>
> Z = 0           # recovered hosts
>
>
>
> N = V + X + Y + Z
>
> initial_values = c (S = X/N, E = V/N, I = Y/N, R = Z/N)
>
> timepoints = seq (0, 50, by=1)
>
> output = lsoda (initial_values, timepoints, seir_model, parameter_list)
>
>
>
> head(output,50)
> 	[[alternative HTML version deleted]]
>
>
>
> _______________________________________________
> R-sig-dynamic-models mailing list
> R-sig-dynamic-models at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-dynamic-models
>



More information about the R-sig-dynamic-models mailing list