Interaktyvus pratimas nr. 7. SIR modelis

Šiame interaktyviame pratime nagrinėsime SIR modelį, kuris yra skirtas epidemiologams, kurie prognozuoja pandemijos elgesį šalyje. Kaip jau buvo minėta paskaitos metu, šis modelis yra pakankamai paprastai suvokiamas, tačiau nagrinėja tik tris asmenų tipus:
Iš angliškų grupių pavadinimų galite suprasti, kodėl modelis turi tokį pavadinimą.
Dėja, prie paskutinės grupės taip tat yra priskiriami ir mirę nuo ligos asmenys. Kitaip sakoma, kad trečiąją asmenų grupę sudaro taip vadinami pasibaigę atvėjai, t.y. tie, kuriems jau yra žinomas rezultatas (asmuo pasveiko arba mirė).
Modelis nagrinėja šių trijų grupių pokyčius realiuoju laiku. Dėl to modelyje susiduriame su išvestinės sąvoka. Jeigu konkrečiau, tai yra nagrinėjama diferencialinių lygčių sistema:
čia yra koeficientai, kurie parodo šias tikimybes:
Šiuos koeficientus siūlome keisti. Apačioje grafiškai pavaizduotos trys funkcijos - sveikieji asmenys, - užkrėstieji asmenys ir - pasveikę (arba mirę) asmenys.
Visą populiaciją laikydami lygią 1 galime keisti sveikųjų asmenų dalį populiacijoje pradiniu laiko momentu. Laikysime, kad visi kiti asmenys yra užsikrėtę, o pasveikusių asmenų pradiniu laiko momentu nėra. Taip pat galite keisti stebimo laiko intervalo galą T, t.y. epidemija bus stebima laikotarpiu .
b = 0.694;
c = 0.103;
t_end = 38;
t_int = [0 t_end];
healphy = 0.767;
infected = 1 - healphy;
recovered = 0;
IC = [healphy, infected, recovered];
[t, X] = ode45(@(t, X) SIR(t, X, b, c), t_int, IC);
S = X(:, 1);
I = X(:, 2);
R = X(:, 3);
plot(t, S);
hold on;
plot(t, I);
plot(t, R);
legend('S(t)', 'I(t)', 'R(t)')
hold off;
function dxdt = SIR(t, X, b, c)
dx1 = -b * X(2) * X(1);
dx2 = b * X(2) * X(1) - c * X(2);
dx3 = c * X(2);
dxdt = [dx1; dx2; dx3];
end

Pabandykite patys

  1. Pakeiskite modelį taip, kad būtų vertinamas faktas, jog pasveikęs žmogus gali pakairtotinai susirgti šia lyga su tam tikra tikimybe p.