Difference between revisions of "Epidemiology: The SEIR model"

From JSXGraph Wiki
Jump to navigationJump to search
(New page: <html> <form><input type="button" value="clear and run a simulation of 100 days" onClick="clearturtle();run()"> </html> <jsxgraph width="600" height="600" box="box"> var brd = JXG.JSXGraph...)
 
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
For many important infections there is a significant period of time during which the individual has been infected but is not yet infectious himself. During this latent period the individual is in compartment E (for exposed).
 +
 +
Assuming that the period of staying in the latent state is a random variable with exponential distribution with
 +
parameter a (i.e. the average latent period is <math>a^{-1}</math>), and also assuming the presence of vital dynamics with birth rate equal to death rate, we have the model:
 +
 +
:<math> \frac{dS}{dt} = \mu N - \mu S - \beta \frac{I}{N} S </math>
 +
 +
:<math> \frac{dE}{dt} = \beta \frac{I}{N} S - (\mu +a ) E </math>
 +
 +
:<math> \frac{dI}{dt} = a E - (\gamma +\mu ) I </math>
 +
 +
:<math> \frac{dR}{dt} = \gamma I  - \mu R. </math>
 +
 +
Of course, we have that <math>S+E+I+R=N</math>.
 +
 +
The lines in the JSXGraph-simulation below have the following meaning:
 +
* <span style="color:Blue">Blue: Rate of susceptible population</span>
 +
* <span style="color:black">Black: Rate of exposed population</span>
 +
* <span style="color:red">Red: Rate of infectious population</span>
 +
* <span style="color:green">Green: Rate of recovered population (which means: immune, isolated or dead)
 +
 
<html>
 
<html>
 
<form><input type="button" value="clear and run a simulation of 100 days" onClick="clearturtle();run()">
 
<form><input type="button" value="clear and run a simulation of 100 days" onClick="clearturtle();run()">
 +
<input type="button" value="stop" onClick="stop()">
 +
<input type="button" value="continue" onClick="goOn()"></form>
 
</html>
 
</html>
<jsxgraph width="600" height="600" box="box">
+
<jsxgraph width="700" height="600" box="box">
var brd = JXG.JSXGraph.initBoard('box', {originX: 20, axis: true, originY: 300, unitX: 6, unitY: 250});
+
var brd = JXG.JSXGraph.initBoard('box', {axis: true, boundingbox: [-4, 1.25, 114, -1.25]});
  
var S = brd.createElement('turtle',[],{strokeColor:'yellow',strokeWidth:3});
+
var S = brd.createElement('turtle',[],{strokeColor:'blue',strokeWidth:3});
var W = brd.createElement('turtle',[],{strokeColor:'blue',strokeWidth:3});
+
var E = brd.createElement('turtle',[],{strokeColor:'black',strokeWidth:3});
 
var I = brd.createElement('turtle',[],{strokeColor:'red',strokeWidth:3});
 
var I = brd.createElement('turtle',[],{strokeColor:'red',strokeWidth:3});
 
var R = brd.createElement('turtle',[],{strokeColor:'green',strokeWidth:3});
 
var R = brd.createElement('turtle',[],{strokeColor:'green',strokeWidth:3});
Line 13: Line 36:
 
var beta = brd.createElement('slider', [[0,-0.4], [30,-0.4],[0,0.5,1]], {name:'&beta;'});
 
var beta = brd.createElement('slider', [[0,-0.4], [30,-0.4],[0,0.5,1]], {name:'&beta;'});
 
var gamma = brd.createElement('slider', [[0,-0.5], [30,-0.5],[0,0.3,1]], {name:'&gamma;'});
 
var gamma = brd.createElement('slider', [[0,-0.5], [30,-0.5],[0,0.3,1]], {name:'&gamma;'});
var mu = brd.createElement('slider', [[0,-0.6], [30,-0.6],[0,0.2,1]], {name:'&mu;'});
+
var mu = brd.createElement('slider', [[0,-0.6], [30,-0.6],[0,0.0,1]], {name:'&mu;'});
var a = brd.createElement('slider', [[0,-0.7], [30,-0.7],[0,0.1,1]], {name:'a'});
+
var a = brd.createElement('slider', [[0,-0.7], [30,-0.7],[0,1.0,1]], {name:'a'});
  
 
brd.createElement('text', [40,-0.3, "initially infected population rate (on load: I(0)=1.27E-6)"]);
 
brd.createElement('text', [40,-0.3, "initially infected population rate (on load: I(0)=1.27E-6)"]);
Line 23: Line 46:
  
 
brd.createElement('text', [40,-0.2,  
 
brd.createElement('text', [40,-0.2,  
         function() {return "Day "+t+": infected="+brd.round(7900000*I.pos[1],1)+" recovered="+brd.round(7900000*R.pos[1],1);}]);
+
         function() {return "Day "+t+": infected="+(7900000*I.Y()).toFixed(1)+" recovered="+(7900000*R.Y()).toFixed(1);}]);
           
+
 
 +
 
 
S.hideTurtle();
 
S.hideTurtle();
 
E.hideTurtle();
 
E.hideTurtle();
Line 44: Line 68:
 
function run() {
 
function run() {
 
   S.setPos(0,1.0-s.Value());
 
   S.setPos(0,1.0-s.Value());
   I.setPos(0,0);
+
   I.setPos(0,s.Value());
 
   R.setPos(0,0);
 
   R.setPos(0,0);
   E.setPos(0,s.Value());
+
   E.setPos(0,0);
 
                  
 
                  
 
   delta = 1; // global
 
   delta = 1; // global
Line 54: Line 78:
 
              
 
              
 
function turtleMove(turtle,dx,dy) {
 
function turtleMove(turtle,dx,dy) {
   //turtle.MoveTo([dx+turtle.pos[0],dy+turtle.pos[1]]);
+
   turtle.moveTo([dx+turtle.X(),dy+turtle.Y()]);
  turtle.lookTo([1.0+turtle.pos[0],dy+turtle.pos[1]]);
 
  turtle.fd(dx*Math.sqrt(1+dy*dy));
 
 
}
 
}
 
              
 
              
 
function loop() {
 
function loop() {
   var dS = mu.Value()*(1-S.pos[1])-beta*I.pos[1]*S.pos[1];  
+
   var dS = mu.Value()*(1.0-S.Y())-beta.Value()*I.Y()*S.Y();  
   var dE = beta*I.pos[1]*S.pos[1]-(mu.Value()+a.Value())*E.pos[1];
+
   var dE = beta.Value()*I.Y()*S.Y()-(mu.Value()+a.Value())*E.Y();
   var dI = a.Value()*E.pos[1]-(gamma.Value()+mu.Value())*I.pos[1];
+
   var dI = a.Value()*E.Y()-(gamma.Value()+mu.Value())*I.Y();
   var dR = gamma.Value()*I.pos[1]-mu.Value()*R.pos[1];
+
   var dR = gamma.Value()*I.Y()-mu.Value()*R.Y();
 
   turtleMove(S,delta,dS);
 
   turtleMove(S,delta,dS);
 
   turtleMove(E,delta,dE);
 
   turtleMove(E,delta,dE);
Line 90: Line 112:
 
}
 
}
 
</jsxgraph>
 
</jsxgraph>
 +
 +
===See also===
 +
* [[Epidemiology: The SIR model]]
 +
 +
===References===
 +
* [http://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology http://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology]
 +
 +
[[Category:Examples]]
 +
[[Category:Turtle Graphics]]
 +
[[Category:Calculus]]

Latest revision as of 16:58, 20 February 2013

For many important infections there is a significant period of time during which the individual has been infected but is not yet infectious himself. During this latent period the individual is in compartment E (for exposed).

Assuming that the period of staying in the latent state is a random variable with exponential distribution with parameter a (i.e. the average latent period is [math]a^{-1}[/math]), and also assuming the presence of vital dynamics with birth rate equal to death rate, we have the model:

[math] \frac{dS}{dt} = \mu N - \mu S - \beta \frac{I}{N} S [/math]
[math] \frac{dE}{dt} = \beta \frac{I}{N} S - (\mu +a ) E [/math]
[math] \frac{dI}{dt} = a E - (\gamma +\mu ) I [/math]
[math] \frac{dR}{dt} = \gamma I - \mu R. [/math]

Of course, we have that [math]S+E+I+R=N[/math].

The lines in the JSXGraph-simulation below have the following meaning:

* Blue: Rate of susceptible population
* Black: Rate of exposed population
* Red: Rate of infectious population
* Green: Rate of recovered population (which means: immune, isolated or dead)

See also

References