02-Ebola illesztés

Az ../data/ebola.txt file tartalmazza a legutóbbi ebolajárvány terjedési idősorát országokra lebontva.

  • Ábrázoljuk az idő függvényében az összes bekövetkezett haláleset számát (Ezt az adatsort több oszlop összegeként tudjuk előállítani! ).
  • Illesszünk az összes bekövetkezett haláleset számára egy exponenciális függvényalakot! $$f(t,A,\beta)=A\mathrm{e}^{\beta t}$$

  • Becsüljük meg, ha nem tett volna az ENSZ semmit, akkor mikor pusztult volna ki az emberiség!

Megoldás

Először betöltjük a szükséges csomagokat.

In [1]:
%pylab inline
from scipy.optimize import curve_fit
Populating the interactive namespace from numpy and matplotlib

Majd betöltjük az adatokat

In [2]:
adatok = loadtxt("../data/ebola.txt")
halal = adatok[:,2] + adatok[:,5] + adatok[:,8] + adatok[:,11] + adatok[:,14]
t = adatok[:,0]

Ezután definiáljuk az exponenciális függvényt, és elvégezzük az illesztést, és ábrázoljuk a kapott adatokat.

In [3]:
def f(t, A, beta):
    '''Visszaadja t függvényében az A*e^(beta*t) függvényt'''
    return A * exp(beta * t)

eadt = curve_fit(f, t, halal, p0=[59, 0.0168])
# A becsült értéke a 0. napon, béta becsült értéke pedig az első két napon elhalálozottak számából adódott
eadt
Out[3]:
(array([  3.84890964e+01,   2.39052427e-02]),
 array([[  5.67916222e+00,  -8.92931643e-04],
        [ -8.92931643e-04,   1.43858538e-07]]))
In [4]:
plot(t, halal, label="halálozási adatok")
plot(t, eadt[0][0] * exp(eadt[0][1]*t), label="illesztett exponenciális görbe")
xlabel("napok száma", size=12)
ylabel("elhalálozások száma", size=12)
title("Az elhalálozások az idö múlásával", size=18, y=1.05)
legend(loc=0)
Out[4]:
<matplotlib.legend.Legend at 0x7fd0687a6b00>

Végül, egy ciklus segítségével, kiszámoljuk, hogy a járvány kezdetétől számított hányadik napon lépné át az elhalálozások száma az emberiség létszámát meghaladó 7 milliárdat.

In [5]:
kihalt = False
i = 1
while not kihalt:
    if eadt[0][0] * exp(eadt[0][1]*i) > 7e9:
        break
    i += 1
print("Az emberiség a {}. napon halt volna ki.".format(i))
Az emberiség a 796. napon halt volna ki.