[CALL] ways to visualize COVID-19 simulation results?

Posted 7 months ago
2190 Views
|
11 Replies
|
15 Total Likes
|
 [updated notebooks in comments - please go to latest]Hello Community, so I am working on enumerating the possible data visualizations of the results that will be coming from a monte carlo simulation of the effects of COVID-19 after various reopening scenarios. This post is strictly seeking contributions to visualizing the toy dataset defined in the attached notebook (the actual simulation is being done by someone else and is not ready yet). If you want to contribute to a system to help educate decision makers about various ways to think about this challenge in the face of great uncertainty in data, simulation, and underlying models, then please download the attached notebook, create a function that visualizes some aspect of the data like the first few examples I have added in the notebook, then post your results here. Given a clean data spec there are so many ways to visualize the data and each way allows someone to answer different questions. Let's help everyone wrap there head around this!Here is a simple graphical model of the data that will come out of the simulation...Here is the first example of a visualization of one aspect of the data... Attachments:
11 Replies
Sort By:
Posted 7 months ago
 update 1 (notebook attached): I have my first visualization, although it needs some better generalization into a reusable function for numerical demographics. I also need some better styling guidance.But a good night's progress on a very sizable (and imo important) task. Hope to see some others able to engage here, I know my prompt might be too abstract or vague, ask questions if you want to. Attachments:
Posted 7 months ago
 for the 2-level bar chart in update 1, using a legend for the bar colors for True and False would allow you to use the age group labels along the horizontal axis. Here is a simple hack of your BarChart that accomplishes this: BarChart[First /@ visualizeThis, Frame -> True, FrameLabel -> {"age", "percent of subgroup sick during given time period"}, PlotTheme -> "Detailed", ChartLabels -> {Rotate[#, Pi/2] & /@ Last /@ visualizeThis, None}, ChartLegends -> {False, True}, PlotLabel -> "# of people sick in time range in a given age group"] 
Posted 7 months ago
 Thanks Bob, that looks much cleaner! I have not played with charts and really appreciate the tweak.
Posted 7 months ago
 update 2 (notebook attached): So I have come across a math-y question about whether I should be calculating the average number of days someone is sick by looking at the average for each run individually, then averaging those... or just averaging the number of days for all individuals across all runs. I believe the correct way is the first approach as is evidenced by the last age group showing the proper mean with huge uncertainty. The question is shown in the attached notebook and the visualizations below shown there is a big consequence for the this decision.here is averaging each run first, then averaging the averages...and here is averaging all individuals across all runs in one go Attachments:
Posted 7 months ago
 update 3 (major revision): I improved the data structure to make it more closely tied to the result database. I also generalized pipeline a lot. I am still working on recreating the earlier visualizations in this new workflow. Attachments:
Posted 7 months ago
 How about this? data = Table[ RandomVariate[BetaDistribution[2, RandomReal[]], 100], {4}, {2}]; DistributionChart[data, ChartLegends -> {"False", "True"}, ChartLabels -> {{"0-9", "10-19", "20-29", "30+"}, None}] 
Posted 7 months ago
 Holy moly that is cool, I didn't even realize distribution chart was a thing! Thank you! Will start working on one of those. I just added a much cleaner data set and some starter code that I will begin working on to produce visualizations for one given action. Attaching here as well Attachments:
Posted 7 months ago
 I just have a quick question as I think visualizing states over time in each building could be very helpful. I see that your simulation data structure is big enough, but I cannot tell how the "states" vector is associated to person or date. Are consecutive records associated with people by date until all people are exhausted, and then move onto the next date? Or alternatively, are the records to be organized by person and run through all dates until exhausted, and then move to the next person?I am thinking of line graphs showing spread within buildings and then another graphic showing the impact of certain buildings on wider community spread as a generalization of the "superspreader" concept. Demonstrating a threshold infection rate in a building above which mitigation is the only option, could be a good graphic.Thank you, and good luck with the study.
Posted 7 months ago
 @nathan yes the data structure is a bit strange to avoid data redundancy since the files will get very large eventually. I am attaching a much simpler starter data set with some code to slice it in one way. I had not even thought about the states in a given building over time, that is bloody brilliant! I really appreciate the input! Each row in the "states" matrix is one person in the "people" vector. For a given row in the "states" matrix we are looking at the states over time of a single individual. Each entry in an individual's states over time corresponds to the "dates" vector. Attachments: