Message Boards Message Boards

32
|
39131 Views
|
18 Replies
|
42 Total Likes
View groups...
Share
Share this post:

Agent-Based Network Models for COVID-19

Posted 4 years ago

enter image description here

Attachments:
18 Replies
Posted 3 months ago

Dear Christopher,

Congratulations on the development of a very useful contagion network model. I have been working along the same issues using production networks (in which economic shocks are considered as disease propagation), which are structurally different from your contagion model based on undirected graphs. I have changed few properties of your model to experiment with directed production graphs.

My question: except a change in "agentNeighborhood" code to "Catenate[{#1 -> #2}", is there any other place that needs to be adjusted to accommodate directed networks? If so, could you please let me know which parts of your code needs revising to also study shock propagation in directed networks?

Furthermore, reading the comments on your code, I wonder whether there is a fundamental difference between simple and efficient implementations. I thought they would both produce the same results, but apparently experiments by others in this forum indicate that they are different in several respects like peak infection and speed of infection. Am I right?

Look forward to hearing from you.

Tugrul Temel

POSTED BY: Tugrul Temel
Posted 4 years ago
POSTED BY: Mike Lawler

I think I now understand the problem identified in my previous post, at least partially. Looking at the section "Make the susceptible neighbors of infected agents meet their neighbors" in the efficient method, and in particular the line Flatten[Lookup[neighbors,Normal[stateAgents["I"]]],1], this picks out all agents that are connected to an infected agent. However, in cases where an agent is connected to more than one infected agent they are then double-counted, effectively being given more than one opportunity to be infected in a single step (note that the fact that they are more likely to be infected if they are connected to more than one infected agent is already taken account of elsewhere).

A simple fix is to change the line to DeleteDuplicates[Flatten[Lookup[neighbors,Normal[stateAgents["I"]]],1]]. This significantly improves the agreement with the slower implementation, although there is still some discrepancy, with the efficient method now slightly favoring a later and lower peak.

POSTED BY: Barry Wardell

Ah, that's a good catch. I'll try to add that change to the notebook and edit the post.

I made that change and recomputed everything. None of the results look significantly affected, but thanks for finding that bug. The main post has been updated to show results from the new version.

POSTED BY: Barry Wardell
POSTED BY: Barry Wardell

Thanks. Very interesting. As a clinician in, so far, lucky New Zealand, I was interested in how increasing number of degrees of association in networks might affect transmission. I'm watching how Denmark reopening schools will, to my mind, likely create a very large network of associations very quickly.

Also found this paper, which appears to introduce heterogeneity of transmission as a concept. I suspect this is tautologous to how one might model death likelihoods in differing age/risk groups.

Maths so far a bit beyond my weekend explorer level, but the concepts seem useful.

[Percolation on heterogeneous networks as a model for epidemics][1]

POSTED BY: Matt Brook
Posted 4 years ago

Nice post, Christopher, thanks. It shows the power of Mathematica to generate and manipulate efficiently highly structured systems. We're working on similar structured-contact covid model for local settings (e.g. hospitals, city districts et al). Would be glad to share it, when ready

POSTED BY: David Gurarie

Thank you Shenghui! I ran successfully the notebook covid.nb in 2292 seconds. Thank you all!

Dear Christopher, Thank you for your prompt reply! I believe I did not run out of memory. I am trying again, using ParallelTable.

Aristeidis, I can give you a rough benchmark: I use a desktop with Xeon E2176M 6 core + 16GB RAM to run the whole notebook. It consumes 10 GB (maximum resource I have besides OS resources) and takes 3655 seconds to complete (using ParallelTable). Attached is a notebook with only input code from Christopher's article and my timing result.

Attachments:
POSTED BY: Shenghui Yang
Posted 4 years ago
POSTED BY: Diego Zviovich

enter image description here -- you have earned Featured Contributor Badge enter image description here

Your exceptional post has been selected for our editorial column Staff Picks http://wolfr.am/StaffPicks and Your Profile is now distinguished by a Featured Contributor Badge and is displayed on the Featured Contributor Board. Thank you!

POSTED BY: Moderation Team

Outstanding post, Christopher!

It's intriguing that the shape of the infected curve in the Simple Example section is fairly symmetrical and does not have the long exponential tail.

Generating the phase plane analysis from the simulations is amazing. I've seen (and done) these analyses using the traditional calculus-based approach, but it's wonderful that you can do the same with this model and show that many of the same principles apply.

POSTED BY: Robert Nachbar
Posted 4 years ago

Does this model enable to evaluate a number of infected people, using very long tail(s) of the confirmed cases (for example, using published data from China)? My thought was - the number of reported can be lower than the real/infected cases, but to make a justified decision on quarantine stop, one has to know both.

POSTED BY: Michael D.
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract