MATA271 Tietokoneharjoitus 2: Epidemian leviäminen

Tässä harjoituksessa tarkastellaan Reedin–Frostin epidemiamallia verkossa numeerista simulointia käyttäen. Kirjoita tekemiesi havaintojen pohjalta lyhyt kirjallinen raportti (kuvineen max 3 sivua; koodit erillisenä liitteenä), jossa esitetään vastaukset allaoleviin kysymyksiin. Huomaa, että:

Raportin tulee sisältää:

Mallin määrittely ja kuvaaminen vektoreilla

Verkossa on kolmenlaisia solmuja: alttiita (S), tartuttavia (I) ja parantuneita (R). Epidemia etenee vaiheittain, niin että Parametria p kutsutaan mallin tartuntatodennäköisyydeksi. Tarkastelemme tilannetta, missä alussa yksi verkon solmu on tartuttava ja muut alttiita. Tavoitteena on selvittää, miten suuri joukko solmuja saa tartunnan jossain vaiheessa epidemian etenemistä. Mallinnetaan systeemin tilaa vaihtuvapituisilla vektoreilla S(t), I(t) ja R(t), missä S(t) sisältää alttiiden solmujen indeksit t:nnen vaiheen alussa jne. Esim. tila
S(2) = (1, 3, 6)
tarkoittaa, että toisen vaiheen alussa alttiit verkon solmut ovat 1, 3 ja 6, ja tila
R(1) = (tyhjä vektori)
tarkoittaa, että ensimmäisen vaiheessa mikään solmu ei ole parantunut.

Tehtävä 1. Perustele miksi epidemian leviäminen pysähtyy äärellisen ajan kuluttua, ja että epidemian lopputila on hyvin määritelty.

Säännöllisen verkon luominen ja käsittely

Tutustu tiedoston SquareLatticeGraph.R koodiin ja kokeile ajaa se omassa tietokoneessasi.

Tehtävä 2. Selitä miten kyseinen funktio toimii ja mitä se palauttaa tuloksenaan.

Tehtävä 3. Kirjoita funktio, joka ottaa syötteeksi naapuruusmatriisin ja palauttaa vektorin, jonka alkioina ovat syötettyä naapuruusmatriisia vastaavan verkon solmujen asteluvut.

Tehtävä 4. Mikä on tiedoston SquareLatticeGraph.R tuottaman verkon keskimääräinen asteluku? Entä histogrammi?

Epidemiamalli neliöhilassa

Tutustu tiedoston EpidemicExample.R koodiin ja kokeile ajaa se omassa tietokoneessasi.

Tehtävä 5. Selitä tarkasti, miten kyseinen skripti laskee satunnaisen otoksen t:nnen vaiheen aikana tartunnan saavista solmuista. Mikä on muuttujan N sisältö heti sen päivittämisen jälkeen? Miksi skriptissä kutsutaan funktiota rbinom?

Tehtävä 6. Muokkaa kyseistä skriptiä siten, että saat laskettua verkon alttiiden, tartuttavien ja parantuneiden solmujen lukumäärät ajan funktiona. Piirrä muutama kuva kyseisistä otospoluista ajan funktiona.

Tehtävä 7. Kirjoita tiedoston EpidemicExample.R pohjalta funktio, joka ottaa syötteekseen parametrit S0, I0, R0, L, p (eli systeemin alkutila, verkon naapuruusmatriisi ja epidemian tartunta-tn) ja palauttaa tuloksena vektorin, jonka alkioina ovat niiden solmujen indeksit, jotka saavat infektion jonain hetkenä epidemian edetessä.

Tehtävä 8. Kirjoita tehtävän 7. funktiota kutsuva skripti, joka tuottaa 100 satunnaista otosta tartunnan lopulta saaneiden solmujen lukumäärästä. Piirrä näiden histogrammi jollekin parametrin p arvolle.

Tehtävä 9. Aja tehtävän 8. skriptiä eri parametrin p arvoilla ja yritä selvittää kriittinen tartuntatodennäköisyys pc, jolle pätee:

Epidemiamalli rengasverkossa

Tutustu tiedoston CycleGraph.R koodiin ja kokeile ajaa se omassa tietokoneessasi.

Tehtävä 10. Selitä miten kyseinen funktio toimii ja mitä se palauttaa tuloksenaan. Millaiset asteluvut verkon solmuilla on?

Tehtävä 11. Yritä selvittää epidemiamallin kriittinen tartuntatodennäköisyys pc tälle verkolle.

Epidemiamalli satunnaisverkossa

Tutustu tiedoston ERGraph.R koodiin ja kokeile ajaa se omassa tietokoneessasi.

Tehtävä 12. Selitä, mitä kyseinen funktio tarkalleen ottaen palauttaa tuloksenaan. Piirrä kuva näin generoidun verkon solmujen astelukujen histogrammista, kun r = 10/(n-1).

Tehtävä 13. Yritä selvittää kriittinen tartunatodennäköisyys pc tälle verkolle, kun parametrit valitaan siten, että verkon solmujen keskimääräinen asteluku on 10.

Verkkomallien vertailu

Vertaile muutamalla sanalla, miten epidemiamalli käyttäytyy yllämainituissa kolmessa verkkorakenteessa.


2011-10-18 Lasse Leskelä