General Behavior of Infections

From Simulace.info
Revision as of 17:30, 15 January 2014 by Xvism00 (talk | contribs) (Results)
Jump to: navigation, search

Introduction

Problem definition

My semestral paper was on visualization of disease and it´s spreading amongst population. Although there are many models available, most of them are quite straightforward and very simple. Mostly they are concentrating on spreading the disease itself, without any thought placed into the surrounding environment, like spread of the people. I tried to make the whole system more complex by adding some basic behavior to the agents as well as more variables, by which is the infection defined. This creates a more complex insight into the way of spreading infections. At least to better extend than most models. The model and it´s interface is also designed for easy use and allow users change variables easily.

Note: I have do add, that the model is far from my liking actually. It still lacks complexity I would like to see and implement. That is partly due to problem with speed. Although simulating 10 000 agents with relatively simple behavior is possible, by adding more and more complex behavior, the whole system started to slow down considerably (I ended with one tick per 30 seconds which is not exactly ideal state for simulating).

Method

For my model of visualization, how diseases spread, I have chosen Netlogo as a tool, as it allows to play with all the values quite easily and reward the user with nice visualization of the whole situation, as well as giving enough data from various graphs and is robust enough, for simulating various relatively complex behavior.

How does it work?

There are two main modules. One take care of logic behind moving of agents and the other one is for infection spread. Although for easier navigation they are split into more files. The whole model consist of breed of agents called people. Patches have attributes, that tells agent, if they are inside city, village or out in country side. When people are spread, most of them is located inside cities, while is or is not present inside villages. Smaller portion of people are distributed randomly in country side. People have various decisions how to move. Mostly they move around in either country side, villages or cities. When they are in city, there is very big chance, that they stay inside the city. This simulates behavior, that we stay inside city, work and live here and occasionally venture out. Same goes for villages, but to a smaller degree, as the size of villages are smaller. Once in a while (when WILL to go out is bigger than randomly generated number), agent venture out to a randomly generated coordination. After he reaches it, he goes via the shortest way back where he came from. If disease is curable, the is marginally bigger chance of curing it inside city and slightly bigger in villages. In country, as there are no hospitals, chance of being cured is actually a lot smaller, than of that, which is set in interface. At the start, each of peoples have set, if he is infected or not. If he is, and he is contagious, he can spread disease and those near him may catch the disease. The exact way the disease work is following. First, people catch disease. At that moment, they may enter incubation period for which he is infected, but he cannot infect others. After certain period, he become contagious. Next step is that the disease became known to it´s surrounding. But until it is known, that person is infected, he cannot be cured. When certain amount of time passes and he was not cured, he will either die of disease or he may have constitution good enough, and he survives the disease. Surviving disease is equivalent to being cured. It may or may not give that person immunity.


So, how does it all work and who does all those buttons do? It all looks like this.

Xvism00 interfaceJPG.JPG

BUTTONS:

  • SETUP – set up whole model. Meaning people and surrounding.
  • GO (infinite) – to run model indefinitely.
  • GO(once) – to advance by one tick.
  • INFECT-BUTTON – button infect one random agent, who is not infected.

SWITCHES and CHOOSERS:

  • NO-CITY - when SETUP is pressed, space is void of cities and villages. This is how most other infection models work and it´s implemented for comparison with other models although agents lacks thanks to this some more advanced behavior. This switch override NUMBER-OF-CITIES slider. Meaning it is not important, how many cities you have chosen to spawn as long as the switch is in ON position.
  • INFECTED-AFTER-CURE? - If people can be infected, after they are cured from the disease. Setting the switch to position OFF means, that once agent is cured, he cannot catch the disease again, making him totally immune.
  • METHOD-OF-INFECTION - chooses by which method is the disease spread. Either by AIR (which is more effective) or by BODY-CONTACT, which is not se effective in spreading.

SLIDERS:

  • NUM-PEOPLE – total number of people created at setup.
  • NUMBER-OF-CITIES – number of cities created, which are then randomly spread around the field. The can be connected and theoreticaly emerge at the same location. Although given the number of patches, it is very unlikely. Size of each city can vary slightly due to random element (random-normal 500 200).
  • INFECTED-POP% - percent of population already infected at the creation of space.
  • INFECTION-CHANCE% - chance of spreading disease in percents. Note, that this is ONLY for rough value. Catching disease is randomized and more complex.
  • CHANCE-TO-CURE% - chance to be cured, after the disease make itself known to surrounding. In percents.
  • MORTALITY% - chance that disease will kill infected.
  • AVERAGE-LIFE-SPAN – average time for each agent, after being infected, to see, if he dies or survives. Each agent life span is calculated by (random-normal average-life-span 100).
  • INCUBATION-PERIOD – average time after agent is infected but does not infect other agents. Again, it is individualy calculated using random normal distribution.
  • RESISTANCE-GAIN - each time agent get cured, he gain this amount to his resistance roll, so next time, he resist the disease better.
  • AVG-RESISTANCE - average value which each agent is given at his setup. If set at 0, each agent has value starting with 0.

Results

There are many attributes and they're combination, which can be selected as means for obtaining relevant data. How many people are being cured, how many died and so on. It is also quite In my results I focused on how many people survived and how effective was the disease, when those attributes are changing:

  • INFECTION-CHANCE
  • CHANCE-TO-CURE
  • AVG-RESISTANCE
  • MORTALITY
  • RESISTANCE-GAIN
  • AVERAGE-LIFE-SPAN
  • NUMBER-OF-PEOPLE

For my results, I have chosen, which parameters are more crucial for maximal effectiveness of disease. Most important for us will be final values. That mean values at ticks = 2000. I ran two sets of runs. First set of rules was following:

["no-city" false]
["infected-after-cure?" true]
["infection-chance%" 10 50 75]
["chance-to-cure%" 0.1 1 5]
["avg-resistance" 0 40]
["number-of-cities" 3]
["infected-pop%" 10]
["incubation-period" 100]
["average-life-span" 500]
["num-people" 2000]
["method-of-infection" "air"]
["mortality%" 0 1 10]
["resistance-gain" 0]

The "winning" combination was no surprise. Biggest spread and biggest chance for dying after being infected. But having infection chance of 50% and average resistance of 40% is equivalent to infection chance of 10% and average resistance 0%. Most important factors are infection chance, followed by average resistance and then chance to cure. But for example, if we have chance to cure of 5% and average resistance 40% combined with 10% infection ration and 1% death rate, surprisingly, no one dies. As I was saying, there are many conclusions, which we can draw from results.

Second one have had those attributes and variables set:

["no-city" false]
["infected-after-cure?" true]
["infection-chance%" 100]
["chance-to-cure%" 0.1 0.3 0.8]
["avg-resistance" 0 80]
["number-of-cities" 3]
["infected-pop%" 10]
["incubation-period" 100]
["average-life-span" 100]
["num-people" 1000]
["method-of-infection" "air"]
["mortality%" 0 1 10]
["resistance-gain" 5]

Here we have infection chance 100%. That does not necessarily mean, that everyone will get infected. Reason for that is average resistance, which is here on (when not set at 0, it is on).

Exact results can be found in excel files, which I have transformed for easy use and simple orientation and for easy way to obtain necessary results.

Conclusion

Code