Difference between revisions of "SIR model: swine flu"
From JSXGraph Wiki
Jump to navigationJump to searchA WASSERMANN (talk | contribs) |
A WASSERMANN (talk | contribs) |
||
Line 1: | Line 1: | ||
− | The SIR model | + | The SIR model (see also [[Epidemiology: The SIR model]]) tries to predict influenza epidemics. Here, we try to model the spreading of the swine flu. |
* According to the [http://www.cdc.gov/ CDC Centers of Disease Control and Prevention]: "Adults shed influenza virus from the day before symptoms begin through 5-10 days after illness onset. However, the amount of virus shed, and presumably infectivity, decreases rapidly by 3-5 days after onset in an experimental human infection model." So, here we set <math>\gamma=1/7=0.1428</math> as the recovery rate. This means, on average an infected person sheds the virus for 7 days. | * According to the [http://www.cdc.gov/ CDC Centers of Disease Control and Prevention]: "Adults shed influenza virus from the day before symptoms begin through 5-10 days after illness onset. However, the amount of virus shed, and presumably infectivity, decreases rapidly by 3-5 days after onset in an experimental human infection model." So, here we set <math>\gamma=1/7=0.1428</math> as the recovery rate. This means, on average an infected person sheds the virus for 7 days. | ||
* In [http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=2715422 Modeling influenza epidemics and pandemics: insights into the future of swine flu (H1N1)] the authors estimate the reproduction rate <math>R_0</math> of the virus to be about <math>2</math>. For the SIR model this means: the reproduction rate <math>R_0</math> for influenza is equal to the infection rate of the strain (<math>\beta</math>) multiplied by the duration of the infectious period (<math>1/\gamma</math>), i.e. | * In [http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=2715422 Modeling influenza epidemics and pandemics: insights into the future of swine flu (H1N1)] the authors estimate the reproduction rate <math>R_0</math> of the virus to be about <math>2</math>. For the SIR model this means: the reproduction rate <math>R_0</math> for influenza is equal to the infection rate of the strain (<math>\beta</math>) multiplied by the duration of the infectious period (<math>1/\gamma</math>), i.e. | ||
Line 89: | Line 89: | ||
} | } | ||
</jsxgraph> | </jsxgraph> | ||
+ | |||
+ | ===External links=== | ||
+ | * [http://www.cdc.gov/flu/professionals/acip/clinical.htm Clinical Signs and Symptoms of Influenza] | ||
+ | * [http://www.pubmedcentral.nih.gov/articlerender.fcgi?artid=2715422 Modeling influenza epidemics and pandemics: insights into the future of swine flu (H1N1)] | ||
+ | * [http://www.newscientist.com/article/dn17109-first-analysis-of-swine-flu-spread-supports-pandemic-plan.html First analysis of swine flu spread supports pandemic plan] | ||
+ | |||
+ | ===The underlying JavaScript code=== | ||
+ | <source lang="xml"> | ||
+ | <form><input type="button" value="clear and run a simulation of 200 days" onClick="clearturtle();run()"> | ||
+ | <input type="button" value="stop" onClick="stop()"> | ||
+ | <input type="button" value="continue" onClick="goOn()"></form> | ||
+ | </html> | ||
+ | <jsxgraph width="700" height="500"> | ||
+ | var brd = JXG.JSXGraph.initBoard('jxgbox', {originX: 20, originY: 300, unitX: 3, unitY: 250, axis:true}); | ||
+ | |||
+ | var S = brd.createElement('turtle',[],{strokeColor:'blue',strokeWidth:3}); | ||
+ | var I = brd.createElement('turtle',[],{strokeColor:'red',strokeWidth:3}); | ||
+ | var R = brd.createElement('turtle',[],{strokeColor:'green',strokeWidth:3}); | ||
+ | |||
+ | var s = brd.createElement('slider', [[0,-0.3], [60,-0.3],[0,1E-6,1]], {name:'s'}); | ||
+ | brd.createElement('text', [120,-0.3, "initially infected population rate"]); | ||
+ | var beta = brd.createElement('slider', [[0,-0.4], [60,-0.4],[0,0.2857,1]], {name:'β'}); | ||
+ | brd.createElement('text', [90,-0.4, "β: infection rate"]); | ||
+ | var gamma = brd.createElement('slider', [[0,-0.5], [60,-0.5],[0,0.1428,1]], {name:'γ'}); | ||
+ | brd.createElement('text', [90,-0.5, "γ: recovery rate = 1/(days of infection)"]); | ||
+ | |||
+ | var t = 0; // global | ||
+ | |||
+ | brd.createElement('text', [90,-0.2, | ||
+ | function() {return "Day "+t+": infected="+brd.round(1000000*I.Y(),1)+" recovered="+brd.round(1000000*R.Y(),1);}]); | ||
+ | |||
+ | S.hideTurtle(); | ||
+ | I.hideTurtle(); | ||
+ | R.hideTurtle(); | ||
+ | |||
+ | function clearturtle() { | ||
+ | S.cs(); | ||
+ | I.cs(); | ||
+ | R.cs(); | ||
+ | |||
+ | S.hideTurtle(); | ||
+ | I.hideTurtle(); | ||
+ | R.hideTurtle(); | ||
+ | } | ||
+ | |||
+ | function run() { | ||
+ | S.setPos(0,1.0-s.Value()); | ||
+ | R.setPos(0,0); | ||
+ | I.setPos(0,s.Value()); | ||
+ | |||
+ | delta = 1; // global | ||
+ | t = 0; // global | ||
+ | loop(); | ||
+ | } | ||
+ | |||
+ | function turtleMove(turtle,dx,dy) { | ||
+ | turtle.moveTo([dx+turtle.X(),dy+turtle.Y()]); | ||
+ | } | ||
+ | |||
+ | function loop() { | ||
+ | var dS = -beta.Value()*S.Y()*I.Y(); | ||
+ | var dR = gamma.Value()*I.Y(); | ||
+ | var dI = -(dS+dR); | ||
+ | turtleMove(S,delta,dS); | ||
+ | turtleMove(R,delta,dR); | ||
+ | turtleMove(I,delta,dI); | ||
+ | |||
+ | t += delta; | ||
+ | if (t<200.0) { | ||
+ | active = setTimeout(loop,10); | ||
+ | } | ||
+ | } | ||
+ | function stop() { | ||
+ | if (active) clearTimeout(active); | ||
+ | active = null; | ||
+ | } | ||
+ | function goOn() { | ||
+ | if (t>0) { | ||
+ | if (active==null) { | ||
+ | active = setTimeout(loop,10); | ||
+ | } | ||
+ | } else { | ||
+ | run(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </jsxgraph> | ||
+ | </source> | ||
+ | |||
+ | [[Category:Examples]] | ||
+ | [[Category:Turtle graphics]] |
Revision as of 13:37, 10 August 2009
The SIR model (see also Epidemiology: The SIR model) tries to predict influenza epidemics. Here, we try to model the spreading of the swine flu.
- According to the CDC Centers of Disease Control and Prevention: "Adults shed influenza virus from the day before symptoms begin through 5-10 days after illness onset. However, the amount of virus shed, and presumably infectivity, decreases rapidly by 3-5 days after onset in an experimental human infection model." So, here we set [math]\gamma=1/7=0.1428[/math] as the recovery rate. This means, on average an infected person sheds the virus for 7 days.
- In Modeling influenza epidemics and pandemics: insights into the future of swine flu (H1N1) the authors estimate the reproduction rate [math]R_0[/math] of the virus to be about [math]2[/math]. For the SIR model this means: the reproduction rate [math]R_0[/math] for influenza is equal to the infection rate of the strain ([math]\beta[/math]) multiplied by the duration of the infectious period ([math]1/\gamma[/math]), i.e.
- [math]\beta = R_0\cdot \gamma[/math]. Therefore, we set the :[math]\beta = 2\cdot 1/7 = 0.2857[/math]
- We run the simulation for a population of 1 million people, where 1 person is infected initially, i.e. [math]s=1E{-6}[/math].
Thus S(0) = 1, I(0) = 1.E-6, R(0) = 0 The lines in the JSXGraph-simulation below have the following meaning:
* Blue: Rate of susceptible population * Red: Rate of infected population * Green: Rate of recovered population
External links
- Clinical Signs and Symptoms of Influenza
- Modeling influenza epidemics and pandemics: insights into the future of swine flu (H1N1)
- First analysis of swine flu spread supports pandemic plan
The underlying JavaScript code
<form><input type="button" value="clear and run a simulation of 200 days" onClick="clearturtle();run()">
<input type="button" value="stop" onClick="stop()">
<input type="button" value="continue" onClick="goOn()"></form>
</html>
<jsxgraph width="700" height="500">
var brd = JXG.JSXGraph.initBoard('jxgbox', {originX: 20, originY: 300, unitX: 3, unitY: 250, axis:true});
var S = brd.createElement('turtle',[],{strokeColor:'blue',strokeWidth:3});
var I = brd.createElement('turtle',[],{strokeColor:'red',strokeWidth:3});
var R = brd.createElement('turtle',[],{strokeColor:'green',strokeWidth:3});
var s = brd.createElement('slider', [[0,-0.3], [60,-0.3],[0,1E-6,1]], {name:'s'});
brd.createElement('text', [120,-0.3, "initially infected population rate"]);
var beta = brd.createElement('slider', [[0,-0.4], [60,-0.4],[0,0.2857,1]], {name:'β'});
brd.createElement('text', [90,-0.4, "β: infection rate"]);
var gamma = brd.createElement('slider', [[0,-0.5], [60,-0.5],[0,0.1428,1]], {name:'γ'});
brd.createElement('text', [90,-0.5, "γ: recovery rate = 1/(days of infection)"]);
var t = 0; // global
brd.createElement('text', [90,-0.2,
function() {return "Day "+t+": infected="+brd.round(1000000*I.Y(),1)+" recovered="+brd.round(1000000*R.Y(),1);}]);
S.hideTurtle();
I.hideTurtle();
R.hideTurtle();
function clearturtle() {
S.cs();
I.cs();
R.cs();
S.hideTurtle();
I.hideTurtle();
R.hideTurtle();
}
function run() {
S.setPos(0,1.0-s.Value());
R.setPos(0,0);
I.setPos(0,s.Value());
delta = 1; // global
t = 0; // global
loop();
}
function turtleMove(turtle,dx,dy) {
turtle.moveTo([dx+turtle.X(),dy+turtle.Y()]);
}
function loop() {
var dS = -beta.Value()*S.Y()*I.Y();
var dR = gamma.Value()*I.Y();
var dI = -(dS+dR);
turtleMove(S,delta,dS);
turtleMove(R,delta,dR);
turtleMove(I,delta,dI);
t += delta;
if (t<200.0) {
active = setTimeout(loop,10);
}
}
function stop() {
if (active) clearTimeout(active);
active = null;
}
function goOn() {
if (t>0) {
if (active==null) {
active = setTimeout(loop,10);
}
} else {
run();
}
}
</jsxgraph>