Þ ¥bonds€¬cell_resultsÞ jÙ$251c06e4-fc77-11ea-1a0f-73139ba11e83Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚŒ<div class="markdown"><p>However, we should always be wary about visualisations such as these. Perhaps we should be plotting cases per capita instead of absolute numbers of cases. Or should we divide by the area of the country? Some countries, such as China and Canada, are divided into states or regions in the original data set â€“ but others, such as the US, are not. You should always check exactly what is being plotted&#33; </p>
<p>Unfortunately, published visualisations often hide some of  this information. This emphasises the need to be able to get our hands on the data, create our own visualisations and draw our own conclusions.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝÈ;°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$251c06e4-fc77-11ea-1a0f-73139ba11e83¹depends_on_disabled_cellsÂ§runtimeÎ X)µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$68f76d3b-b398-459d-bf39-20bf300dcaa2Š¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix¦String¨elementsÜ ’’­"Afghanistan"ªtext/plain’’©"Albania"ªtext/plain’’©"Algeria"ªtext/plain’’©"Andorra"ªtext/plain’’¨"Angola"ªtext/plain’’¬"Antarctica"ªtext/plain’’µ"Antigua and Barbuda"ªtext/plain’’«"Argentina"ªtext/plain’	’©"Armenia"ªtext/plain’
’«"Australia"ªtext/plain’’«"Australia"ªtext/plain’’«"Australia"ªtext/plain’’«"Australia"ªtext/plain’’«"Australia"ªtext/plain’’«"Australia"ªtext/plain’’«"Australia"ªtext/plain’’«"Australia"ªtext/plain’’©"Austria"ªtext/plain’’¬"Azerbaijan"ªtext/plain’’©"Bahamas"ªtext/plain¤more’Í’©"Uruguay"ªtext/plain’Í’¬"Uzbekistan"ªtext/plain’Í’©"Vanuatu"ªtext/plain’Í’«"Venezuela"ªtext/plain’Í’©"Vietnam"ªtext/plain’Í’´"West Bank and Gaza"ªtext/plain’Í’¶"Winter Olympics 2022"ªtext/plain’Í’§"Yemen"ªtext/plain’Í ’¨"Zambia"ªtext/plain’Í!’ª"Zimbabwe"ªtext/plain¤type¥Array¬prefix_short ¨objectid°753d811beaab27f4¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee­all_countries²last_run_timestampËAÚæŸ,°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$68f76d3b-b398-459d-bf39-20bf300dcaa2¹depends_on_disabled_cellsÂ§runtimeÍSQµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$8990f13a-fc35-11ea-338f-0955eeb23c3cŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ<div class="markdown"><p>Here we have used an <strong>anonymous function</strong> with the syntax <code>x -&gt; â‹¯</code>. This is a function which takes the argument <code>x</code> and returns whatever is on the right of the arrow &#40;<code>-&gt;</code>&#41;.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ ·°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$8990f13a-fc35-11ea-338f-0955eeb23c3c¹depends_on_disabled_cellsÂ§runtimeÎ `¨µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$b3880f40-fc36-11ea-074a-edc51adeb6f0Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ1<div class="markdown"><h2>Using dates</h2>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ*g°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$b3880f40-fc36-11ea-074a-edc51adeb6f0¹depends_on_disabled_cellsÂ§runtimeÎ Í[µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$25c79620-14f4-45a7-b120-05ec72cb77e9Š¦queuedÂ¤logs�§runningÂ¦output†¤body±dateformat"m/d/Y"¤mimeªtext/plain¬rootassignee«date_format²last_run_timestampËAÚçè]-°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$25c79620-14f4-45a7-b120-05ec72cb77e9¹depends_on_disabled_cellsÂ§runtimeÎ [U¯µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$0f87cec6-fc31-11ea-23d2-395e61f38b6fŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙD<div class="markdown"><h1>Module 2: Epidemic propagation</h1>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜþØM°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$0f87cec6-fc31-11ea-23d2-395e61f38b6f¹depends_on_disabled_cellsÂ§runtimeÎ êµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$893a417c-fcea-11ea-38f4-1df639c54cbcŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚy+<script>
var elem = document.getElementById("map");
elem.mapbox.getSource('points').setData({"features":[{"properties":{"size":0.0},"geometry":{"coordinates":[67.709953,33.93911],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[20.1683,41.1533],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[1.6596,28.0339],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[1.5218,42.5063],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[17.8739,-11.2027],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[23.347,-71.9499],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-61.7964,17.0608],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-63.6167,-38.4161],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[45.0382,40.0691],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[149.0124,-35.4735],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[151.2093,-33.8688],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[130.8456,-12.4634],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[153.0251,-27.4698],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[138.6007,-34.9285],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[147.3272,-42.8821],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[144.9631,-37.8136],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[115.8605,-31.9505],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[14.5501,47.5162],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[47.5769,40.1431],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-78.035889,25.025885],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[50.55,26.0275],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[90.3563,23.685],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-59.5432,13.1939],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[27.9534,53.7098],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[4.469936,50.8333],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-88.4976,17.1899],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[2.3158,9.3077],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[90.4336,27.5142],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-63.5887,-16.2902],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[17.6791,43.9159],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[24.6849,-22.3285],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-51.9253,-14.235],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[114.7277,4.5353],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[25.4858,42.7339],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-1.5616,12.2383],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[95.956,21.9162],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[29.9189,-3.3731],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-23.0418,16.5388],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[104.9167,11.55],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[11.5021,3.848],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-116.5765,53.9333],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-127.6476,53.7267],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[0.0,0.0],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[0.0,0.0],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-98.8139,53.7609],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-66.4619,46.5653],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-57.6604,53.1355],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-124.8457,64.8255],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-63.7443,44.682],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-83.1076,70.2998],"type":"Point"},"type":"Feature"},{"properties":{"size":0.6020599913279624},"geometry":{"coordinates":[-85.3232,51.2538],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-63.4168,46.5107],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-73.5491,52.9399],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[null,null],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-106.4509,52.9399],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-135.0,64.2823],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[20.9394,6.6111],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[18.7322,15.4542],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-71.543,-35.6751],"type":"Point"},"type":"Feature"},{"properties":{"size":1.806179973983887},"geometry":{"coordinates":[117.2264,31.8257],"type":"Point"},"type":"Feature"},{"properties":{"size":1.806179973983887},"geometry":{"coordinates":[116.4142,40.1824],"type":"Point"},"type":"Feature"},{"properties":{"size":0.9542425094393249},"geometry":{"coordinates":[107.874,30.0572],"type":"Point"},"type":"Feature"},{"properties":{"size":1.2041199826559248},"geometry":{"coordinates":[117.9874,26.0789],"type":"Point"},"type":"Feature"},{"properties":{"size":0.6020599913279624},"geometry":{"coordinates":[104.2861,35.7518],"type":"Point"},"type":"Feature"},{"properties":{"size":1.5563025007672873},"geometry":{"coordinates":[113.4244,23.3417],"type":"Point"},"type":"Feature"},{"properties":{"size":0.9542425094393249},"geometry":{"coordinates":[108.7881,23.8298],"type":"Point"},"type":"Feature"},{"properties":{"size":0.6020599913279624},"geometry":{"coordinates":[106.8748,26.8154],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[109.7453,19.1959],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[116.1306,39.549],"type":"Point"},"type":"Feature"},{"properties":{"size":0.6020599913279624},"geometry":{"coordinates":[127.7615,47.862],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[114.9042,37.8957],"type":"Point"},"type":"Feature"},{"properties":{"size":0.6020599913279624},"geometry":{"coordinates":[114.2,22.3],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[112.2707,30.9756],"type":"Point"},"type":"Feature"},{"properties":{"size":1.3979400086720377},"geometry":{"coordinates":[111.7088,27.6104],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[113.9448,44.0935],"type":"Point"},"type":"Feature"},{"properties":{"size":1.2041199826559248},"geometry":{"coordinates":[119.455,32.9711],"type":"Point"},"type":"Feature"},{"properties":{"size":1.3979400086720377},"geometry":{"coordinates":[115.7221,27.614],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[126.1923,43.6661],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[122.6085,41.2956],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[113.55,22.1667],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[106.1655,37.2692],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[95.9956,35.7452],"type":"Point"},"type":"Feature"},{"properties":{"size":0.9542425094393249},"geometry":{"coordinates":[108.8701,35.1917],"type":"Point"},"type":"Feature"},{"properties":{"size":1.2041199826559248},"geometry":{"coordinates":[118.1498,36.3427],"type":"Point"},"type":"Feature"},{"properties":{"size":1.6901960800285136},"geometry":{"coordinates":[121.4491,31.202],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[112.2922,37.5777],"type":"Point"},"type":"Feature"},{"properties":{"size":0.9542425094393249},"geometry":{"coordinates":[102.7103,30.6171],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[117.323,39.3054],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[88.0924,31.6927],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[null,null],"type":"Point"},"type":"Feature"},{"properties":{"size":0.6020599913279624},"geometry":{"coordinates":[85.2401,41.1129],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[101.487,24.974],"type":"Point"},"type":"Feature"},{"properties":{"size":2.4608978427565478},"geometry":{"coordinates":[120.0934,29.1832],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-74.2973,4.5709],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[43.3333,-11.6455],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[15.8277,-0.228],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[21.7587,-4.0383],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-83.7534,9.7489],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-5.5471,7.54],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[15.2,45.1],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-77.781167,21.521757],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[33.4299,35.1264],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[15.473,49.8175],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-6.9118,61.8926],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-42.6043,71.7069],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[9.5018,56.2639],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[0.0,0.0],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[42.5903,11.8251],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-61.371,15.415],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-70.1627,18.7357],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-78.1834,-1.8312],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[30.802498,26.820553],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-88.8965,13.7942],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[10.2679,1.6508],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[39.7823,15.1794],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[25.0136,58.5953],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[31.4659,-26.5225],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[40.4897,9.145],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[178.065,-17.7134],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[25.748151,61.92411],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-53.1258,3.9339],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[149.4068,-17.6797],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-61.551,16.265],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-61.0242,14.6415],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[45.166244,-12.8275],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[165.618042,-20.904305],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[55.5364,-21.1151],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-62.8333,17.9],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-56.3159,46.8852],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-63.0501,18.0708],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-178.1165,-14.2938],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[2.2137,46.2276],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[11.6094,-0.8037],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-15.3101,13.4432],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[43.3569,42.3154],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[10.451526,51.165691],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-1.0232,7.9465],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[21.8243,39.0742],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-61.679,12.1165],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-90.2308,15.7835],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-9.6966,9.9456],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-15.1804,11.8037],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-58.93018,4.860416],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-72.2852,18.9712],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[12.4534,41.9029],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-86.2419,15.2],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[19.5033,47.1625],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-19.0208,64.9631],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[78.96288,20.593684],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[113.9213,-0.7893],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[53.688046,32.427908],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[43.679291,33.223191],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-7.6921,53.1424],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[34.851612,31.046051],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[12.56738,41.87194],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-77.2975,18.1096],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[138.252924,36.204824],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[36.51,31.24],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[66.9237,48.0196],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[37.9062,-0.0236],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-168.734,-3.3704],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[127.5101,40.3399],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[127.766922,35.907757],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[20.902977,42.602636],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[47.481766,29.31166],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[74.766098,41.20438],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[102.495496,19.85627],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[24.6032,56.8796],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[35.8623,33.8547],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[28.2336,-29.61],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-9.429499,6.428055],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[17.228331,26.3351],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[9.55,47.14],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[23.8813,55.1694],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[6.1296,49.8153],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[0.0,0.0],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[46.869107,-18.766947],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[34.3015,-13.2543],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[101.975766,4.210484],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[73.2207,3.2028],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-3.996166,17.570692],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[14.3754,35.9375],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[171.1845,7.1315],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-10.9408,21.0079],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[57.552152,-20.348404],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-102.5528,23.6345],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[150.5508,7.4256],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[28.3699,47.4116],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[7.4167,43.7333],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[103.8467,46.8625],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[19.37439,42.708678],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-7.0926,31.7917],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[35.529562,-18.665695],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[18.4904,-22.9576],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[166.9315,-0.5228],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[84.25,28.1667],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-69.9683,12.5211],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-68.2385,12.1784],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-68.99,12.1696],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-63.0548,18.0425],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[5.2913,52.1326],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-159.7777,-21.2367],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-169.8672,-19.0544],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[174.886,-40.9006],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-85.207229,12.865416],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[8.081666,17.607789],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[8.6753,9.082],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[21.7453,41.6086],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[8.4689,60.472],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[55.923255,21.512583],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[69.3451,30.3753],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[134.5825,7.515],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-80.7821,8.538],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[143.95555,-6.314993],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-58.4438,-23.4425],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-75.0152,-9.19],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[121.774017,12.879721],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[19.1451,51.9194],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-8.2245,39.3999],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[51.1839,25.3548],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[24.9668,45.9432],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[105.318756,61.52401],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[29.8739,-1.9403],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-62.782998,17.357822],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-60.9789,13.9094],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-61.2872,12.9843],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-172.1046,-13.759],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[12.4578,43.9424],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[6.6131,0.1864],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[45.079162,23.885942],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-14.4524,14.4974],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[21.0059,44.0165],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[55.492,-4.6796],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-11.779889,8.460555],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[103.8333,1.2833],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[19.699,48.669],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[14.9955,46.1512],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[160.1562,-9.6457],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[46.199616,5.152149],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[22.9375,-30.5595],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[31.307,6.877],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-3.74922,40.463667],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[80.771797,7.873054],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[30.2176,12.8628],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[139.7737,35.6491],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-56.0278,3.9193],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[18.643501,60.128161],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[8.2275,46.8182],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[38.996815,34.802075],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[121.0,23.7],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[71.2761,38.861],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[34.888822,-6.369028],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[100.992541,15.870032],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[125.727539,-8.874217],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[0.8248,8.6195],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-175.1982,-21.179],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-61.2225,10.6918],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[9.537499,33.886917],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[35.2433,38.9637],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[177.6493,-7.1095],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-100.0,40.0],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[32.290275,1.373333],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[31.1656,48.3794],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[53.847818,23.424076],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-63.0686,18.2206],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-64.7505,32.3078],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-64.64,18.4207],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-81.2546,19.3133],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-2.3644,49.3723],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-59.5236,-51.7963],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-5.3536,36.1408],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-2.58949,49.448196],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-4.5481,54.2361],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-2.1358,49.2138],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-62.187366,16.742498],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-128.3242,-24.3768],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-14.3559,-7.9467],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-71.7979,21.694],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-3.436,55.3781],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-55.7658,-32.5228],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[64.585262,41.377491],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[166.9592,-15.3767],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[-66.5897,6.4238],"type":"Point"},"type":"Feature"},{"properties":{"size":0.6020599913279624},"geometry":{"coordinates":[108.277199,14.058324],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[35.2332,31.9522],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[116.4074,39.9042],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[48.516388,15.552727],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[27.849332,-13.133897],"type":"Point"},"type":"Feature"},{"properties":{"size":0.0},"geometry":{"coordinates":[29.154857,-19.015438],"type":"Point"},"type":"Feature"}],"type":"FeatureCollection"})
</script>
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚê¿}9°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$893a417c-fcea-11ea-38f4-1df639c54cbc¹depends_on_disabled_cellsÂ§runtimeÎ;Ó>µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$252eff18-fc3d-11ea-0c18-7b130ada882eŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ«<div class="markdown"><p>A visual check for this is to plot the data with a <strong>logarithmic scale</strong> on the <span class="tex">$y$</span> axis &#40;but a standard scale on the <span class="tex">$x$</span> axis&#41;.</p>
<p>The reason for this is that if we observe a straight line on such a semi-logarithmic plot, we have</p>
<p class="tex">$$\log&#40;y&#41; \sim ax &#43; b,$$</p>
<p>where we are using <span class="tex">$\sim$</span> to denote approximate equality.</p>
<p>Hence, taking exponentials of both sides, we have</p>
<p class="tex">$$y \sim \exp&#40;ax &#43; b&#41; &#61; c \, e^&#123;ax&#125;,$$</p>
<p>for some constant <span class="tex">$c$</span>.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝç°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$252eff18-fc3d-11ea-0c18-7b130ada882e¹depends_on_disabled_cellsÂ§runtimeÎ Éµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$c939a87a-fcdc-11ea-29dd-c1f6dd3de88fŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ+set_points (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚêk5D°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$c939a87a-fcdc-11ea-29dd-c1f6dd3de88f¹depends_on_disabled_cellsÂ§runtimeÎ 7§µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$a41db8ea-f0e0-461f-a298-bdcea42a67f3Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ;¢<div><div style = "float: left;"><span>DataFrameRow (1147 columns)</span></div><div style = "float: right;"><span style = "font-style: italic;">1047 columns omitted</span></div><div style = "clear: both;"></div></div><div class = "data-frame" style = "overflow-x: scroll;"><table class = "data-frame" style = "margin-bottom: 6px;"><thead><tr class = "header"><th class = "rowLabel" style = "font-weight: bold; text-align: right;">Row</th><th style = "text-align: left;">province</th><th style = "text-align: left;">country</th><th style = "text-align: left;">latitude</th><th style = "text-align: left;">longitude</th><th style = "text-align: left;">1/22/20</th><th style = "text-align: left;">1/23/20</th><th style = "text-align: left;">1/24/20</th><th style = "text-align: left;">1/25/20</th><th style = "text-align: left;">1/26/20</th><th style = "text-align: left;">1/27/20</th><th style = "text-align: left;">1/28/20</th><th style = "text-align: left;">1/29/20</th><th style = "text-align: left;">1/30/20</th><th style = "text-align: left;">1/31/20</th><th style = "text-align: left;">2/1/20</th><th style = "text-align: left;">2/2/20</th><th style = "text-align: left;">2/3/20</th><th style = "text-align: left;">2/4/20</th><th style = "text-align: left;">2/5/20</th><th style = "text-align: left;">2/6/20</th><th style = "text-align: left;">2/7/20</th><th style = "text-align: left;">2/8/20</th><th style = "text-align: left;">2/9/20</th><th style = "text-align: left;">2/10/20</th><th style = "text-align: left;">2/11/20</th><th style = "text-align: left;">2/12/20</th><th style = "text-align: left;">2/13/20</th><th style = "text-align: left;">2/14/20</th><th style = "text-align: left;">2/15/20</th><th style = "text-align: left;">2/16/20</th><th style = "text-align: left;">2/17/20</th><th style = "text-align: left;">2/18/20</th><th style = "text-align: left;">2/19/20</th><th style = "text-align: left;">2/20/20</th><th style = "text-align: left;">2/21/20</th><th style = "text-align: left;">2/22/20</th><th style = "text-align: left;">2/23/20</th><th style = "text-align: left;">2/24/20</th><th style = "text-align: left;">2/25/20</th><th style = "text-align: left;">2/26/20</th><th style = "text-align: left;">2/27/20</th><th style = "text-align: left;">2/28/20</th><th style = "text-align: left;">2/29/20</th><th style = "text-align: left;">3/1/20</th><th style = "text-align: left;">3/2/20</th><th style = "text-align: left;">3/3/20</th><th style = "text-align: left;">3/4/20</th><th style = "text-align: left;">3/5/20</th><th style = "text-align: left;">3/6/20</th><th style = "text-align: left;">3/7/20</th><th style = "text-align: left;">3/8/20</th><th style = "text-align: left;">3/9/20</th><th style = "text-align: left;">3/10/20</th><th style = "text-align: left;">3/11/20</th><th style = "text-align: left;">3/12/20</th><th style = "text-align: left;">3/13/20</th><th style = "text-align: left;">3/14/20</th><th style = "text-align: left;">3/15/20</th><th style = "text-align: left;">3/16/20</th><th style = "text-align: left;">3/17/20</th><th style = "text-align: left;">3/18/20</th><th style = "text-align: left;">3/19/20</th><th style = "text-align: left;">3/20/20</th><th style = "text-align: left;">3/21/20</th><th style = "text-align: left;">3/22/20</th><th style = "text-align: left;">3/23/20</th><th style = "text-align: left;">3/24/20</th><th style = "text-align: left;">3/25/20</th><th style = "text-align: left;">3/26/20</th><th style = "text-align: left;">3/27/20</th><th style = "text-align: left;">3/28/20</th><th style = "text-align: left;">3/29/20</th><th style = "text-align: left;">3/30/20</th><th style = "text-align: left;">3/31/20</th><th style = "text-align: left;">4/1/20</th><th style = "text-align: left;">4/2/20</th><th style = "text-align: left;">4/3/20</th><th style = "text-align: left;">4/4/20</th><th style = "text-align: left;">4/5/20</th><th style = "text-align: left;">4/6/20</th><th style = "text-align: left;">4/7/20</th><th style = "text-align: left;">4/8/20</th><th style = "text-align: left;">4/9/20</th><th style = "text-align: left;">4/10/20</th><th style = "text-align: left;">4/11/20</th><th style = "text-align: left;">4/12/20</th><th style = "text-align: left;">4/13/20</th><th style = "text-align: left;">4/14/20</th><th style = "text-align: left;">4/15/20</th><th style = "text-align: left;">4/16/20</th><th style = "text-align: left;">4/17/20</th><th style = "text-align: left;">4/18/20</th><th style = "text-align: left;">4/19/20</th><th style = "text-align: left;">4/20/20</th><th style = "text-align: left;">4/21/20</th><th style = "text-align: left;">4/22/20</th><th style = "text-align: left;">4/23/20</th><th style = "text-align: left;">4/24/20</th><th style = "text-align: left;">4/25/20</th><th style = "text-align: left;">4/26/20</th><th style = "text-align: right;">&ctdot;</th></tr><tr class = "subheader headerLastRow"><th class = "rowLabel" style = "font-weight: bold; text-align: right;"></th><th title = "Union{Missing, String}" style = "text-align: left;">String?</th><th title = "String" style = "text-align: left;">String</th><th title = "Union{Missing, Float64}" style = "text-align: left;">Float64?</th><th title = "Union{Missing, Float64}" style = "text-align: left;">Float64?</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: left;">Int64</th><th title = "Int64" style = "text-align: right;">&ctdot;</th></tr></thead><tbody><tr><td class = "rowLabel" style = "font-weight: bold; text-align: right;">261</td><td style = "font-style: italic; text-align: left;">missing</td><td style = "text-align: left;">US</td><td style = "text-align: right;">40.0</td><td style = "text-align: right;">-100.0</td><td style = "text-align: right;">1</td><td style = "text-align: right;">1</td><td style = "text-align: right;">2</td><td style = "text-align: right;">2</td><td style = "text-align: right;">5</td><td style = "text-align: right;">5</td><td style = "text-align: right;">5</td><td style = "text-align: right;">6</td><td style = "text-align: right;">6</td><td style = "text-align: right;">8</td><td style = "text-align: right;">8</td><td style = "text-align: right;">8</td><td style = "text-align: right;">11</td><td style = "text-align: right;">11</td><td style = "text-align: right;">11</td><td style = "text-align: right;">12</td><td style = "text-align: right;">12</td><td style = "text-align: right;">12</td><td style = "text-align: right;">12</td><td style = "text-align: right;">12</td><td style = "text-align: right;">13</td><td style = "text-align: right;">13</td><td style = "text-align: right;">14</td><td style = "text-align: right;">14</td><td style = "text-align: right;">14</td><td style = "text-align: right;">14</td><td style = "text-align: right;">14</td><td style = "text-align: right;">14</td><td style = "text-align: right;">14</td><td style = "text-align: right;">14</td><td style = "text-align: right;">16</td><td style = "text-align: right;">16</td><td style = "text-align: right;">16</td><td style = "text-align: right;">16</td><td style = "text-align: right;">16</td><td style = "text-align: right;">16</td><td style = "text-align: right;">17</td><td style = "text-align: right;">17</td><td style = "text-align: right;">25</td><td style = "text-align: right;">32</td><td style = "text-align: right;">55</td><td style = "text-align: right;">74</td><td style = "text-align: right;">107</td><td style = "text-align: right;">184</td><td style = "text-align: right;">237</td><td style = "text-align: right;">403</td><td style = "text-align: right;">519</td><td style = "text-align: right;">594</td><td style = "text-align: right;">782</td><td style = "text-align: right;">1147</td><td style = "text-align: right;">1586</td><td style = "text-align: right;">2219</td><td style = "text-align: right;">2978</td><td style = "text-align: right;">3212</td><td style = "text-align: right;">4679</td><td style = "text-align: right;">6512</td><td style = "text-align: right;">9169</td><td style = "text-align: right;">13663</td><td style = "text-align: right;">20030</td><td style = "text-align: right;">26025</td><td style = "text-align: right;">34944</td><td style = "text-align: right;">46096</td><td style = "text-align: right;">56714</td><td style = "text-align: right;">68841</td><td style = "text-align: right;">86662</td><td style = "text-align: right;">105253</td><td style = "text-align: right;">127417</td><td style = "text-align: right;">143544</td><td style = "text-align: right;">165698</td><td style = "text-align: right;">192079</td><td style = "text-align: right;">227903</td><td style = "text-align: right;">260183</td><td style = "text-align: right;">292630</td><td style = "text-align: right;">324340</td><td style = "text-align: right;">353117</td><td style = "text-align: right;">385110</td><td style = "text-align: right;">415256</td><td style = "text-align: right;">446500</td><td style = "text-align: right;">482526</td><td style = "text-align: right;">516707</td><td style = "text-align: right;">545693</td><td style = "text-align: right;">571551</td><td style = "text-align: right;">598794</td><td style = "text-align: right;">627306</td><td style = "text-align: right;">653669</td><td style = "text-align: right;">683351</td><td style = "text-align: right;">716508</td><td style = "text-align: right;">743857</td><td style = "text-align: right;">768888</td><td style = "text-align: right;">799531</td><td style = "text-align: right;">825478</td><td style = "text-align: right;">855445</td><td style = "text-align: right;">887523</td><td style = "text-align: right;">919014</td><td style = "text-align: right;">949640</td><td style = "text-align: right;">975537</td><td style = "text-align: right;">&ctdot;</td></tr></tbody></table></div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚç§›þ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$a41db8ea-f0e0-461f-a298-bdcea42a67f3¹depends_on_disabled_cellsÂ§runtimeÍ4zµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$a29c8ad0-fc4a-11ea-14c7-71435769b73eŠ¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚèŸ­°°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$a29c8ad0-fc4a-11ea-14c7-71435769b73e¹depends_on_disabled_cellsÂ§runtimeÎ QÉµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$4e4cca22-fc4c-11ea-12ae-2b51545799ecŠ¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msgÙ"UndefVarError: scatter not definedªstacktrace‘Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#4e4cca22-fc4c-11ea-12ae-2b51545799ec®source_packageÀ¤call¯top-level scopeªlinfo_type§Nothing¤line¤fileÙ0covid.jl#==#4e4cca22-fc4c-11ea-12ae-2b51545799ec¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚè¦Nœ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$4e4cca22-fc4c-11ea-12ae-2b51545799ec¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$f8e754ee-fc73-11ea-0c7f-cdc760ab3e94Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ›<div class="markdown"><p>Now we would like to combine the geographical and temporal &#40;time&#41; aspects. One way to do so is to animate time:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝS°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$f8e754ee-fc73-11ea-0c7f-cdc760ab3e94¹depends_on_disabled_cellsÂ§runtimeÎ µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$c2da1f88-fcdb-11ea-0b18-bf801c373a73Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙi<data controls='' src='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css' type='text/css'></data>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚêC¼¶°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$c2da1f88-fcdb-11ea-0b18-bf801c373a73¹depends_on_disabled_cellsÂ§runtimeÎ @BHµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$687409a2-fc43-11ea-03e0-d9a7a48165a8Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙs<div class="markdown"><p>Let&#39;s zoom on the part where the growth seems linear on this semi-log plot:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝU°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$687409a2-fc43-11ea-03e0-d9a7a48165a8¹depends_on_disabled_cellsÂ§runtimeÎ Þµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$b4264196-fcdc-11ea-2197-512f8363a4d3Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ.make_features (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚê^±S°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$b4264196-fcdc-11ea-2197-512f8363a4d3¹depends_on_disabled_cellsÂ§runtimeÎ PIµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$a8b2db96-fc30-11ea-2eea-b938a3a430fbŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ¬<div class="markdown"><p>We see that the correct spelling is <code>&quot;US&quot;</code>. &#40;And note how the different provinces of the UK are separated.&#41;</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ nÛ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$a8b2db96-fc30-11ea-2eea-b938a3a430fb¹depends_on_disabled_cellsÂ§runtimeÎ &µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$67eebb7e-fc36-11ea-03ef-bd6966487bb5Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙj<div class="markdown"><p>Now we can extract the data into a standard Julia <code>Vector</code>:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ ä*°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$67eebb7e-fc36-11ea-03ef-bd6966487bb5¹depends_on_disabled_cellsÂ§runtimeÎ Tµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$511eb51e-fc38-11ea-0492-19532da809deŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ?<div class="markdown"><h2>Exploratory data analysis</h2>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ�,°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$511eb51e-fc38-11ea-0492-19532da809de¹depends_on_disabled_cellsÂ§runtimeÎ °µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$9ee79840-30ff-4c92-97f4-e178caceceafŠ¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix¤Bool¨elementsÜ ’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’	’¥falseªtext/plain’
’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain’’¥falseªtext/plain¤more’Í’¤trueªtext/plain’Í’¤trueªtext/plain’Í’¥falseªtext/plain’Í’¥falseªtext/plain’Í’¥falseªtext/plain’Í’¥falseªtext/plain’Í’¥falseªtext/plain’Í’¥falseªtext/plain’Í ’¥falseªtext/plain’Í!’¥falseªtext/plain¤type¥Array¬prefix_short ¨objectid°d37b6822a7ef255b¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee«U_countries²last_run_timestampËAÚæÌ�G°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$9ee79840-30ff-4c92-97f4-e178caceceaf¹depends_on_disabled_cellsÂ§runtimeÍlôµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ¥<bond def="i" unique_id="nshu5jMUQi/C"><input type='range' min='1' max='201' value='1'><script>
					const input_el = currentScript.previousElementSibling
					const output_el = currentScript.nextElementSibling
					const displays = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200", "201"]

					let update_output = () => {
						output_el.value = displays[input_el.valueAsNumber - 1]
					}
					
					input_el.addEventListener("input", update_output)
					// We also poll for changes because the `input_el.value` can change from the outside, e.g. https://github.com/JuliaPluto/PlutoUI.jl/issues/277
					let id = setInterval(update_output, 200)
					invalidation.then(() => {
						clearInterval(id)
						input_el.removeEventListener("input", update_output)
					})
					</script><output style='
						font-family: system-ui;
    					font-size: 15px;
    					margin-left: 3px;
    					transform: translateY(-4px);
    					display: inline-block;'>1</output></bond>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚæbË}°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2¹depends_on_disabled_cellsÂ§runtimeÎ(êµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$80138b30-fc4a-11ea-0e15-b54cf6b402dfŠ¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚè…ˆ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$80138b30-fc4a-11ea-0e15-b54cf6b402df¹depends_on_disabled_cellsÂ§runtimeÎ Ð~iµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$546a40eb-7897-485d-a1b5-c4dfae0a4861Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙß<div class="markdown"><p>Now we need to <strong>parse</strong> the date strings, i.e. convert from a string representation into an actual Julia type provided by the <code>Dates.jl</code> standard library package:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝW °persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$546a40eb-7897-485d-a1b5-c4dfae0a4861¹depends_on_disabled_cellsÂ§runtimeÎ Á"µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$7b5db0f4-fc36-11ea-09a5-49def64f4c79Š¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix¥Int64¨elementsÜ ’’¡1ªtext/plain’’¡1ªtext/plain’’¡2ªtext/plain’’¡2ªtext/plain’’¡5ªtext/plain’’¡5ªtext/plain’’¡5ªtext/plain’’¡6ªtext/plain’	’¡6ªtext/plain’
’¡8ªtext/plain’’¡8ªtext/plain’’¡8ªtext/plain’’¢11ªtext/plain’’¢11ªtext/plain’’¢11ªtext/plain’’¢12ªtext/plain’’¢12ªtext/plain’’¢12ªtext/plain’’¢12ªtext/plain’’¢12ªtext/plain¤more’Ín’©103443455ªtext/plain’Ío’©103533872ªtext/plain’Íp’©103589757ªtext/plain’Íq’©103648690ªtext/plain’Ír’©103650837ªtext/plain’Ís’©103646975ªtext/plain’Ít’©103655539ªtext/plain’Íu’©103690910ªtext/plain’Ív’©103755771ªtext/plain’Íw’©103802702ªtext/plain¤type¥Array¬prefix_short ¨objectid°f70bdb756a53be19¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee§US_data²last_run_timestampËAÚç¸p°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$7b5db0f4-fc36-11ea-09a5-49def64f4c79¹depends_on_disabled_cellsÂ§runtimeÎSÈµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$7e7d14a2-fc37-11ea-3f1a-870ca98c4b75Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚç<div class="markdown"><p>Note that we are only passing a single vector to the <code>scatter</code> function, so the <span class="tex">$x$</span> coordinates are taken as the natural numbers <span class="tex">$1$</span>, <span class="tex">$2$</span>, etc.</p>
<p>Also note that the <span class="tex">$y$</span>-axis in this plot gives the <em>cumulative</em> case numbers, i.e. the <em>total</em> number of confirmed cases since the start of the epidemic up to the given date. </p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ þa°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$7e7d14a2-fc37-11ea-3f1a-870ca98c4b75¹depends_on_disabled_cellsÂ§runtimeÎ ŒÉµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$79ba0433-2a31-475a-87c9-14103ebbff16Š¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix¦String¨elementsÜ ’’­"Afghanistan"ªtext/plain’’©"Albania"ªtext/plain’’©"Algeria"ªtext/plain’’©"Andorra"ªtext/plain’’¨"Angola"ªtext/plain’’¬"Antarctica"ªtext/plain’’µ"Antigua and Barbuda"ªtext/plain’’«"Argentina"ªtext/plain’	’©"Armenia"ªtext/plain’
’«"Australia"ªtext/plain’’©"Austria"ªtext/plain’’¬"Azerbaijan"ªtext/plain’’©"Bahamas"ªtext/plain’’©"Bahrain"ªtext/plain’’¬"Bangladesh"ªtext/plain’’ª"Barbados"ªtext/plain’’©"Belarus"ªtext/plain’’©"Belgium"ªtext/plain’’¨"Belize"ªtext/plain’’§"Benin"ªtext/plain¤more’ÌÀ’©"Uruguay"ªtext/plain’ÌÁ’¬"Uzbekistan"ªtext/plain’ÌÂ’©"Vanuatu"ªtext/plain’ÌÃ’«"Venezuela"ªtext/plain’ÌÄ’©"Vietnam"ªtext/plain’ÌÅ’´"West Bank and Gaza"ªtext/plain’ÌÆ’¶"Winter Olympics 2022"ªtext/plain’ÌÇ’§"Yemen"ªtext/plain’ÌÈ’¨"Zambia"ªtext/plain’ÌÉ’ª"Zimbabwe"ªtext/plain¤type¥Array¬prefix_short ¨objectid°a387813441b71bbd¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee©countries²last_run_timestampËAÚæJ¾°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$79ba0433-2a31-475a-87c9-14103ebbff16¹depends_on_disabled_cellsÂ§runtimeÎ Áµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$dc2cfa82-fc86-11ea-1311-bb6e69350d43Š¦queuedÂ¤logs�§runningÂ¦output†¤body°"/tmp/jl_WJD4Ks"¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚéÃÃ/°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$dc2cfa82-fc86-11ea-1311-bb6e69350d43¹depends_on_disabled_cellsÂ§runtimeÎ {*3µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$39982810-fc76-11ea-01c3-3987cfc2fd3cŠ¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚê¤‡°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$39982810-fc76-11ea-01c3-3987cfc2fd3c¹depends_on_disabled_cellsÂ§runtimeÎY×µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$19f4da16-fc31-11ea-0de9-1dbe668b862dŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙÔ<div class="markdown"><p>We are starting a new module on modelling epidemic propagation.</p>
<p>Let&#39;s start off by analysing some of the data that is now available on the current COVID-19 pandemic.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜþïž°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$19f4da16-fc31-11ea-0de9-1dbe668b862d¹depends_on_disabled_cellsÂ§runtimeÎ ©kµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$1f30a1ac-fc74-11ea-2abf-abf437006babŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyª2020-01-22¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚê «“°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$1f30a1ac-fc74-11ea-2abf-abf437006bab¹depends_on_disabled_cellsÂ§runtimeÍ.¼µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$1633abe8-fc2f-11ea-2c7e-21b3348a3569Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚÇ<div class="markdown"><p>How can we extract the data for a particular country? First we need to know the exact name of the country. E.g. is the US written as &quot;USA&quot;, or &quot;United States&quot;?</p>
<p>We could scroll through to find out, or <strong>filter</strong> the data to only look at a sample of it, for example those countries that begin with the letter &quot;U&quot;.</p>
<p>One way to do this is with an array comprehension:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ .°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$1633abe8-fc2f-11ea-2c7e-21b3348a3569¹depends_on_disabled_cellsÂ§runtimeÎ rµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$a054e048-4fea-487c-9d06-463723c7151cŠ¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msg¿UndefVarError: head not definedªstacktrace‘Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#a054e048-4fea-487c-9d06-463723c7151c®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤fileÙ0covid.jl#==#a054e048-4fea-487c-9d06-463723c7151c¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚåëëæ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$a054e048-4fea-487c-9d06-463723c7151c¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4cŠ¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msg¿UndefVarError: plot not definedªstacktrace‘Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤fileÙ0covid.jl#==#dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚè>a€°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$8709f208-fc4a-11ea-0203-e13eae5f0d93Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙs<div class="markdown"><p>If the <code>province</code> is missing we should use the country name instead:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ“§°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$8709f208-fc4a-11ea-0203-e13eae5f0d93¹depends_on_disabled_cellsÂ§runtimeÎ ÿºµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$07282688-fc3e-11ea-2f9e-5b0581061e65Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙÐ<div class="markdown"><p>We see that there is a period lasting from around day 38 to around day 60 when the curve looks straight on the semi-log plot.  This corresponds to the following date range:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚèr‡ì°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$07282688-fc3e-11ea-2f9e-5b0581061e65¹depends_on_disabled_cellsÂ§runtimeÎ ÓÐôµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$3edd2a22-fc4a-11ea-07e5-55ca6d7639e8Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙü<div class="markdown"><p>Our data set contains more information: the geographical locations &#40;latitude and longitude&#41; of each country &#40;or, rather, of a particular point that was chosen as being representative of that country&#41;.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝhŒ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$3edd2a22-fc4a-11ea-07e5-55ca6d7639e8¹depends_on_disabled_cellsÂ§runtimeÎ Z µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$0f329ece-fc74-11ea-1e02-bdbddf551ef3Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ'Ñ<bond def="day_ticks" unique_id="cjngP762OUT6">	<plutoui-clock class=' stopped' data-max-value=nothing data-repeat=false>
		<plutoui-analog>
			<plutoui-back><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="39.871094mm"
   height="39.871094mm"
   viewBox="0 0 39.871094 39.871094"
   version="1.1"
   id="svg8"
   inkscape:version="0.92.3 (2405546, 2018-03-11)"
   sodipodi:docname="timer_back.svg">
  <defs
     id="defs2" />
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="3.959798"
     inkscape:cx="107.29722"
     inkscape:cy="73.940024"
     inkscape:document-units="mm"
     inkscape:current-layer="layer1"
     showgrid="false"
     inkscape:window-width="1920"
     inkscape:window-height="1013"
     inkscape:window-x="-9"
     inkscape:window-y="-9"
     inkscape:window-maximized="1" />
  <metadata
     id="metadata5">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(-36.284454,-6.2274818)">
    <circle
       style="fill:#e5e5e5;fill-opacity:1;stroke:#000000;stroke-width:3.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="path4518"
       cx="56.220001"
       cy="26.163029"
       r="18.185547" />
    <circle
       style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:6.19706345;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="path4522"
       cx="56.220001"
       cy="26.163029"
       r="13" />
  </g>
</svg>
</plutoui-back>
			<plutoui-front><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="39.871094mm"
   height="39.871094mm"
   viewBox="0 0 39.871094 39.871094"
   version="1.1"
   id="svg8"
   sodipodi:docname="timer_front.svg"
   inkscape:version="0.92.3 (2405546, 2018-03-11)">
  <defs
     id="defs2" />
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="3.959798"
     inkscape:cx="107.29722"
     inkscape:cy="73.940024"
     inkscape:document-units="mm"
     inkscape:current-layer="layer1"
     showgrid="false"
     inkscape:window-width="1920"
     inkscape:window-height="1013"
     inkscape:window-x="-9"
     inkscape:window-y="-9"
     inkscape:window-maximized="1" />
  <metadata
     id="metadata5">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(-36.284454,-6.2274818)">
    <path
       style="fill:#d03f13;fill-opacity:1;stroke:none;stroke-width:6.09088135;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       d="m 58.720001,26.163029 c 0,1.380712 -1.119288,2.5 -2.5,2.5 -1.380712,0 -2.5,-1.119288 -2.5,-2.5 0,-1.380712 1.119288,-16.2643807 2.5,-16.2643807 1.380712,0 2.5,14.8836687 2.5,16.2643807 z"
       id="path4524"
       inkscape:connector-curvature="0"
       sodipodi:nodetypes="sssss" />
  </g>
</svg>
</plutoui-front>
			<plutoui-zoof style="opacity: 0"><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="39.871094mm"
   height="39.871094mm"
   viewBox="0 0 39.871094 39.871094"
   version="1.1"
   id="svg8"
   sodipodi:docname="timer_zoof.svg"
   inkscape:version="0.92.3 (2405546, 2018-03-11)">
  <defs
     id="defs2" />
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="3.959798"
     inkscape:cx="103.4976"
     inkscape:cy="81.366126"
     inkscape:document-units="mm"
     inkscape:current-layer="layer1"
     showgrid="false"
     inkscape:window-width="1920"
     inkscape:window-height="1013"
     inkscape:window-x="-9"
     inkscape:window-y="-9"
     inkscape:window-maximized="1" />
  <metadata
     id="metadata5">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(-36.284454,-6.2274818)">
    <circle
       style="fill:#f39a7e;fill-opacity:1;stroke:none;stroke-width:4.78696537;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="path4527"
       cx="56.220001"
       cy="26.163029"
       r="16.607328" />
  </g>
</svg>
</plutoui-zoof>
		</plutoui-analog>
		<button></button>
		<span>speed: </span>
		<input type="number" value="0.5"  min=0 step=any lang="en-001">
		<span id="unit" title="Click to invert"></span>
	</plutoui-clock>
	<script>
		// const clock = this.querySelector("clock")
const clock = (currentScript ?? this.currentScript).previousElementSibling
const tpsInput = clock.querySelector("input")
const analogfront = clock.querySelector("plutoui-analog plutoui-front")
const analogzoof = clock.querySelector("plutoui-analog plutoui-zoof")
const unit = clock.querySelector("span#unit")
const button = clock.querySelector("button")

const max_value = +clock.dataset.maxValue
const repeat = clock.dataset.repeat === "true"

var t = (clock.value = 1)
var starttime = null
var dt = 1

tpsInput.oninput = (e) => {
    dt = tpsInput.valueAsNumber
    if (clock.classList.contains("inverted")) {
        dt = 1.0 / dt
    }
    dt = dt == Infinity || dt == 0 ? 1e9 : dt
    analogzoof.style.opacity = 0.8 - Math.pow(dt, 0.2)
    analogfront.style.animationDuration = dt + "s"
    e && e.stopPropagation()
}
tpsInput.oninput()

analogfront.onanimationiteration = (e) => {
    if (!clock.classList.contains("stopped")) {
        const running_time = (Date.now() - starttime) / 1000
        t = Math.max(t + 1, Math.floor(running_time / dt))
        if (!isNaN(max_value)) {
            if (repeat) {
                if(t > max_value) {
                    t = 1
                    starttime = Date.now()
                }
            } else {
                if (t >= max_value) {
                    clock.classList.add("stopped")
                    t = max_value
                }
            }
        }
        clock.value = t
        clock.dispatchEvent(new CustomEvent("input"))
    }
}
unit.onclick = (e) => {
    clock.classList.toggle("inverted")
    tpsInput.oninput()
}
button.onclick = (e) => {
    starttime = Date.now()
    clock.classList.toggle("stopped")
    if (!clock.classList.contains("stopped")) {
        t = 1
    }
}

	</script>
	<style>
		plutoui-clock {
    display: flex;
    flex-direction: row;
}

plutoui-clock > * {
    align-self: center;
    margin-right: 0.3rem;
}

plutoui-analog {
    display: block;
    position: relative;
    overflow: hidden;
    width: 20px;
    height: 20px;
}
@media (prefers-color-scheme: dark) {
    plutoui-analog {
        filter: invert(1) hue-rotate(180deg);
    }
}

plutoui-analog > * {
    display: block;
    width: 100%;
    height: 100%;
}

plutoui-analog > * > svg {
    width: 100%;
    height: 100%;
}

plutoui-clock plutoui-analog plutoui-front,
plutoui-clock plutoui-analog plutoui-zoof {
    position: absolute;
    left: 0;
    top: 0;
    animation: 1s linear ðŸ”� infinite;
}

plutoui-clock.stopped plutoui-analog plutoui-front {
    animation-play-state: paused;
}

plutoui-clock.stopped plutoui-analog plutoui-zoof {
    display: none;
}

plutoui-clock input {
    width: 3rem;
}

plutoui-clock span {
    font-family: 'Roboto Mono', monospace;
    font-size: 0.75rem;
    word-spacing: -0.2rem;
}

plutoui-clock span#unit {
    font-style: italic;
    cursor: pointer;
}

plutoui-clock span#unit::after {
    content: 'secs / tick';
}

plutoui-clock.inverted span#unit::after {
    content: 'ticks / sec';
}

plutoui-clock button {
    margin-left: 1rem;
    margin-right: 1rem;
}

plutoui-clock button::after {
    content: 'Stop';
}

plutoui-clock.stopped button::after {
    content: 'Start';
}

plutoui-clock.fixed span,
plutoui-clock.fixed input {
    display: none;
}

@keyframes ðŸ”� {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

	</style>
    </bond>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚê]«°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$0f329ece-fc74-11ea-1e02-bdbddf551ef3¹depends_on_disabled_cellsÂ§runtimeÎyBÈµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$2f254a9e-fc3e-11ea-2c02-75ed59f41903Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙã<div class="markdown"><p>i.e. the first 3 weeks of March. Fortunately the imposition of lockdown during the last 10 days of March &#40;on different days in different US states&#41; significantly reduced transmission.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ'¢°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$2f254a9e-fc3e-11ea-2c02-75ed59f41903¹depends_on_disabled_cellsÂ§runtimeÎ *vµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$31dc4e46-4839-4f01-b383-1a1189aeb0e6Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyª0020-01-22¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚè‰°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$31dc4e46-4839-4f01-b383-1a1189aeb0e6¹depends_on_disabled_cellsÂ§runtimeÎÞ0µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$f5c29f0d-937f-4731-8f87-0405ebc966f5Š¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefixªDates.Date¨elementsÜ ’’ª2020-01-22ªtext/plain’’ª2020-01-23ªtext/plain’’ª2020-01-24ªtext/plain’’ª2020-01-25ªtext/plain’’ª2020-01-26ªtext/plain’’ª2020-01-27ªtext/plain’’ª2020-01-28ªtext/plain’’ª2020-01-29ªtext/plain’	’ª2020-01-30ªtext/plain’
’ª2020-01-31ªtext/plain’’ª2020-02-01ªtext/plain’’ª2020-02-02ªtext/plain’’ª2020-02-03ªtext/plain’’ª2020-02-04ªtext/plain’’ª2020-02-05ªtext/plain’’ª2020-02-06ªtext/plain’’ª2020-02-07ªtext/plain’’ª2020-02-08ªtext/plain’’ª2020-02-09ªtext/plain’’ª2020-02-10ªtext/plain¤more’Ín’ª2023-02-28ªtext/plain’Ío’ª2023-03-01ªtext/plain’Íp’ª2023-03-02ªtext/plain’Íq’ª2023-03-03ªtext/plain’Ír’ª2023-03-04ªtext/plain’Ís’ª2023-03-05ªtext/plain’Ít’ª2023-03-06ªtext/plain’Íu’ª2023-03-07ªtext/plain’Ív’ª2023-03-08ªtext/plain’Íw’ª2023-03-09ªtext/plain¤type¥Array¬prefix_short ¨objectid°a95c64a450394c68¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee¥dates²last_run_timestampËAÚè-Ù°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$f5c29f0d-937f-4731-8f87-0405ebc966f5¹depends_on_disabled_cellsÂ§runtimeÎ»�µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$4f423a75-43da-486f-ac2a-7220032dac9fŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyƒ¤rowsœ’™’§missingªtext/plain’¤"US"ªtext/plain’¤40.0ªtext/plain’¦-100.0ªtext/plain’¡1ªtext/plain’¡1ªtext/plain’¡2ªtext/plain’¡2ªtext/plain¤more’™’§missingªtext/plain’¨"Uganda"ªtext/plain’§1.37333ªtext/plain’§32.2903ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’©"Ukraine"ªtext/plain’§48.3794ªtext/plain’§31.1656ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’¶"United Arab Emirates"ªtext/plain’§23.4241ªtext/plain’§53.8478ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’ª"Anguilla"ªtext/plain’°"United Kingdom"ªtext/plain’§18.2206ªtext/plain’¨-63.0686ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’©"Bermuda"ªtext/plain’°"United Kingdom"ªtext/plain’§32.3078ªtext/plain’¨-64.7505ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’¸"British Virgin Islands"ªtext/plain’°"United Kingdom"ªtext/plain’§18.4207ªtext/plain’¦-64.64ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’°"Cayman Islands"ªtext/plain’°"United Kingdom"ªtext/plain’§19.3133ªtext/plain’¨-81.2546ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’	™’±"Channel Islands"ªtext/plain’°"United Kingdom"ªtext/plain’§49.3723ªtext/plain’§-2.3644ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’
™’½"Falkland Islands (Malvinas)"ªtext/plain’°"United Kingdom"ªtext/plain’¨-51.7963ªtext/plain’¨-59.5236ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more¤more’™’§missingªtext/plain’¬"Uzbekistan"ªtext/plain’§41.3775ªtext/plain’§64.5853ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more¨objectid°ea87911aad95b6eb¦schema‚¥names™¨province§country¨latitude©longitude§1/22/20§1/23/20§1/24/20§1/25/20¤more¥types™§String?¦String¨Float64?¨Float64?¥Int64¥Int64¥Int64¥Int64¤more¤mimeÙ"application/vnd.pluto.table+object¬rootassigneeÀ²last_run_timestampËAÚæãÃ"°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$4f423a75-43da-486f-ac2a-7220032dac9f¹depends_on_disabled_cellsÂ§runtimeÎA—Eµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$6de0800c-fc37-11ea-0d94-2b6f8f66964dŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙÕ<div class="markdown"><p>We would like to use actual dates instead of just the number of days since the start of the recorded data. The dates are given in the column names of the <code>DataFrame</code>:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ@°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$6de0800c-fc37-11ea-0d94-2b6f8f66964d¹depends_on_disabled_cellsÂ§runtimeÎ okµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$24934438-fc74-11ea-12e4-7f7e50f54029Š¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚÝ›V°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$24934438-fc74-11ea-12e4-7f7e50f54029¹depends_on_disabled_cellsÂ§runtimeÍIµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$4358c348-91aa-4c76-a443-0a9cefce0e83Š¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msg¿UndefVarError: plot not definedªstacktrace‘Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#4358c348-91aa-4c76-a443-0a9cefce0e83®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤fileÙ0covid.jl#==#4358c348-91aa-4c76-a443-0a9cefce0e83¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚèVÒ‘°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$4358c348-91aa-4c76-a443-0a9cefce0e83¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$9484ea9e-fc2e-11ea-137c-6da8212da5bdŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ <div class="markdown"><p>&#91;Here we used <strong>string interpolation</strong> with <code>&#36;</code> to put the text into a Markdown string.&#93;</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿÿ?°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$9484ea9e-fc2e-11ea-137c-6da8212da5bd¹depends_on_disabled_cellsÂ§runtimeÎ ²“µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$4ccb2718-fce2-11ea-18c4-89640faec38dŠ¦queuedÂ¤logs�§runningÂ¦output†¤body¡1¤mimeªtext/plain¬rootassignee£day²last_run_timestampËAÚêé2°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$4ccb2718-fce2-11ea-18c4-89640faec38d¹depends_on_disabled_cellsÂ§runtimeÍBµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$75d2dc66-fc47-11ea-0e35-05f9cf38e901Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙˆ<div class="markdown"><p>This is an example of a <strong>time series</strong>, i.e. a single quantity that changes over time.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ#°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$75d2dc66-fc47-11ea-0e35-05f9cf38e901¹depends_on_disabled_cellsÂ§runtimeÎ ›êµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$b406eec8-fc77-11ea-1a98-d36d6d3e2393Š¦queuedÂ¤logs�§runningÂ¦output†¤body²1.2304489213782739¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚê 2°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$b406eec8-fc77-11ea-1a98-d36d6d3e2393¹depends_on_disabled_cellsÂ§runtimeÍZ?µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$861a2c3a-fc88-11ea-2d95-fb076e751203Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚà<div id="map" style="height: 500px"></div>
<script>
	mapboxgl.accessToken = 'pk.eyJ1Ijoic2hhc2hpNTMiLCJhIjoiY2ppMG5vZmpuMWEyNjNwb2I5dWhveTkyZCJ9.dQ67jXuhU3DGz7QFR35alw';
var map = new mapboxgl.Map({
	container: 'map',
	style: 'mapbox://styles/mapbox/light-v10',
	zoom: 1,
	center: [0, 0]
});

var elem = document.getElementById("map");

elem.mapbox = map;

map.on('load', function () {

	// Add a GeoJSON source with 2 points
	map.addSource('points', {
		'type': 'geojson',
		'data': {
			'type': 'FeatureCollection',
			'features': [
				{
					'type': 'Feature',
					'geometry': {
						'type': 'Point',
						'coordinates': [
							-77.03238901390978,
							38.913188059745586
						]
					}
				},
				{
					'type': 'Feature',
					'geometry': {
						'type': 'Point',
						'coordinates': [-122.414, 37.776]
					}
				}
			]
		}
	});
	map.addLayer({
	'id': 'points',
	'type': 'circle',
	'source': 'points',
	'paint': {
		'circle-color': {
              "property": "size",
              "stops": [
                [0, "#fff5f0"],
                [1, "#fee0d2"],
                [2, "#fcbba1"],
                [3, "#fc9272"],
                [4, "#fb6a4a"],
                [7, "#ef3b2c"],
                [8, "#cb181d"],
                [9, "#a50f15"],
                [10, "#67000d"]
              ]
            },
		// make circles larger as the user zooms from z12 to z22
		'circle-radius': [
				'interpolate',
				['linear'], ["zoom"],
				0, ['get', 'size']
			]
    }
});
});
</script>
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ°°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$861a2c3a-fc88-11ea-2d95-fb076e751203¹depends_on_disabled_cellsÂ§runtimeÎ Làµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$c5ad4d40-fc57-11ea-23cb-e55487bc6f7aŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyƒ¤rowsœ’™’§missingªtext/plain’­"Afghanistan"ªtext/plain’§33.9391ªtext/plain’¥67.71ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’©"Albania"ªtext/plain’§41.1533ªtext/plain’§20.1683ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’©"Algeria"ªtext/plain’§28.0339ªtext/plain’¦1.6596ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’©"Andorra"ªtext/plain’§42.5063ªtext/plain’¦1.5218ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’¨"Angola"ªtext/plain’¨-11.2027ªtext/plain’§17.8739ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’¬"Antarctica"ªtext/plain’¨-71.9499ªtext/plain’¦23.347ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’µ"Antigua and Barbuda"ªtext/plain’§17.0608ªtext/plain’¨-61.7964ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’«"Argentina"ªtext/plain’¨-38.4161ªtext/plain’¨-63.6167ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’	™’§missingªtext/plain’©"Armenia"ªtext/plain’§40.0691ªtext/plain’§45.0382ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’
™’¾"Australian Capital Territory"ªtext/plain’«"Australia"ªtext/plain’¨-35.4735ªtext/plain’§149.012ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more¤more’™’§missingªtext/plain’¬"Azerbaijan"ªtext/plain’§40.1431ªtext/plain’§47.5769ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more¨objectid°8cf06766e559b15e¦schema‚¥names™¨province§country¨latitude©longitude§1/22/20§1/23/20§1/24/20§1/25/20¤more¥types™§String?¦String¨Float64?¨Float64?¥Int64¥Int64¥Int64¥Int64¤more¤mimeÙ"application/vnd.pluto.table+object¬rootassigneeÀ²last_run_timestampËAÚè­`°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$c5ad4d40-fc57-11ea-23cb-e55487bc6f7a¹depends_on_disabled_cellsÂ§runtimeÎ Y„µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$b0eb3918-fc1f-11ea-238b-7f5d23e424bbŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ<div class="markdown"><p>How can we extract the list of all the countries? The country names are in the second column.</p>
<p>For some purposes we can think of a <code>DataFrame</code>.as a matrix and use similar syntax. For example, we can extract the second column:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿÓN°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$b0eb3918-fc1f-11ea-238b-7f5d23e424bb¹depends_on_disabled_cellsÂ§runtimeÎ ÙÞµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$36c37b4d-eb23-4deb-a593-e511eccd9204Š¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msg¿UndefVarError: plot not definedªstacktrace‘Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#36c37b4d-eb23-4deb-a593-e511eccd9204®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤fileÙ0covid.jl#==#36c37b4d-eb23-4deb-a593-e511eccd9204¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚè0,º°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$36c37b4d-eb23-4deb-a593-e511eccd9204¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$a7369222-fc20-11ea-314d-4d6b0f0f72ebŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ�<div class="markdown"><p>We will need a couple of new packages. The data is in CSV format, i.e. <em>C</em>omma-<em>S</em>eparated <em>V</em>alues. This is a common data format in which observations, i.e. data points, are separated on different lines. Within each line the different data for that observation are separated by commas or other punctuation &#40;possibly spaces and tabs&#41;.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿIs°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$a7369222-fc20-11ea-314d-4d6b0f0f72eb¹depends_on_disabled_cellsÂ§runtimeÎ õ‡µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$fab64d86-fc28-11ea-0ae1-3ba1b9a14759Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ4<div class="markdown"><h2>Using the data</h2>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿ�°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$fab64d86-fc28-11ea-0ae1-3ba1b9a14759¹depends_on_disabled_cellsÂ§runtimeÎ Ç‘µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$9e23b0e2-ac13-4d19-a3f9-4a655a1e9f14Š¦queuedÂ¤logs�§runningÂ¦output†¤body©"1/22/20"¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚçÄÄ7°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$9e23b0e2-ac13-4d19-a3f9-4a655a1e9f14¹depends_on_disabled_cellsÂ§runtimeÍ-\µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$1620aa9d-7dcd-4686-b7e4-a72cebe315edŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ¿<div class="markdown"><p>We can load the data from a CSV using the <code>File</code> function from the <code>CSV.jl</code> package, and then convert it to a <code>DataFrame</code>:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿ_|°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$1620aa9d-7dcd-4686-b7e4-a72cebe315ed¹depends_on_disabled_cellsÂ§runtimeÎ ;}µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$ada3ceb4-fc2e-11ea-2cbf-399430fa18b5Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ%:<bond def="country" unique_id="Vkra4Vhd/4Zw"><select><option value='puiselect-1'>Afghanistan</option><option value='puiselect-2'>Albania</option><option value='puiselect-3'>Algeria</option><option value='puiselect-4'>Andorra</option><option value='puiselect-5'>Angola</option><option value='puiselect-6'>Antarctica</option><option value='puiselect-7'>Antigua and Barbuda</option><option value='puiselect-8'>Argentina</option><option value='puiselect-9'>Armenia</option><option value='puiselect-10'>Australia</option><option value='puiselect-11'>Austria</option><option value='puiselect-12'>Azerbaijan</option><option value='puiselect-13'>Bahamas</option><option value='puiselect-14'>Bahrain</option><option value='puiselect-15'>Bangladesh</option><option value='puiselect-16'>Barbados</option><option value='puiselect-17'>Belarus</option><option value='puiselect-18'>Belgium</option><option value='puiselect-19'>Belize</option><option value='puiselect-20'>Benin</option><option value='puiselect-21'>Bhutan</option><option value='puiselect-22'>Bolivia</option><option value='puiselect-23'>Bosnia and Herzegovina</option><option value='puiselect-24'>Botswana</option><option value='puiselect-25'>Brazil</option><option value='puiselect-26'>Brunei</option><option value='puiselect-27'>Bulgaria</option><option value='puiselect-28'>Burkina Faso</option><option value='puiselect-29'>Burma</option><option value='puiselect-30'>Burundi</option><option value='puiselect-31'>Cabo Verde</option><option value='puiselect-32'>Cambodia</option><option value='puiselect-33'>Cameroon</option><option value='puiselect-34'>Canada</option><option value='puiselect-35'>Central African Republic</option><option value='puiselect-36'>Chad</option><option value='puiselect-37'>Chile</option><option value='puiselect-38'>China</option><option value='puiselect-39'>Colombia</option><option value='puiselect-40'>Comoros</option><option value='puiselect-41'>Congo (Brazzaville)</option><option value='puiselect-42'>Congo (Kinshasa)</option><option value='puiselect-43'>Costa Rica</option><option value='puiselect-44'>Cote d&apos;Ivoire</option><option value='puiselect-45'>Croatia</option><option value='puiselect-46'>Cuba</option><option value='puiselect-47'>Cyprus</option><option value='puiselect-48'>Czechia</option><option value='puiselect-49'>Denmark</option><option value='puiselect-50'>Diamond Princess</option><option value='puiselect-51'>Djibouti</option><option value='puiselect-52'>Dominica</option><option value='puiselect-53'>Dominican Republic</option><option value='puiselect-54'>Ecuador</option><option value='puiselect-55'>Egypt</option><option value='puiselect-56'>El Salvador</option><option value='puiselect-57'>Equatorial Guinea</option><option value='puiselect-58'>Eritrea</option><option value='puiselect-59'>Estonia</option><option value='puiselect-60'>Eswatini</option><option value='puiselect-61'>Ethiopia</option><option value='puiselect-62'>Fiji</option><option value='puiselect-63'>Finland</option><option value='puiselect-64'>France</option><option value='puiselect-65'>Gabon</option><option value='puiselect-66'>Gambia</option><option value='puiselect-67'>Georgia</option><option value='puiselect-68'>Germany</option><option value='puiselect-69'>Ghana</option><option value='puiselect-70'>Greece</option><option value='puiselect-71'>Grenada</option><option value='puiselect-72'>Guatemala</option><option value='puiselect-73'>Guinea</option><option value='puiselect-74'>Guinea-Bissau</option><option value='puiselect-75'>Guyana</option><option value='puiselect-76'>Haiti</option><option value='puiselect-77'>Holy See</option><option value='puiselect-78'>Honduras</option><option value='puiselect-79'>Hungary</option><option value='puiselect-80'>Iceland</option><option value='puiselect-81'>India</option><option value='puiselect-82'>Indonesia</option><option value='puiselect-83'>Iran</option><option value='puiselect-84'>Iraq</option><option value='puiselect-85'>Ireland</option><option value='puiselect-86'>Israel</option><option value='puiselect-87'>Italy</option><option value='puiselect-88'>Jamaica</option><option value='puiselect-89'>Japan</option><option value='puiselect-90'>Jordan</option><option value='puiselect-91'>Kazakhstan</option><option value='puiselect-92'>Kenya</option><option value='puiselect-93'>Kiribati</option><option value='puiselect-94'>Korea, North</option><option value='puiselect-95'>Korea, South</option><option value='puiselect-96'>Kosovo</option><option value='puiselect-97'>Kuwait</option><option value='puiselect-98'>Kyrgyzstan</option><option value='puiselect-99'>Laos</option><option value='puiselect-100'>Latvia</option><option value='puiselect-101'>Lebanon</option><option value='puiselect-102'>Lesotho</option><option value='puiselect-103'>Liberia</option><option value='puiselect-104'>Libya</option><option value='puiselect-105'>Liechtenstein</option><option value='puiselect-106'>Lithuania</option><option value='puiselect-107'>Luxembourg</option><option value='puiselect-108'>MS Zaandam</option><option value='puiselect-109'>Madagascar</option><option value='puiselect-110'>Malawi</option><option value='puiselect-111'>Malaysia</option><option value='puiselect-112'>Maldives</option><option value='puiselect-113'>Mali</option><option value='puiselect-114'>Malta</option><option value='puiselect-115'>Marshall Islands</option><option value='puiselect-116'>Mauritania</option><option value='puiselect-117'>Mauritius</option><option value='puiselect-118'>Mexico</option><option value='puiselect-119'>Micronesia</option><option value='puiselect-120'>Moldova</option><option value='puiselect-121'>Monaco</option><option value='puiselect-122'>Mongolia</option><option value='puiselect-123'>Montenegro</option><option value='puiselect-124'>Morocco</option><option value='puiselect-125'>Mozambique</option><option value='puiselect-126'>Namibia</option><option value='puiselect-127'>Nauru</option><option value='puiselect-128'>Nepal</option><option value='puiselect-129'>Netherlands</option><option value='puiselect-130'>New Zealand</option><option value='puiselect-131'>Nicaragua</option><option value='puiselect-132'>Niger</option><option value='puiselect-133'>Nigeria</option><option value='puiselect-134'>North Macedonia</option><option value='puiselect-135'>Norway</option><option value='puiselect-136'>Oman</option><option value='puiselect-137'>Pakistan</option><option value='puiselect-138'>Palau</option><option value='puiselect-139'>Panama</option><option value='puiselect-140'>Papua New Guinea</option><option value='puiselect-141'>Paraguay</option><option value='puiselect-142'>Peru</option><option value='puiselect-143'>Philippines</option><option value='puiselect-144'>Poland</option><option value='puiselect-145'>Portugal</option><option value='puiselect-146'>Qatar</option><option value='puiselect-147'>Romania</option><option value='puiselect-148'>Russia</option><option value='puiselect-149'>Rwanda</option><option value='puiselect-150'>Saint Kitts and Nevis</option><option value='puiselect-151'>Saint Lucia</option><option value='puiselect-152'>Saint Vincent and the Grenadines</option><option value='puiselect-153'>Samoa</option><option value='puiselect-154'>San Marino</option><option value='puiselect-155'>Sao Tome and Principe</option><option value='puiselect-156'>Saudi Arabia</option><option value='puiselect-157'>Senegal</option><option value='puiselect-158'>Serbia</option><option value='puiselect-159'>Seychelles</option><option value='puiselect-160'>Sierra Leone</option><option value='puiselect-161'>Singapore</option><option value='puiselect-162'>Slovakia</option><option value='puiselect-163'>Slovenia</option><option value='puiselect-164'>Solomon Islands</option><option value='puiselect-165'>Somalia</option><option value='puiselect-166'>South Africa</option><option value='puiselect-167'>South Sudan</option><option value='puiselect-168'>Spain</option><option value='puiselect-169'>Sri Lanka</option><option value='puiselect-170'>Sudan</option><option value='puiselect-171'>Summer Olympics 2020</option><option value='puiselect-172'>Suriname</option><option value='puiselect-173'>Sweden</option><option value='puiselect-174'>Switzerland</option><option value='puiselect-175'>Syria</option><option value='puiselect-176'>Taiwan*</option><option value='puiselect-177'>Tajikistan</option><option value='puiselect-178'>Tanzania</option><option value='puiselect-179'>Thailand</option><option value='puiselect-180'>Timor-Leste</option><option value='puiselect-181'>Togo</option><option value='puiselect-182'>Tonga</option><option value='puiselect-183'>Trinidad and Tobago</option><option value='puiselect-184'>Tunisia</option><option value='puiselect-185'>Turkey</option><option value='puiselect-186'>Tuvalu</option><option value='puiselect-187'>US</option><option value='puiselect-188'>Uganda</option><option value='puiselect-189'>Ukraine</option><option value='puiselect-190'>United Arab Emirates</option><option value='puiselect-191'>United Kingdom</option><option value='puiselect-192'>Uruguay</option><option value='puiselect-193'>Uzbekistan</option><option value='puiselect-194'>Vanuatu</option><option value='puiselect-195'>Venezuela</option><option value='puiselect-196'>Vietnam</option><option value='puiselect-197'>West Bank and Gaza</option><option value='puiselect-198'>Winter Olympics 2022</option><option value='puiselect-199'>Yemen</option><option value='puiselect-200'>Zambia</option><option value='puiselect-201'>Zimbabwe</option></select></bond>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚæ·�G°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$ada3ceb4-fc2e-11ea-2cbf-399430fa18b5¹depends_on_disabled_cellsÂ§runtimeÎT#>µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$34440afc-fc2e-11ea-0484-5b47af235badŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙÙ<div class="markdown"><p>It turns out that some countries are divided into provinces, so there are repetitions in the <code>country</code> column that we can eliminate with the <code>unique</code> function:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿèæ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$34440afc-fc2e-11ea-0484-5b47af235bad¹depends_on_disabled_cellsÂ§runtimeÎ `ªµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$a26b8742-6a16-445a-ae77-25a4189c0f14Š¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msgÙ{ArgumentError: Package Plots not found in current path:
- Run `import Pkg; Pkg.add("Plots")` to install the Plots package.
ªstacktrace’Œªcall_shortÙ"require(into::Module, mod::Symbol)§inlinedÂ£urlÙehttps://github.com/JuliaLang/julia/tree/742b9abb4dd4621b667ec5bb3434b8b3602f96fd/base/loading.jl#L959¤path¬./loading.jl®source_packageÀ¤callÙ"require(into::Module, mod::Symbol)ªlinfo_type³Core.MethodInstance¤lineÍÇ¤fileªloading.jl¤func§require­parent_moduleÀ¦from_cÂŒªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#a26b8742-6a16-445a-ae77-25a4189c0f14®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤fileÙ0covid.jl#==#a26b8742-6a16-445a-ae77-25a4189c0f14¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚá¢lµ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$a26b8742-6a16-445a-ae77-25a4189c0f14¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$ed383524-e0c0-4da2-9a98-ca75aadd2c9eŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ8<div class="markdown"><p>Array comprehension:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ C°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$ed383524-e0c0-4da2-9a98-ca75aadd2c9e¹depends_on_disabled_cellsÂ§runtimeÎ æÂµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$b93b88b0-fc4d-11ea-0c45-8f64983f8b5cŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚÇ<div class="markdown"><p>We would also like to see the outlines of each country. For this we can use, for example, the data from <a href="https://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-admin-0-countries">Natural Earth</a>, which comes in the form of <strong>shape files</strong>, giving the outlines in terms of latitude and longitude coordinates. </p>
<p>These may be read in using the <code>Shapefile.jl</code> package.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝÂ�°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$b93b88b0-fc4d-11ea-0c45-8f64983f8b5c¹depends_on_disabled_cellsÂ§runtimeÎ [ûµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$c460b0c3-6d3b-439b-8cc7-1c58d6547f51Š¦queuedÂ¤logs�§runningÂ¦output†¤body°"covid_data.csv"¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚáðIí°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$c460b0c3-6d3b-439b-8cc7-1c58d6547f51¹depends_on_disabled_cellsÂ§runtimeÎC²µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$1a59b12e-fceb-11ea-0634-1b4daee1bc62Š¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix§Float64¨elementsÜ ’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’	’£0.0ªtext/plain’
’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain’’£0.0ªtext/plain¤more’Í’£0.0ªtext/plain’Í’£0.0ªtext/plain’Í’£0.0ªtext/plain’Í’£0.0ªtext/plain’Í’§0.30103ªtext/plain’Í’£0.0ªtext/plain’Í’£0.0ªtext/plain’Í’£0.0ªtext/plain’Í ’£0.0ªtext/plain’Í!’£0.0ªtext/plain¤type¥Array¬prefix_short ¨objectid°2681c12ec6fb79e3¤mimeÙ!application/vnd.pluto.tree+object¬rootassigneeÀ²last_run_timestampËAÚêNˆƒ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$1a59b12e-fceb-11ea-0634-1b4daee1bc62¹depends_on_disabled_cellsÂ§runtimeÎîáëµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$91f99062-fc43-11ea-1b0e-afe8aa8a1c3dŠ¦queuedÂ¤logs�§runningÂ¦output†¤body¥38:60¤mimeªtext/plain¬rootassigneeªexp_period²last_run_timestampËAÚènGV°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$91f99062-fc43-11ea-1b0e-afe8aa8a1c3d¹depends_on_disabled_cellsÂ§runtimeÍ2"µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$ae9149f4-fcdc-11ea-30a3-031d38f38b23Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙs<script controls='' src='https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.js' type='text/javascript'></script>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚêFrÖ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$ae9149f4-fcdc-11ea-30a3-031d38f38b23¹depends_on_disabled_cellsÂ§runtimeÎ >2€µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$a772eadc-fc35-11ea-3d38-4b121f88f1d7Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ
<div class="markdown"><p>To extract a single row we need the <strong>index</strong> of the row &#40;i.e. which number row it is in the <code>DataFrame</code>&#41;. The <code>findfirst</code> function finds the first row that satisfies the given predicate:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ ÎŽ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$a772eadc-fc35-11ea-3d38-4b121f88f1d7¹depends_on_disabled_cellsÂ§runtimeÎ a«µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$4f23c8fc-fc43-11ea-0e73-e5f89d14155cŠ¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msg¿UndefVarError: plot not definedªstacktrace‘Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#4f23c8fc-fc43-11ea-0e73-e5f89d14155c®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤fileÙ0covid.jl#==#4f23c8fc-fc43-11ea-0e73-e5f89d14155c¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚè^t °persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$4f23c8fc-fc43-11ea-0e73-e5f89d14155c¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$a39589ee-20e3-4f22-bf81-167fd815f6f9Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ(<div class="markdown">Afghanistan
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚæ¢¤j°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$a39589ee-20e3-4f22-bf81-167fd815f6f9¹depends_on_disabled_cellsÂ§runtimeÎ ]knµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$cbd9c1aa-fc37-11ea-29d9-e3361406796fŠ¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚá¤Œe°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$cbd9c1aa-fc37-11ea-29d9-e3361406796f¹depends_on_disabled_cellsÂ§runtimeÎ ™#µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$450b4902-fc30-11ea-321d-29faf6188ff5Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙÊ<div class="markdown"><p>Note that this returns an array of booleans of the same length as the vector <code>all_countries</code>. We can now use this to index into the <code>DataFrame</code>:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ Y)°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$450b4902-fc30-11ea-321d-29faf6188ff5¹depends_on_disabled_cellsÂ§runtimeÎ 9Kµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$38344160-fc27-11ea-220e-95aa00e4b083Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyƒ¤rowsœ’™’§missingªtext/plain’­"Afghanistan"ªtext/plain’§33.9391ªtext/plain’¥67.71ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’©"Albania"ªtext/plain’§41.1533ªtext/plain’§20.1683ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’©"Algeria"ªtext/plain’§28.0339ªtext/plain’¦1.6596ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’©"Andorra"ªtext/plain’§42.5063ªtext/plain’¦1.5218ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’¨"Angola"ªtext/plain’¨-11.2027ªtext/plain’§17.8739ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’¬"Antarctica"ªtext/plain’¨-71.9499ªtext/plain’¦23.347ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’µ"Antigua and Barbuda"ªtext/plain’§17.0608ªtext/plain’¨-61.7964ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’«"Argentina"ªtext/plain’¨-38.4161ªtext/plain’¨-63.6167ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’	™’§missingªtext/plain’©"Armenia"ªtext/plain’§40.0691ªtext/plain’§45.0382ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’
™’¾"Australian Capital Territory"ªtext/plain’«"Australia"ªtext/plain’¨-35.4735ªtext/plain’§149.012ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more¤more’Í!™’§missingªtext/plain’ª"Zimbabwe"ªtext/plain’¨-19.0154ªtext/plain’§29.1549ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more¨objectid®99c6a2dcb6a177¦schema‚¥names™®Province/State®Country/Region£Lat¤Long§1/22/20§1/23/20§1/24/20§1/25/20¤more¥types™§String?¦String¨Float64?¨Float64?¥Int64¥Int64¥Int64¥Int64¤more¤mimeÙ"application/vnd.pluto.table+object¬rootassigneeÀ²last_run_timestampËAÚåÑ”6°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$38344160-fc27-11ea-220e-95aa00e4b083¹depends_on_disabled_cellsÂ§runtimeÏ   ó#Ò&µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$287f0fa8-fc44-11ea-2788-9f3ac4ee6d2bŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ7<div class="markdown"><h2>Geographical data</h2>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝS.°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$287f0fa8-fc44-11ea-2788-9f3ac4ee6d2b¹depends_on_disabled_cellsÂ§runtimeÎ »zµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$d228e232-fc39-11ea-1569-a31b817118c4Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ<div class="markdown"><p>Working with <em>cumulative</em> data is often less intuitive. Let&#39;s look at the actual number of daily cases. Julia has a <code>diff</code> function to calculate the difference between successive entries of a vector:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ˜°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$d228e232-fc39-11ea-1569-a31b817118c4¹depends_on_disabled_cellsÂ§runtimeÎ Ç3µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$9626d74a-fc3d-11ea-2ab3-978dc46c0f1fŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙà<div class="markdown"><p>Since the data contains some zeros, we need to replace those with <code>NaN</code>s &#40;&quot;Not a Number&quot;&#41;, which <code>Plots.jl</code> interprets as a signal to break the line</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝüœ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$9626d74a-fc3d-11ea-2ab3-978dc46c0f1f¹depends_on_disabled_cellsÂ§runtimeÎ epµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$3519cf96-fc26-11ea-3386-d97c61ea1b85Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ!<div class="markdown"><p>Since we need to manipulate the columns, let&#39;s rename them to something shorter. We can do this either <strong>in place</strong>, i.e. modifying the original <code>DataFrame</code>, or <strong>out of place</strong>, creating a new <code>DataFrame</code>. The convention in Julia is that functions that modify their argument have a name ending with <code>&#33;</code> &#40;often pronounced &quot;bang&quot;&#41;.</p>
<p>We can use the <code>head</code> function to see only the first few lines of the data.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿ¦ô°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$3519cf96-fc26-11ea-3386-d97c61ea1b85¹depends_on_disabled_cellsÂ§runtimeÎ ¤:µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$16a79308-fc36-11ea-16e5-e1087d7ebbdaŠ¦queuedÂ¤logs�§runningÂ¦output†¤body£261¤mimeªtext/plain¬rootassignee¦US_row²last_run_timestampËAÚæûèû°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$16a79308-fc36-11ea-16e5-e1087d7ebbda¹depends_on_disabled_cellsÂ§runtimeÍTµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$ada44a56-fc56-11ea-2ab7-fb649be7e066Š¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msgÙ>ArgumentError: File not found: ./ne_110m_admin_0_countries.dbfªstacktrace’Œªcall_short½Shapefile.Table(path::String)§inlinedÂ£urlÙ@file:///home/runner/.julia/packages/Shapefile/8RfBg/src/table.jl¤pathÙ9/home/runner/.julia/packages/Shapefile/8RfBg/src/table.jl®source_packageÀ¤call½Shapefile.Table(path::String)ªlinfo_type³Core.MethodInstance¤lineG¤file¨table.jl¤func¥Table­parent_moduleÀ¦from_cÂŒªcall_short¯top-level scope§inlinedÃ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#ada44a56-fc56-11ea-2ab7-fb649be7e066®source_packageÀ¤call¯top-level scopeªlinfo_type§Nothing¤line¤fileÙ0covid.jl#==#ada44a56-fc56-11ea-2ab7-fb649be7e066¤func»##function_wrapped_cell#472­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚéîr*°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$ada44a56-fc56-11ea-2ab7-fb649be7e066¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$64d9bcea-7c85-421d-8f1e-17ea8ee694daŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ˜"https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"¤mimeªtext/plain¬rootassignee£url²last_run_timestampËAÚáÝÖª°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$64d9bcea-7c85-421d-8f1e-17ea8ee694da¹depends_on_disabled_cellsÂ§runtimeÍ'hµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$210cee94-fc3e-11ea-1a6e-7f88270354e1Š¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefixªDates.Date¨elementsÜ ’’ª2020-02-28ªtext/plain’’ª2020-02-29ªtext/plain’’ª2020-03-01ªtext/plain’’ª2020-03-02ªtext/plain’’ª2020-03-03ªtext/plain’’ª2020-03-04ªtext/plain’’ª2020-03-05ªtext/plain’’ª2020-03-06ªtext/plain’	’ª2020-03-07ªtext/plain’
’ª2020-03-08ªtext/plain’’ª2020-03-09ªtext/plain’’ª2020-03-10ªtext/plain’’ª2020-03-11ªtext/plain’’ª2020-03-12ªtext/plain’’ª2020-03-13ªtext/plain’’ª2020-03-14ªtext/plain’’ª2020-03-15ªtext/plain’’ª2020-03-16ªtext/plain’’ª2020-03-17ªtext/plain’’ª2020-03-18ªtext/plain’’ª2020-03-19ªtext/plain’’ª2020-03-20ªtext/plain’’ª2020-03-21ªtext/plain¤type¥Array¬prefix_short ¨objectid°46ee8183dbf22275¤mimeÙ!application/vnd.pluto.tree+object¬rootassigneeÀ²last_run_timestampËAÚèwÃ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$210cee94-fc3e-11ea-1a6e-7f88270354e1¹depends_on_disabled_cellsÂ§runtimeÍ/Êµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$539c951c-fc48-11ea-2293-457b7717ea4dŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ„<div class="markdown"><p>We can fit a straight line using <strong>linear regression</strong> to this portion of the data.</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ=À°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$539c951c-fc48-11ea-2293-457b7717ea4d¹depends_on_disabled_cellsÂ§runtimeÎ ‡Îµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$aaa7c012-fc1f-11ea-3c6c-89630affb1dbŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙC<div class="markdown"><h2>Extracting useful information</h2>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿ»Ô°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$aaa7c012-fc1f-11ea-3c6c-89630affb1db¹depends_on_disabled_cellsÂ§runtimeÎ Äèµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6Š¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msg¿UndefVarError: head not definedªstacktrace‘Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤fileÙ0covid.jl#==#e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚåíÚ©°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$d3398953-afee-4989-932c-995c3ffc0c40Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ=<div class="markdown"><h2>Exploring COVID-19 data</h2>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿÉ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$d3398953-afee-4989-932c-995c3ffc0c40¹depends_on_disabled_cellsÂ§runtimeÎ ùïµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$0b01120c-fc3d-11ea-1381-8bab939e6214Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ¿<div class="markdown"><h2>Exponential growth</h2>
<p>Simple models of epidemic spread often predict a period with <strong>exponential growth</strong>. Do the data corroborate this?</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝÊ°°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$0b01120c-fc3d-11ea-1381-8bab939e6214¹depends_on_disabled_cellsÂ§runtimeÎ Õµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$db4c1f10-7c37-4513-887a-2467ce673458Š¦queuedÂ¤logs‘ˆ¤lineÿ£msg’Úü[32m[1m    Updating[22m[39m registry at `~/.julia/registries/General.toml`
[32m[1m   Resolving[22m[39m package versions...
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Project.toml`
 [90m [336ed68f] [39m[92m+ CSV v0.10.15[39m
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Manifest.toml`
 [90m [336ed68f] [39m[92m+ CSV v0.10.15[39m
 [90m [944b1d66] [39m[92m+ CodecZlib v0.7.8[39m
 [90m [34da2185] [39m[92m+ Compat v4.16.0[39m
 [90m [9a962f9c] [39m[92m+ DataAPI v1.16.0[39m
 [90m [e2d170a0] [39m[92m+ DataValueInterfaces v1.0.0[39m
 [90m [48062228] [39m[92m+ FilePathsBase v0.9.24[39m
 [90m [842dd82b] [39m[92m+ InlineStrings v1.4.4[39m
 [90m [82899510] [39m[92m+ IteratorInterfaceExtensions v1.0.0[39m
 [90m [bac558e1] [39m[92m+ OrderedCollections v1.8.1[39m
 [90m [69de0a69] [39m[92m+ Parsers v2.8.3[39m
 [90m [2dfb63ee] [39m[92m+ PooledArrays v1.4.3[39m
 [90m [91c51154] [39m[92m+ SentinelArrays v1.4.8[39m
 [90m [3783bdb8] [39m[92m+ TableTraits v1.0.1[39m
 [90m [bd369af6] [39m[92m+ Tables v1.12.1[39m
 [90m [3bb67fe8] [39m[92m+ TranscodingStreams v0.11.3[39m
 [90m [ea10d353] [39m[92m+ WeakRefStrings v1.4.2[39m
 [90m [76eceee3] [39m[92m+ WorkerUtilities v1.6.1[39m
 [90m [2a0f44e3] [39m[92m+ Base64[39m
 [90m [9fa8497b] [39m[92m+ Future[39m
 [90m [b77e0a4c] [39m[92m+ InteractiveUtils[39m
 [90m [56ddb016] [39m[92m+ Logging[39m
 [90m [d6f4376e] [39m[92m+ Markdown[39m
 [90m [a63ad114] [39m[92m+ Mmap[39m
 [90m [8dfed614] [39m[92m+ Test[39m
 [90m [cf7118a7] [39m[92m+ UUIDs[39m
 [90m [83775a58] [39m[92m+ Zlib_jll[39m
[32m[1m   Resolving[22m[39m package versions...
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Project.toml`
 [90m [a93c6f00] [39m[92m+ DataFrames v1.7.0[39m
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Manifest.toml`
 [90m [a8cc5b0e] [39m[92m+ Crayons v4.1.1[39m
 [90m [a93c6f00] [39m[92m+ DataFrames v1.7.0[39m
 [90m [864edb3b] [39m[92m+ DataStructures v0.18.22[39m
 [90m [41ab1584] [39m[92m+ InvertedIndices v1.3.1[39m
 [90m [b964fa9f] [39m[92m+ LaTeXStrings v1.4.0[39m
 [90m [e1d29d7a] [39m[92m+ Missings v1.2.0[39m
 [90m [08abe8d2] [39m[92m+ PrettyTables v2.3.2[39m
 [90m [189a3867] [39m[92m+ Reexport v1.2.2[39m
 [90m [a2af1166] [39m[92m+ SortingAlgorithms v1.2.1[39m
 [90m [892a3eda] [39m[92m+ StringManipulation v0.3.4[39m
[32m[1m   Resolving[22m[39m package versions...
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Project.toml`
 [90m [7f904dfe] [39m[92m+ PlutoUI v0.7.64[39m
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Manifest.toml`
 [90m [6e696c72] [39m[92m+ AbstractPlutoDingetjes v1.3.2[39m
 [90m [3da002f7] [39m[92m+ ColorTypes v0.12.1[39m
 [90m [53c48c17] [39m[92m+ FixedPointNumbers v0.8.5[39m
 [90m [47d2ed2b] [39m[92m+ Hyperscript v0.0.5[39m
 [90m [ac1192a8] [39m[92m+ HypertextLiteral v0.9.5[39m
 [90m [b5f81e59] [39m[92m+ IOCapture v0.2.5[39m
 [90m [682c06a0] [39m[92m+ JSON v0.21.4[39m
 [90m [6c6e2e6c] [39m[92m+ MIMEs v1.1.0[39m
 [90m [7f904dfe] [39m[92m+ PlutoUI v0.7.64[39m
 [90m [410a4b4d] [39m[92m+ Tricks v0.1.10[39m
 [90m [5c2747f8] [39m[92m+ URIs v1.5.2[39m
 [90m [0dad84c5] [39m[92m+ ArgTools[39m
 [90m [f43a241f] [39m[92m+ Downloads[39m
 [90m [7b1f6079] [39m[92m+ FileWatching[39m
 [90m [b27032c2] [39m[92m+ LibCURL[39m
 [90m [76f85450] [39m[92m+ LibGit2[39m
 [90m [ca575930] [39m[92m+ NetworkOptions[39m
 [90m [44cfe95a] [39m[92m+ Pkg[39m
 [90m [3fa0cd96] [39m[92m+ REPL[39m
 [90m [6462fe0b] [39m[92m+ Sockets[39m
 [90m [a4e569a6] [39m[92m+ Tar[39m
 [90m [deac9b47] [39m[92m+ LibCURL_jll[39m
 [90m [29816b5a] [39m[92m+ LibSSH2_jll[39m
 [90m [c8ffd9c3] [39m[92m+ MbedTLS_jll[39m
 [90m [14a3606d] [39m[92m+ MozillaCACerts_jll[39m
 [90m [8e850ede] [39m[92m+ nghttp2_jll[39m
 [90m [3f19e933] [39m[92m+ p7zip_jll[39m
[32m[1m   Resolving[22m[39m package versions...
[32m[1m   Installed[22m[39m Shapefile â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ v0.11.0
[32m[1m   Installed[22m[39m GeoInterfaceRecipes â”€ v1.0.2
[32m[1m   Installed[22m[39m DBFTables â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ v1.2.7
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Project.toml`
 [90m [8e980c4a] [39m[92m+ Shapefile v0.11.0[39m
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Manifest.toml`
 [90m [75c7ada1] [39m[92m+ DBFTables v1.2.7[39m
 [90m [411431e0] [39m[92m+ Extents v0.1.4[39m
 [90m [68eda718] [39m[92m+ GeoFormatTypes v0.4.4[39m
 [90m [cf35fbd7] [39m[92m+ GeoInterface v1.4.1[39m
 [90m [0329782f] [39m[92m+ GeoInterfaceRecipes v1.0.2[39m
 [90m [3cdcf5f2] [39m[92m+ RecipesBase v1.3.4[39m
 [90m [8e980c4a] [39m[92m+ Shapefile v0.11.0[39m
[32m[1mPrecompiling[22m[39m project...
[32m  âœ“ [39m[90mGeoInterfaceRecipes[39m
[32m  âœ“ [39m[90mDBFTables[39m
[32m  âœ“ [39mShapefile
  3 dependencies successfully precompiled in 3 seconds (53 already precompiled)
[32m[1m   Resolving[22m[39m package versions...
[32m[1m   Installed[22m[39m ZipFile â”€ v0.10.1
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Project.toml`
 [90m [a5390f91] [39m[92m+ ZipFile v0.10.1[39m
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Manifest.toml`
 [90m [a5390f91] [39m[92m+ ZipFile v0.10.1[39m
[32m[1mPrecompiling[22m[39m project...
[32m  âœ“ [39mZipFile
  1 dependency successfully precompiled in 0 seconds (56 already precompiled)
[32m[1m   Resolving[22m[39m package versions...
[32m[1m    Updating[22m[39m `~/.julia/environments/v1.7/Project.toml`
 [90m [682c06a0] [39m[92m+ JSON v0.21.4[39m
[32m[1m  No Changes[22m[39m to `~/.julia/environments/v1.7/Manifest.toml`
ªtext/plain§cell_idÙ$db4c1f10-7c37-4513-887a-2467ce673458¦kwargs�¢id´PlutoRunner_d1acb81e¤fileÙP/home/runner/.julia/packages/Pluto/6smog/src/runner/PlutoRunner/src/io/stdout.jl¥group¦stdout¥level®LogLevel(-555)§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚá5�u°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$db4c1f10-7c37-4513-887a-2467ce673458¹depends_on_disabled_cellsÂ§runtimeÏ   ÜÈj¾µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$be868a52-fc3b-11ea-0b60-7fea05ffe8e9Š¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msg¿UndefVarError: plot not definedªstacktrace‘Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#be868a52-fc3b-11ea-0b60-7fea05ffe8e9®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤fileÙ0covid.jl#==#be868a52-fc3b-11ea-0b60-7fea05ffe8e9¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚèSQU°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$be868a52-fc3b-11ea-0b60-7fea05ffe8e9¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$16981da0-fc4d-11ea-37a2-535aa014a298Š¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix·Union{Missing, Float64}¨elementsÜ ’’§33.9391ªtext/plain’’§41.1533ªtext/plain’’§28.0339ªtext/plain’’§42.5063ªtext/plain’’¨-11.2027ªtext/plain’’¨-71.9499ªtext/plain’’§17.0608ªtext/plain’’¨-38.4161ªtext/plain’	’§40.0691ªtext/plain’
’¨-35.4735ªtext/plain’’¨-33.8688ªtext/plain’’¨-12.4634ªtext/plain’’¨-27.4698ªtext/plain’’¨-34.9285ªtext/plain’’¨-42.8821ªtext/plain’’¨-37.8136ªtext/plain’’¨-31.9505ªtext/plain’’§47.5162ªtext/plain’’§40.1431ªtext/plain’’§25.0259ªtext/plain¤more’Í’¨-32.5228ªtext/plain’Í’§41.3775ªtext/plain’Í’¨-15.3767ªtext/plain’Í’¦6.4238ªtext/plain’Í’§14.0583ªtext/plain’Í’§31.9522ªtext/plain’Í’§39.9042ªtext/plain’Í’§15.5527ªtext/plain’Í ’¨-13.1339ªtext/plain’Í!’¨-19.0154ªtext/plain¤type¥Array¬prefix_short ¨objectid°2aa13290db5263c3¤mimeÙ!application/vnd.pluto.tree+object¬rootassigneeÀ²last_run_timestampËAÚè³8q°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$16981da0-fc4d-11ea-37a2-535aa014a298¹depends_on_disabled_cellsÂ§runtimeÍ>žµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$12900562-fc3a-11ea-25e1-f7c91a6940e5Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ<div class="markdown"><p>Note that discrete data should <em>always</em> be plotted with points. The lines are just to guide the eye. </p>
<p>Cumulating data corresponds to taking the integral of a function and is a <em>smoothing</em> operation. Note that the cumulative data is indeed visually smoother than the daily data.</p>
<p>The oscillations in the daily data seem to be due to a lower incidence of reporting at weekends. We could try to smooth this out by taking a <strong>moving average</strong>, say over the past week:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ³�°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$12900562-fc3a-11ea-25e1-f7c91a6940e5¹depends_on_disabled_cellsÂ§runtimeÎ m	µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$c400ce4e-fc30-11ea-13b1-b54cf8f5630eŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ<div class="markdown"><p>Now we would like to extract the data for the US alone. How can we access the correct row of the table? We can again filter on the country name. A nicer way to do this is to use the <code>filter</code> function.</p>
<p>This is a <strong>higher-order function</strong>: its first argument is itself a function, which must return <code>true</code> or <code>false</code>.  <code>filter</code> will return all the rows of the <code>DataFrame</code> that satisfy that <strong>predicate</strong>:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ žù°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$c400ce4e-fc30-11ea-13b1-b54cf8f5630e¹depends_on_disabled_cellsÂ§runtimeÎ ¨�µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$bcc95a8a-fc2e-11ea-2ccd-3bece42a08e6Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙc<div class="markdown"><p>You can also use <code>Select</code> to get a dropdown instead:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ °persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$bcc95a8a-fc2e-11ea-2ccd-3bece42a08e6¹depends_on_disabled_cellsÂ§runtimeÎ Çµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$19bdf146-fc3c-11ea-3c60-bf7823c43a1dŠ¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix§Float64¨elementsÜ ’’¨0.714286ªtext/plain’’¨0.714286ªtext/plain’’¨0.857143ªtext/plain’’¨0.857143ªtext/plain’’¨0.428571ªtext/plain’’¨0.857143ªtext/plain’’¨0.857143ªtext/plain’’¨0.714286ªtext/plain’	’¨0.857143ªtext/plain’
’¨0.571429ªtext/plain’’¨0.571429ªtext/plain’’¨0.571429ªtext/plain’’¨0.142857ªtext/plain’’¨0.285714ªtext/plain’’¨0.285714ªtext/plain’’¨0.285714ªtext/plain’’¨0.285714ªtext/plain’’¨0.285714ªtext/plain’’¨0.285714ªtext/plain’’¨0.285714ªtext/plain¤more’Íg’§34969.4ªtext/plain’Íh’§32148.6ªtext/plain’Íi’§32035.1ªtext/plain’Íj’§38611.7ªtext/plain’Ík’§38525.7ªtext/plain’Íl’§37744.6ªtext/plain’Ím’§36530.3ªtext/plain’Ín’§35350.7ªtext/plain’Ío’§31699.9ªtext/plain’Íp’§30420.7ªtext/plain¤type¥Array¬prefix_short ¨objectid¯40195018907aa91¤mimeÙ!application/vnd.pluto.tree+object¬rootassigneeÀ²last_run_timestampËAÚèO?°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$19bdf146-fc3c-11ea-3c60-bf7823c43a1d¹depends_on_disabled_cellsÂ§runtimeÎ0µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$a9c39dbe-fc4d-11ea-2e86-4992896e2abbŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ1<div class="markdown"><h2>Adding maps</h2>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ¨ô°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$a9c39dbe-fc4d-11ea-2e86-4992896e2abb¹depends_on_disabled_cellsÂ§runtimeÎ Zµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$b3e1ebf8-fc56-11ea-05b8-ed0b9e50503dŠ¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚÝ<£°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$b3e1ebf8-fc56-11ea-05b8-ed0b9e50503d¹depends_on_disabled_cellsÂ§runtimeÍGÆµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$e0493940-8aa7-4733-af72-cd6bc0e37d92Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ<<div class="markdown"><h2>Download and load data</h2>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿ0Œ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$e0493940-8aa7-4733-af72-cd6bc0e37d92¹depends_on_disabled_cellsÂ§runtimeÎ ¿ µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$99d5a138-fc30-11ea-2977-71732ca3aeadŠ¦queuedÂ¤logs�§runningÂ¦output†¤body£289¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚæÒ�°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$99d5a138-fc30-11ea-2977-71732ca3aead¹depends_on_disabled_cellsÂ§runtimeÍ*€µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$85a145c6-fceb-11ea-0c94-27b3ef8270bcŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ)<div class="markdown"><p>Day 1</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚêH.Œ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$85a145c6-fceb-11ea-0c94-27b3ef8270bc¹depends_on_disabled_cellsÂ§runtimeÎ €–µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$0c098923-b016-4c65-9a37-6b7b56b13a0cŠ¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix¦String¨elementsÜ ’’©"1/22/20"ªtext/plain’’©"1/23/20"ªtext/plain’’©"1/24/20"ªtext/plain’’©"1/25/20"ªtext/plain’’©"1/26/20"ªtext/plain’’©"1/27/20"ªtext/plain’’©"1/28/20"ªtext/plain’’©"1/29/20"ªtext/plain’	’©"1/30/20"ªtext/plain’
’©"1/31/20"ªtext/plain’’¨"2/1/20"ªtext/plain’’¨"2/2/20"ªtext/plain’’¨"2/3/20"ªtext/plain’’¨"2/4/20"ªtext/plain’’¨"2/5/20"ªtext/plain’’¨"2/6/20"ªtext/plain’’¨"2/7/20"ªtext/plain’’¨"2/8/20"ªtext/plain’’¨"2/9/20"ªtext/plain’’©"2/10/20"ªtext/plain¤more’Ín’©"2/28/23"ªtext/plain’Ío’¨"3/1/23"ªtext/plain’Íp’¨"3/2/23"ªtext/plain’Íq’¨"3/3/23"ªtext/plain’Ír’¨"3/4/23"ªtext/plain’Ís’¨"3/5/23"ªtext/plain’Ít’¨"3/6/23"ªtext/plain’Íu’¨"3/7/23"ªtext/plain’Ív’¨"3/8/23"ªtext/plain’Íw’¨"3/9/23"ªtext/plain¤type¥Array¬prefix_short ¨objectid°b1772268603f5390¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee¬date_strings²last_run_timestampËAÚçÄ%c°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$0c098923-b016-4c65-9a37-6b7b56b13a0c¹depends_on_disabled_cellsÂ§runtimeÎ»jµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$ee27bd98-fc37-11ea-163c-1365e194fc2eŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ‚<div class="markdown"><p>Since the year was not correctly represented in the original data, we need to manually fix it:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝl‡°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$ee27bd98-fc37-11ea-163c-1365e194fc2e¹depends_on_disabled_cellsÂ§runtimeÎ   µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$f099424c-0e22-42fb-894c-d8c2a65715fbŠ¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msgÙ"UndefVarError: scatter not definedªstacktrace‘Œªcall_short¯top-level scope§inlinedÂ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#f099424c-0e22-42fb-894c-d8c2a65715fb®source_packageÀ¤call¯top-level scopeªlinfo_type­Core.CodeInfo¤line¤fileÙ0covid.jl#==#f099424c-0e22-42fb-894c-d8c2a65715fb¤func¯top-level scope­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚç¼�(°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$f099424c-0e22-42fb-894c-d8c2a65715fb¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃÙ$57a9bb06-fc4a-11ea-2665-7f97026981dcŠ¦queuedÂ¤logs�§runningÂ¦output†¤bodyÙ•<div class="markdown"><p>Let&#39;s extract and plot the geographical information. To reduce the visual noise a bit we will only use those </p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÝ}Ì°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$57a9bb06-fc4a-11ea-2665-7f97026981dc¹depends_on_disabled_cellsÂ§runtimeÎ ¤µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$bb6316b7-23fb-44a3-b64a-dfb71a7df011Š¦queuedÂ¤logs�§runningÂ¦output†¤body…¦prefix¦String¨elementsÜ ’’ª"province"ªtext/plain’’©"country"ªtext/plain’’ª"latitude"ªtext/plain’’«"longitude"ªtext/plain’’©"1/22/20"ªtext/plain’’©"1/23/20"ªtext/plain’’©"1/24/20"ªtext/plain’’©"1/25/20"ªtext/plain’	’©"1/26/20"ªtext/plain’
’©"1/27/20"ªtext/plain’’©"1/28/20"ªtext/plain’’©"1/29/20"ªtext/plain’’©"1/30/20"ªtext/plain’’©"1/31/20"ªtext/plain’’¨"2/1/20"ªtext/plain’’¨"2/2/20"ªtext/plain’’¨"2/3/20"ªtext/plain’’¨"2/4/20"ªtext/plain’’¨"2/5/20"ªtext/plain’’¨"2/6/20"ªtext/plain¤more’Ír’©"2/28/23"ªtext/plain’Ís’¨"3/1/23"ªtext/plain’Ít’¨"3/2/23"ªtext/plain’Íu’¨"3/3/23"ªtext/plain’Ív’¨"3/4/23"ªtext/plain’Íw’¨"3/5/23"ªtext/plain’Íx’¨"3/6/23"ªtext/plain’Íy’¨"3/7/23"ªtext/plain’Íz’¨"3/8/23"ªtext/plain’Í{’¨"3/9/23"ªtext/plain¤type¥Array¬prefix_short ¨objectid°feb88e38fd103b60¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee¬column_names²last_run_timestampËAÚç¾tÖ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$bb6316b7-23fb-44a3-b64a-dfb71a7df011¹depends_on_disabled_cellsÂ§runtimeÎ òŒ¸µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$d911edb6-fc87-11ea-2258-d34d61c02245Š¦queuedÂ¤logs�§runningÂ¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚÝä�°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$d911edb6-fc87-11ea-2258-d34d61c02245¹depends_on_disabled_cellsÂ§runtimeÎ £µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$7b2496b0-fc35-11ea-0e78-473e5e8eac44Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyƒ¤rowsŸ’™’ª"Anguilla"ªtext/plain’°"United Kingdom"ªtext/plain’§18.2206ªtext/plain’¨-63.0686ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’©"Bermuda"ªtext/plain’°"United Kingdom"ªtext/plain’§32.3078ªtext/plain’¨-64.7505ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’¸"British Virgin Islands"ªtext/plain’°"United Kingdom"ªtext/plain’§18.4207ªtext/plain’¦-64.64ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’°"Cayman Islands"ªtext/plain’°"United Kingdom"ªtext/plain’§19.3133ªtext/plain’¨-81.2546ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’±"Channel Islands"ªtext/plain’°"United Kingdom"ªtext/plain’§49.3723ªtext/plain’§-2.3644ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’½"Falkland Islands (Malvinas)"ªtext/plain’°"United Kingdom"ªtext/plain’¨-51.7963ªtext/plain’¨-59.5236ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’«"Gibraltar"ªtext/plain’°"United Kingdom"ªtext/plain’§36.1408ªtext/plain’§-5.3536ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’ª"Guernsey"ªtext/plain’°"United Kingdom"ªtext/plain’§49.4482ªtext/plain’¨-2.58949ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’	™’­"Isle of Man"ªtext/plain’°"United Kingdom"ªtext/plain’§54.2361ªtext/plain’§-4.5481ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’
™’¨"Jersey"ªtext/plain’°"United Kingdom"ªtext/plain’§49.2138ªtext/plain’§-2.1358ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’¬"Montserrat"ªtext/plain’°"United Kingdom"ªtext/plain’§16.7425ªtext/plain’¨-62.1874ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’²"Pitcairn Islands"ªtext/plain’°"United Kingdom"ªtext/plain’¨-24.3768ªtext/plain’¨-128.324ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’Ù."Saint Helena, Ascension and Tristan da Cunha"ªtext/plain’°"United Kingdom"ªtext/plain’§-7.9467ªtext/plain’¨-14.3559ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’º"Turks and Caicos Islands"ªtext/plain’°"United Kingdom"ªtext/plain’¦21.694ªtext/plain’¨-71.7979ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more’™’§missingªtext/plain’°"United Kingdom"ªtext/plain’§55.3781ªtext/plain’¦-3.436ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain’¡0ªtext/plain¤more¨objectid°9193a76923903f1d¦schema‚¥names™¨province§country¨latitude©longitude§1/22/20§1/23/20§1/24/20§1/25/20¤more¥types™§String?¦String¨Float64?¨Float64?¥Int64¥Int64¥Int64¥Int64¤more¤mimeÙ"application/vnd.pluto.table+object¬rootassigneeÀ²last_run_timestampËAÚæø¼è°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$7b2496b0-fc35-11ea-0e78-473e5e8eac44¹depends_on_disabled_cellsÂ§runtimeÎ²î›µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$efa281da-cef9-41bc-923e-625140ce5a07Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚ<div class="markdown"><p>In this notebook we will explore and analyse data on the COVID-19 pandemic. The aim is to use Julia&#39;s tools to analyse and visualise the data in different ways.</p>
<p>Here is an example of the kind of visualisation we will be able to produce:</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿH°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$efa281da-cef9-41bc-923e-625140ce5a07¹depends_on_disabled_cellsÂ§runtimeÎ Âµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$ad43cea2-fc28-11ea-2bc3-a9d81e3766f4Š¦queuedÂ¤logs�§runningÂ¦output†¤bodyÚX<div class="markdown"><p>A <code>DataFrame</code> is a standard way of storing <strong>heterogeneous data</strong> in Julia, i.e. a table consisting of columns with different types. As you can see from the display of the <code>DataFrame</code> object above, each column has an associated type, but different columns have different types, reflecting the type of the data in that column.</p>
<p>In our case, country names are stored as <code>String</code>s, their latitude and longitude as <code>Float64</code>s and the &#40;cumulative&#41; case counts for each day as <code>Int64</code>s. .</p>
</div>¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚÜÿx:°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$ad43cea2-fc28-11ea-2bc3-a9d81e3766f4¹depends_on_disabled_cellsÂ§runtimeÎ L^µpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÂÙ$7ec28cd0-fc87-11ea-2de5-1959ea5dc37cŠ¦queuedÂ¤logs�§runningÂ¦output†¤body‚£msgÙ�HTTP/2 500 while requesting https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zipªstacktrace™Œªcall_short¢#3§inlinedÃ£urlÀ¤pathÙ`/buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/Downloads/src/Downloads.jl®source_packageÀ¤call¢#3ªlinfo_type§Nothing¤lineÌó¤file¬Downloads.jl¤func¢#3­parent_moduleÀ¦from_cÂŒªcall_shortÙˆarg_write(f::Downloads.var"#3#4"{Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, Nothing, String}, arg::Nothing)§inlinedÂ£urlÙefile:///buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/ArgTools/src/ArgTools.jl¤pathÙ^/buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/ArgTools/src/ArgTools.jl®source_packageÀ¤callÙˆarg_write(f::Downloads.var"#3#4"{Nothing, Vector{Pair{String, String}}, Float64, Nothing, Bool, Nothing, Nothing, String}, arg::Nothing)ªlinfo_type³Core.MethodInstance¤linee¤file«ArgTools.jl¤func©arg_write­parent_moduleÀ¦from_cÂŒªcall_short«#download#2§inlinedÃ£urlÀ¤pathÙ`/buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/Downloads/src/Downloads.jl®source_packageÀ¤call«#download#2ªlinfo_type§Nothing¤lineÌæ¤file¬Downloads.jl¤func«#download#2­parent_moduleÀ¦from_cÂŒªcall_shortÙ&download(url::String, output::Nothing)§inlinedÂ£urlÙgfile:///buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/Downloads/src/Downloads.jl¤pathÙ`/buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.7/Downloads/src/Downloads.jl®source_packageÀ¤callÙ&download(url::String, output::Nothing)ªlinfo_type³Core.MethodInstance¤lineÌæ¤file¬Downloads.jl¤func¨download­parent_moduleÀ¦from_cÂŒªcall_short¯#invokelatest#2§inlinedÃ£urlÀ¤path¯./essentials.jl®source_packageÀ¤call¯#invokelatest#2ªlinfo_type§Nothing¤lineÍÌ¤file­essentials.jl¤func¯#invokelatest#2­parent_moduleÀ¦from_cÂŒªcall_short¬invokelatest§inlinedÃ£urlÀ¤path¯./essentials.jl®source_packageÀ¤call¬invokelatestªlinfo_type§Nothing¤lineÍÊ¤file­essentials.jl¤func¬invokelatest­parent_moduleÀ¦from_cÂŒªcall_short«do_download§inlinedÃ£urlÀ¤path­./download.jl®source_packageÀ¤call«do_downloadªlinfo_type§Nothing¤line¤file«download.jl¤func«do_download­parent_moduleÀ¦from_cÂŒªcall_short¨download§inlinedÃ£urlÀ¤path­./download.jl®source_packageÀ¤call¨downloadªlinfo_type§Nothing¤line¤file«download.jl¤func¨download­parent_moduleÀ¦from_cÂŒªcall_short¯top-level scope§inlinedÃ£urlÀ¤pathÙf/home/runner/work/disorganised-mess/disorganised-mess/covid.jl#==#7ec28cd0-fc87-11ea-2de5-1959ea5dc37c®source_packageÀ¤call¯top-level scopeªlinfo_type§Nothing¤line¤fileÙ0covid.jl#==#7ec28cd0-fc87-11ea-2de5-1959ea5dc37c¤func»##function_wrapped_cell#464­parent_moduleÀ¦from_cÂ¤mimeÙ'application/vnd.pluto.stacktrace+object¬rootassigneeÀ²last_run_timestampËAÚé SÅ°persist_js_stateÂ·has_pluto_hook_featuresÂ§cell_idÙ$7ec28cd0-fc87-11ea-2de5-1959ea5dc37c¹depends_on_disabled_cellsÂ§runtimeÀµpublished_object_keys�¸depends_on_skipped_cellsÂ§erroredÃ±cell_dependenciesÞ jÙ$251c06e4-fc77-11ea-1a0f-73139ba11e83„´precedence_heuristic	§cell_idÙ$251c06e4-fc77-11ea-1a0f-73139ba11e83´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$68f76d3b-b398-459d-bf39-20bf300dcaa2„´precedence_heuristic	§cell_idÙ$68f76d3b-b398-459d-bf39-20bf300dcaa2´downstream_cells_map�­all_countries”Ù$79ba0433-2a31-475a-87c9-14103ebbff16Ù$9ee79840-30ff-4c92-97f4-e178caceceafÙ$16a79308-fc36-11ea-16e5-e1087d7ebbdaÙ$a29c8ad0-fc4a-11ea-14c7-71435769b73e²upstream_cells_map‚¡:�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083Ù$8990f13a-fc35-11ea-338f-0955eeb23c3c„´precedence_heuristic	§cell_idÙ$8990f13a-fc35-11ea-338f-0955eeb23c3c´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$b3880f40-fc36-11ea-074a-edc51adeb6f0„´precedence_heuristic	§cell_idÙ$b3880f40-fc36-11ea-074a-edc51adeb6f0´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$25c79620-14f4-45a7-b120-05ec72cb77e9„´precedence_heuristic	§cell_idÙ$25c79620-14f4-45a7-b120-05ec72cb77e9´downstream_cells_map�«date_format’Ù$31dc4e46-4839-4f01-b383-1a1189aeb0e6Ù$f5c29f0d-937f-4731-8f87-0405ebc966f5²upstream_cells_map‚¥Dates‘Ù$cbd9c1aa-fc37-11ea-29d9-e3361406796f°Dates.DateFormat�Ù$0f87cec6-fc31-11ea-23d2-395e61f38b6f„´precedence_heuristic	§cell_idÙ$0f87cec6-fc31-11ea-23d2-395e61f38b6f´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$893a417c-fcea-11ea-38f4-1df639c54cbc„´precedence_heuristic	§cell_idÙ$893a417c-fcea-11ea-38f4-1df639c54cbc´downstream_cells_map€²upstream_cells_map…£day‘Ù$4ccb2718-fce2-11ea-18c4-89640faec38d¡:�ªset_points‘Ù$c939a87a-fcdc-11ea-29dd-c1f6dd3de88f¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083¥daily‘Ù$39982810-fc76-11ea-01c3-3987cfc2fd3cÙ$252eff18-fc3d-11ea-0c18-7b130ada882e„´precedence_heuristic	§cell_idÙ$252eff18-fc3d-11ea-0c18-7b130ada882e´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$c939a87a-fcdc-11ea-29dd-c1f6dd3de88f„´precedence_heuristic	§cell_idÙ$c939a87a-fcdc-11ea-29dd-c1f6dd3de88f´downstream_cells_map�ªset_points‘Ù$893a417c-fcea-11ea-38f4-1df639c54cbc²upstream_cells_map…¤JSON‘Ù$db4c1f10-7c37-4513-887a-2467ce673458­make_features‘Ù$b4264196-fcdc-11ea-2197-512f8363a4d3¤HTML�¦sprint�ªJSON.print�Ù$a41db8ea-f0e0-461f-a298-bdcea42a67f3„´precedence_heuristic	§cell_idÙ$a41db8ea-f0e0-461f-a298-bdcea42a67f3´downstream_cells_map€²upstream_cells_mapƒ¡:�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083¦US_row‘Ù$16a79308-fc36-11ea-16e5-e1087d7ebbdaÙ$a29c8ad0-fc4a-11ea-14c7-71435769b73e„´precedence_heuristic	§cell_idÙ$a29c8ad0-fc4a-11ea-14c7-71435769b73e´downstream_cells_map�§indices�²upstream_cells_mapƒ¨province‘Ù$80138b30-fc4a-11ea-0e15-b54cf6b402df­all_countries‘Ù$68f76d3b-b398-459d-bf39-20bf300dcaa2©ismissing�Ù$4e4cca22-fc4c-11ea-12ae-2b51545799ec„´precedence_heuristic	§cell_idÙ$4e4cca22-fc4c-11ea-12ae-2b51545799ec´downstream_cells_map€²upstream_cells_mapŠ¦length�©annotate!�¡:�¨province‘Ù$80138b30-fc4a-11ea-0e15-b54cf6b402df§scatter�¤RGBA�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083§Float64�¥plot!�¤text�Ù$f8e754ee-fc73-11ea-0c7f-cdc760ab3e94„´precedence_heuristic	§cell_idÙ$f8e754ee-fc73-11ea-0c7f-cdc760ab3e94´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$c2da1f88-fcdb-11ea-0b18-bf801c373a73„´precedence_heuristic	§cell_idÙ$c2da1f88-fcdb-11ea-0b18-bf801c373a73´downstream_cells_map€²upstream_cells_map�¨Resource�Ù$687409a2-fc43-11ea-03e0-d9a7a48165a8„´precedence_heuristic	§cell_idÙ$687409a2-fc43-11ea-03e0-d9a7a48165a8´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$b4264196-fcdc-11ea-2197-512f8363a4d3„´precedence_heuristic	§cell_idÙ$b4264196-fcdc-11ea-2197-512f8363a4d3´downstream_cells_map�­make_features‘Ù$c939a87a-fcdc-11ea-29dd-c1f6dd3de88f²upstream_cells_map…¤Dict�£map�¥log10�¡*�¢=>�Ù$a8b2db96-fc30-11ea-2eea-b938a3a430fb„´precedence_heuristic	§cell_idÙ$a8b2db96-fc30-11ea-2eea-b938a3a430fb´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$67eebb7e-fc36-11ea-03ef-bd6966487bb5„´precedence_heuristic	§cell_idÙ$67eebb7e-fc36-11ea-03ef-bd6966487bb5´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$511eb51e-fc38-11ea-0492-19532da809de„´precedence_heuristic	§cell_idÙ$511eb51e-fc38-11ea-0492-19532da809de´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$9ee79840-30ff-4c92-97f4-e178caceceaf„´precedence_heuristic	§cell_idÙ$9ee79840-30ff-4c92-97f4-e178caceceaf´downstream_cells_map�«U_countries’Ù$99d5a138-fc30-11ea-2977-71732ca3aeadÙ$4f423a75-43da-486f-ac2a-7220032dac9f²upstream_cells_map‚­all_countries‘Ù$68f76d3b-b398-459d-bf39-20bf300dcaa2ªstartswith�Ù$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2„´precedence_heuristic	§cell_idÙ$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2´downstream_cells_map�¡i‘Ù$a39589ee-20e3-4f22-bf81-167fd815f6f9²upstream_cells_map‹¤Core�¡:�¨Base.get�¥@bind�¦Slider�©countries‘Ù$79ba0433-2a31-475a-87c9-14103ebbff16¤Base�¦length�«PlutoRunner�·PlutoRunner.create_bond�¯Core.applicable�Ù$80138b30-fc4a-11ea-0e15-b54cf6b402df„´precedence_heuristic	§cell_idÙ$80138b30-fc4a-11ea-0e15-b54cf6b402df´downstream_cells_map�¨province’Ù$a29c8ad0-fc4a-11ea-14c7-71435769b73eÙ$4e4cca22-fc4c-11ea-12ae-2b51545799ec²upstream_cells_map�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083Ù$546a40eb-7897-485d-a1b5-c4dfae0a4861„´precedence_heuristic	§cell_idÙ$546a40eb-7897-485d-a1b5-c4dfae0a4861´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$7b5db0f4-fc36-11ea-09a5-49def64f4c79„´precedence_heuristic	§cell_idÙ$7b5db0f4-fc36-11ea-09a5-49def64f4c79´downstream_cells_map�§US_data“Ù$f099424c-0e22-42fb-894c-d8c2a65715fbÙ$36c37b4d-eb23-4deb-a593-e511eccd9204Ù$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c²upstream_cells_map…¡:�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083¦US_row‘Ù$16a79308-fc36-11ea-16e5-e1087d7ebbda£end�¦Vector�Ù$7e7d14a2-fc37-11ea-3f1a-870ca98c4b75„´precedence_heuristic	§cell_idÙ$7e7d14a2-fc37-11ea-3f1a-870ca98c4b75´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$79ba0433-2a31-475a-87c9-14103ebbff16„´precedence_heuristic	§cell_idÙ$79ba0433-2a31-475a-87c9-14103ebbff16´downstream_cells_map�©countries“Ù$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2Ù$a39589ee-20e3-4f22-bf81-167fd815f6f9Ù$ada3ceb4-fc2e-11ea-2cbf-399430fa18b5²upstream_cells_map‚¦unique�­all_countries‘Ù$68f76d3b-b398-459d-bf39-20bf300dcaa2Ù$dc2cfa82-fc86-11ea-1311-bb6e69350d43„´precedence_heuristic	§cell_idÙ$dc2cfa82-fc86-11ea-1311-bb6e69350d43´downstream_cells_map€²upstream_cells_map�¨download�Ù$39982810-fc76-11ea-01c3-3987cfc2fd3c„´precedence_heuristic	§cell_idÙ$39982810-fc76-11ea-01c3-3987cfc2fd3c´downstream_cells_map�¥daily”Ù$4ccb2718-fce2-11ea-18c4-89640faec38dÙ$b406eec8-fc77-11ea-1a98-d36d6d3e2393Ù$893a417c-fcea-11ea-38f4-1df639c54cbcÙ$1a59b12e-fceb-11ea-0634-1b4daee1bc62²upstream_cells_map‡¡:�£max�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083¥Array�¦isless�¤diff�£end�Ù$19f4da16-fc31-11ea-0de9-1dbe668b862d„´precedence_heuristic	§cell_idÙ$19f4da16-fc31-11ea-0de9-1dbe668b862d´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$1f30a1ac-fc74-11ea-2abf-abf437006bab„´precedence_heuristic	§cell_idÙ$1f30a1ac-fc74-11ea-2abf-abf437006bab´downstream_cells_map€²upstream_cells_map‚£day‘Ù$4ccb2718-fce2-11ea-18c4-89640faec38d¥dates‘Ù$f5c29f0d-937f-4731-8f87-0405ebc966f5Ù$1633abe8-fc2f-11ea-2c7e-21b3348a3569„´precedence_heuristic	§cell_idÙ$1633abe8-fc2f-11ea-2c7e-21b3348a3569´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$a054e048-4fea-487c-9d06-463723c7151c„´precedence_heuristic	§cell_idÙ$a054e048-4fea-487c-9d06-463723c7151c´downstream_cells_map�¦data_2�²upstream_cells_map„¤head�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083¦rename�¢=>�Ù$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c„´precedence_heuristic	§cell_idÙ$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c´downstream_cells_map�«daily_cases”Ù$19bdf146-fc3c-11ea-3c60-bf7823c43a1dÙ$be868a52-fc3b-11ea-0b60-7fea05ffe8e9Ù$4358c348-91aa-4c76-a443-0a9cefce0e83Ù$4f23c8fc-fc43-11ea-0e73-e5f89d14155c²upstream_cells_map†§US_data‘Ù$7b5db0f4-fc36-11ea-09a5-49def64f4c79¡:�¤plot�¥dates‘Ù$f5c29f0d-937f-4731-8f87-0405ebc966f5¤diff�£end�Ù$8709f208-fc4a-11ea-0203-e13eae5f0d93„´precedence_heuristic	§cell_idÙ$8709f208-fc4a-11ea-0203-e13eae5f0d93´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$07282688-fc3e-11ea-2f9e-5b0581061e65„´precedence_heuristic	§cell_idÙ$07282688-fc3e-11ea-2f9e-5b0581061e65´downstream_cells_map€²upstream_cells_map…§@md_str�¥first�ªexp_period‘Ù$91f99062-fc43-11ea-1b0e-afe8aa8a1c3d¤last�¨getindex�Ù$3edd2a22-fc4a-11ea-07e5-55ca6d7639e8„´precedence_heuristic	§cell_idÙ$3edd2a22-fc4a-11ea-07e5-55ca6d7639e8´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$0f329ece-fc74-11ea-1e02-bdbddf551ef3„´precedence_heuristic	§cell_idÙ$0f329ece-fc74-11ea-1e02-bdbddf551ef3´downstream_cells_map�©day_ticks‘Ù$4ccb2718-fce2-11ea-18c4-89640faec38d²upstream_cells_mapˆ¤Core�¤Base�¥Clock�·PlutoRunner.create_bond�«PlutoRunner�¯Core.applicable�¥@bind�¨Base.get�Ù$2f254a9e-fc3e-11ea-2c02-75ed59f41903„´precedence_heuristic	§cell_idÙ$2f254a9e-fc3e-11ea-2c02-75ed59f41903´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$31dc4e46-4839-4f01-b383-1a1189aeb0e6„´precedence_heuristic	§cell_idÙ$31dc4e46-4839-4f01-b383-1a1189aeb0e6´downstream_cells_map€²upstream_cells_map„¬date_strings‘Ù$0c098923-b016-4c65-9a37-6b7b56b13a0c¤Date�«date_format‘Ù$25c79620-14f4-45a7-b120-05ec72cb77e9¥parse�Ù$f5c29f0d-937f-4731-8f87-0405ebc966f5„´precedence_heuristic	§cell_idÙ$f5c29f0d-937f-4731-8f87-0405ebc966f5´downstream_cells_map�¥dates”Ù$36c37b4d-eb23-4deb-a593-e511eccd9204Ù$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4cÙ$210cee94-fc3e-11ea-1a6e-7f88270354e1Ù$1f30a1ac-fc74-11ea-2abf-abf437006bab²upstream_cells_map†¬date_strings‘Ù$0c098923-b016-4c65-9a37-6b7b56b13a0c¡+�«date_format‘Ù$25c79620-14f4-45a7-b120-05ec72cb77e9¤Date�¤Year�¥parse�Ù$4f423a75-43da-486f-ac2a-7220032dac9f„´precedence_heuristic	§cell_idÙ$4f423a75-43da-486f-ac2a-7220032dac9f´downstream_cells_map€²upstream_cells_mapƒ¡:�«U_countries‘Ù$9ee79840-30ff-4c92-97f4-e178caceceaf¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083Ù$6de0800c-fc37-11ea-0d94-2b6f8f66964d„´precedence_heuristic	§cell_idÙ$6de0800c-fc37-11ea-0d94-2b6f8f66964d´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$24934438-fc74-11ea-12e4-7f7e50f54029„´precedence_heuristic	§cell_idÙ$24934438-fc74-11ea-12e4-7f7e50f54029´downstream_cells_map€²upstream_cells_map€Ù$4358c348-91aa-4c76-a443-0a9cefce0e83„´precedence_heuristic	§cell_idÙ$4358c348-91aa-4c76-a443-0a9cefce0e83´downstream_cells_map€²upstream_cells_mapˆ«daily_cases‘Ù$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c¦title!�§replace�¤plot�¢=>�§xlabel!�£NaN�§ylabel!�Ù$9484ea9e-fc2e-11ea-137c-6da8212da5bd„´precedence_heuristic	§cell_idÙ$9484ea9e-fc2e-11ea-137c-6da8212da5bd´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$4ccb2718-fce2-11ea-18c4-89640faec38d„´precedence_heuristic	§cell_idÙ$4ccb2718-fce2-11ea-18c4-89640faec38d´downstream_cells_map�£day•Ù$b406eec8-fc77-11ea-1a98-d36d6d3e2393Ù$1f30a1ac-fc74-11ea-2abf-abf437006babÙ$85a145c6-fceb-11ea-0c94-27b3ef8270bcÙ$893a417c-fcea-11ea-38f4-1df639c54cbcÙ$1a59b12e-fceb-11ea-0634-1b4daee1bc62²upstream_cells_map…©day_ticks‘Ù$0f329ece-fc74-11ea-1e02-bdbddf551ef3£min�¦isless�¤size�¥daily‘Ù$39982810-fc76-11ea-01c3-3987cfc2fd3cÙ$75d2dc66-fc47-11ea-0e35-05f9cf38e901„´precedence_heuristic	§cell_idÙ$75d2dc66-fc47-11ea-0e35-05f9cf38e901´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$b406eec8-fc77-11ea-1a98-d36d6d3e2393„´precedence_heuristic	§cell_idÙ$b406eec8-fc77-11ea-1a98-d36d6d3e2393´downstream_cells_map€²upstream_cells_map…£day‘Ù$4ccb2718-fce2-11ea-18c4-89640faec38d¡:�¥log10�¥daily‘Ù$39982810-fc76-11ea-01c3-3987cfc2fd3c§maximum�Ù$861a2c3a-fc88-11ea-2d95-fb076e751203„´precedence_heuristic	§cell_idÙ$861a2c3a-fc88-11ea-2d95-fb076e751203´downstream_cells_map€²upstream_cells_mapƒ¤Base�®Base.Docs.HTML�©@html_str�Ù$c5ad4d40-fc57-11ea-23cb-e55487bc6f7a„´precedence_heuristic	§cell_idÙ$c5ad4d40-fc57-11ea-23cb-e55487bc6f7a´downstream_cells_map€²upstream_cells_mapƒ¦filter�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083ªstartswith�Ù$b0eb3918-fc1f-11ea-238b-7f5d23e424bb„´precedence_heuristic	§cell_idÙ$b0eb3918-fc1f-11ea-238b-7f5d23e424bb´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$36c37b4d-eb23-4deb-a593-e511eccd9204„´precedence_heuristic	§cell_idÙ$36c37b4d-eb23-4deb-a593-e511eccd9204´downstream_cells_map€²upstream_cells_map†§US_data‘Ù$7b5db0f4-fc36-11ea-09a5-49def64f4c79¦title!�¤plot�¥dates‘Ù$f5c29f0d-937f-4731-8f87-0405ebc966f5§xlabel!�§ylabel!�Ù$a7369222-fc20-11ea-314d-4d6b0f0f72eb„´precedence_heuristic	§cell_idÙ$a7369222-fc20-11ea-314d-4d6b0f0f72eb´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$fab64d86-fc28-11ea-0ae1-3ba1b9a14759„´precedence_heuristic	§cell_idÙ$fab64d86-fc28-11ea-0ae1-3ba1b9a14759´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$9e23b0e2-ac13-4d19-a3f9-4a655a1e9f14„´precedence_heuristic	§cell_idÙ$9e23b0e2-ac13-4d19-a3f9-4a655a1e9f14´downstream_cells_map€²upstream_cells_map�¬date_strings‘Ù$0c098923-b016-4c65-9a37-6b7b56b13a0cÙ$1620aa9d-7dcd-4686-b7e4-a72cebe315ed„´precedence_heuristic	§cell_idÙ$1620aa9d-7dcd-4686-b7e4-a72cebe315ed´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$ada3ceb4-fc2e-11ea-2cbf-399430fa18b5„´precedence_heuristic	§cell_idÙ$ada3ceb4-fc2e-11ea-2cbf-399430fa18b5´downstream_cells_map�§country�²upstream_cells_map‰©countries‘Ù$79ba0433-2a31-475a-87c9-14103ebbff16¤Base�¤Core�·PlutoRunner.create_bond�«PlutoRunner�¯Core.applicable�¥@bind�¨Base.get�¦Select�Ù$34440afc-fc2e-11ea-0484-5b47af235bad„´precedence_heuristic	§cell_idÙ$34440afc-fc2e-11ea-0484-5b47af235bad´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$a26b8742-6a16-445a-ae77-25a4189c0f14„´precedence_heuristic§cell_idÙ$a26b8742-6a16-445a-ae77-25a4189c0f14´downstream_cells_map�¥Plots�²upstream_cells_map€Ù$ed383524-e0c0-4da2-9a98-ca75aadd2c9e„´precedence_heuristic	§cell_idÙ$ed383524-e0c0-4da2-9a98-ca75aadd2c9e´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$b93b88b0-fc4d-11ea-0c45-8f64983f8b5c„´precedence_heuristic	§cell_idÙ$b93b88b0-fc4d-11ea-0c45-8f64983f8b5c´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$c460b0c3-6d3b-439b-8cc7-1c58d6547f51„´precedence_heuristic	§cell_idÙ$c460b0c3-6d3b-439b-8cc7-1c58d6547f51´downstream_cells_map€²upstream_cells_map‚¨download�£url‘Ù$64d9bcea-7c85-421d-8f1e-17ea8ee694daÙ$1a59b12e-fceb-11ea-0634-1b4daee1bc62„´precedence_heuristic	§cell_idÙ$1a59b12e-fceb-11ea-0634-1b4daee1bc62´downstream_cells_map€²upstream_cells_map„£day‘Ù$4ccb2718-fce2-11ea-18c4-89640faec38d¡:�¥log10�¥daily‘Ù$39982810-fc76-11ea-01c3-3987cfc2fd3cÙ$91f99062-fc43-11ea-1b0e-afe8aa8a1c3d„´precedence_heuristic	§cell_idÙ$91f99062-fc43-11ea-1b0e-afe8aa8a1c3d´downstream_cells_map�ªexp_period’Ù$07282688-fc3e-11ea-2f9e-5b0581061e65Ù$210cee94-fc3e-11ea-1a6e-7f88270354e1²upstream_cells_map�¡:�Ù$ae9149f4-fcdc-11ea-30a3-031d38f38b23„´precedence_heuristic	§cell_idÙ$ae9149f4-fcdc-11ea-30a3-031d38f38b23´downstream_cells_map€²upstream_cells_map�¨Resource�Ù$a772eadc-fc35-11ea-3d38-4b121f88f1d7„´precedence_heuristic	§cell_idÙ$a772eadc-fc35-11ea-3d38-4b121f88f1d7´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$4f23c8fc-fc43-11ea-0e73-e5f89d14155c„´precedence_heuristic	§cell_idÙ$4f23c8fc-fc43-11ea-0e73-e5f89d14155c´downstream_cells_map€²upstream_cells_mapˆ«daily_cases‘Ù$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c¦title!�§replace�¤plot�¢=>�§xlabel!�£NaN�§ylabel!�Ù$a39589ee-20e3-4f22-bf81-167fd815f6f9„´precedence_heuristic	§cell_idÙ$a39589ee-20e3-4f22-bf81-167fd815f6f9´downstream_cells_map€²upstream_cells_map…§@md_str�©countries‘Ù$79ba0433-2a31-475a-87c9-14103ebbff16¡i‘Ù$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2¤Text�¨getindex�Ù$cbd9c1aa-fc37-11ea-29d9-e3361406796f„´precedence_heuristic§cell_idÙ$cbd9c1aa-fc37-11ea-29d9-e3361406796f´downstream_cells_map�¥Dates‘Ù$25c79620-14f4-45a7-b120-05ec72cb77e9²upstream_cells_map€Ù$450b4902-fc30-11ea-321d-29faf6188ff5„´precedence_heuristic	§cell_idÙ$450b4902-fc30-11ea-321d-29faf6188ff5´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$38344160-fc27-11ea-220e-95aa00e4b083„´precedence_heuristic	§cell_idÙ$38344160-fc27-11ea-220e-95aa00e4b083´downstream_cells_map‚¨csv_data�¤dataŸÙ$a054e048-4fea-487c-9d06-463723c7151cÙ$e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6Ù$68f76d3b-b398-459d-bf39-20bf300dcaa2Ù$4f423a75-43da-486f-ac2a-7220032dac9fÙ$7b2496b0-fc35-11ea-0e78-473e5e8eac44Ù$a41db8ea-f0e0-461f-a298-bdcea42a67f3Ù$7b5db0f4-fc36-11ea-09a5-49def64f4c79Ù$bb6316b7-23fb-44a3-b64a-dfb71a7df011Ù$0c098923-b016-4c65-9a37-6b7b56b13a0cÙ$c5ad4d40-fc57-11ea-23cb-e55487bc6f7aÙ$80138b30-fc4a-11ea-0e15-b54cf6b402dfÙ$4e4cca22-fc4c-11ea-12ae-2b51545799ecÙ$16981da0-fc4d-11ea-37a2-535aa014a298Ù$39982810-fc76-11ea-01c3-3987cfc2fd3cÙ$893a417c-fcea-11ea-38f4-1df639c54cbc²upstream_cells_mapƒ£CSV‘Ù$db4c1f10-7c37-4513-887a-2467ce673458¨CSV.File�©DataFrame�Ù$287f0fa8-fc44-11ea-2788-9f3ac4ee6d2b„´precedence_heuristic	§cell_idÙ$287f0fa8-fc44-11ea-2788-9f3ac4ee6d2b´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$d228e232-fc39-11ea-1569-a31b817118c4„´precedence_heuristic	§cell_idÙ$d228e232-fc39-11ea-1569-a31b817118c4´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$9626d74a-fc3d-11ea-2ab3-978dc46c0f1f„´precedence_heuristic	§cell_idÙ$9626d74a-fc3d-11ea-2ab3-978dc46c0f1f´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$3519cf96-fc26-11ea-3386-d97c61ea1b85„´precedence_heuristic	§cell_idÙ$3519cf96-fc26-11ea-3386-d97c61ea1b85´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$16a79308-fc36-11ea-16e5-e1087d7ebbda„´precedence_heuristic	§cell_idÙ$16a79308-fc36-11ea-16e5-e1087d7ebbda´downstream_cells_map�¦US_row’Ù$a41db8ea-f0e0-461f-a298-bdcea42a67f3Ù$7b5db0f4-fc36-11ea-09a5-49def64f4c79²upstream_cells_mapƒ©findfirst�­all_countries‘Ù$68f76d3b-b398-459d-bf39-20bf300dcaa2¢==�Ù$ada44a56-fc56-11ea-2ab7-fb649be7e066„´precedence_heuristic	§cell_idÙ$ada44a56-fc56-11ea-2ab7-fb649be7e066´downstream_cells_map�­shp_countries�²upstream_cells_mapƒ©Shapefile‘Ù$db4c1f10-7c37-4513-887a-2467ce673458¯Shapefile.Table�°Shapefile.shapes�Ù$64d9bcea-7c85-421d-8f1e-17ea8ee694da„´precedence_heuristic	§cell_idÙ$64d9bcea-7c85-421d-8f1e-17ea8ee694da´downstream_cells_map�£url‘Ù$c460b0c3-6d3b-439b-8cc7-1c58d6547f51²upstream_cells_map€Ù$210cee94-fc3e-11ea-1a6e-7f88270354e1„´precedence_heuristic	§cell_idÙ$210cee94-fc3e-11ea-1a6e-7f88270354e1´downstream_cells_map€²upstream_cells_map‚ªexp_period‘Ù$91f99062-fc43-11ea-1b0e-afe8aa8a1c3d¥dates‘Ù$f5c29f0d-937f-4731-8f87-0405ebc966f5Ù$539c951c-fc48-11ea-2293-457b7717ea4d„´precedence_heuristic	§cell_idÙ$539c951c-fc48-11ea-2293-457b7717ea4d´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$aaa7c012-fc1f-11ea-3c6c-89630affb1db„´precedence_heuristic	§cell_idÙ$aaa7c012-fc1f-11ea-3c6c-89630affb1db´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6„´precedence_heuristic	§cell_idÙ$e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6´downstream_cells_map€²upstream_cells_map„¤head�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083§rename!�¢=>�Ù$d3398953-afee-4989-932c-995c3ffc0c40„´precedence_heuristic	§cell_idÙ$d3398953-afee-4989-932c-995c3ffc0c40´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$0b01120c-fc3d-11ea-1381-8bab939e6214„´precedence_heuristic	§cell_idÙ$0b01120c-fc3d-11ea-1381-8bab939e6214´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$db4c1f10-7c37-4513-887a-2467ce673458„´precedence_heuristic§cell_idÙ$db4c1f10-7c37-4513-887a-2467ce673458´downstream_cells_map‡£CSV‘Ù$38344160-fc27-11ea-220e-95aa00e4b083¤JSON‘Ù$c939a87a-fcdc-11ea-29dd-c1f6dd3de88f©Shapefile‘Ù$ada44a56-fc56-11ea-2ab7-fb649be7e066£Pkg‘Ù$db4c1f10-7c37-4513-887a-2467ce673458§PlutoUI�ªDataFrames�§ZipFile‘Ù$7ec28cd0-fc87-11ea-2de5-1959ea5dc37c²upstream_cells_map‚§Pkg.add�£Pkg‘Ù$db4c1f10-7c37-4513-887a-2467ce673458Ù$be868a52-fc3b-11ea-0b60-7fea05ffe8e9„´precedence_heuristic	§cell_idÙ$be868a52-fc3b-11ea-0b60-7fea05ffe8e9´downstream_cells_map€²upstream_cells_map„«daily_cases‘Ù$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c¤plot�¥plot!�¬running_mean‘Ù$19bdf146-fc3c-11ea-3c60-bf7823c43a1dÙ$16981da0-fc4d-11ea-37a2-535aa014a298„´precedence_heuristic	§cell_idÙ$16981da0-fc4d-11ea-37a2-535aa014a298´downstream_cells_map€²upstream_cells_map�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083Ù$12900562-fc3a-11ea-25e1-f7c91a6940e5„´precedence_heuristic	§cell_idÙ$12900562-fc3a-11ea-25e1-f7c91a6940e5´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$c400ce4e-fc30-11ea-13b1-b54cf8f5630e„´precedence_heuristic	§cell_idÙ$c400ce4e-fc30-11ea-13b1-b54cf8f5630e´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$bcc95a8a-fc2e-11ea-2ccd-3bece42a08e6„´precedence_heuristic	§cell_idÙ$bcc95a8a-fc2e-11ea-2ccd-3bece42a08e6´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$19bdf146-fc3c-11ea-3c60-bf7823c43a1d„´precedence_heuristic§cell_idÙ$19bdf146-fc3c-11ea-3c60-bf7823c43a1d´downstream_cells_map‚ªStatistics�¬running_mean‘Ù$be868a52-fc3b-11ea-0b60-7fea05ffe8e9²upstream_cells_map…¦length�¡:�¡-�«daily_cases‘Ù$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c¤mean�Ù$a9c39dbe-fc4d-11ea-2e86-4992896e2abb„´precedence_heuristic	§cell_idÙ$a9c39dbe-fc4d-11ea-2e86-4992896e2abb´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$b3e1ebf8-fc56-11ea-05b8-ed0b9e50503d„´precedence_heuristic	§cell_idÙ$b3e1ebf8-fc56-11ea-05b8-ed0b9e50503d´downstream_cells_map€²upstream_cells_map€Ù$e0493940-8aa7-4733-af72-cd6bc0e37d92„´precedence_heuristic	§cell_idÙ$e0493940-8aa7-4733-af72-cd6bc0e37d92´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$99d5a138-fc30-11ea-2977-71732ca3aead„´precedence_heuristic	§cell_idÙ$99d5a138-fc30-11ea-2977-71732ca3aead´downstream_cells_map€²upstream_cells_map‚¦length�«U_countries‘Ù$9ee79840-30ff-4c92-97f4-e178caceceafÙ$85a145c6-fceb-11ea-0c94-27b3ef8270bc„´precedence_heuristic	§cell_idÙ$85a145c6-fceb-11ea-0c94-27b3ef8270bc´downstream_cells_map€²upstream_cells_mapƒ§@md_str�£day‘Ù$4ccb2718-fce2-11ea-18c4-89640faec38d¨getindex�Ù$0c098923-b016-4c65-9a37-6b7b56b13a0c„´precedence_heuristic	§cell_idÙ$0c098923-b016-4c65-9a37-6b7b56b13a0c´downstream_cells_map�¬date_strings“Ù$9e23b0e2-ac13-4d19-a3f9-4a655a1e9f14Ù$31dc4e46-4839-4f01-b383-1a1189aeb0e6Ù$f5c29f0d-937f-4731-8f87-0405ebc966f5²upstream_cells_map…¥names�¡:�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083¦String�£end�Ù$ee27bd98-fc37-11ea-163c-1365e194fc2e„´precedence_heuristic	§cell_idÙ$ee27bd98-fc37-11ea-163c-1365e194fc2e´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$f099424c-0e22-42fb-894c-d8c2a65715fb„´precedence_heuristic	§cell_idÙ$f099424c-0e22-42fb-894c-d8c2a65715fb´downstream_cells_map€²upstream_cells_map‚§US_data‘Ù$7b5db0f4-fc36-11ea-09a5-49def64f4c79§scatter�Ù$57a9bb06-fc4a-11ea-2665-7f97026981dc„´precedence_heuristic	§cell_idÙ$57a9bb06-fc4a-11ea-2665-7f97026981dc´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$bb6316b7-23fb-44a3-b64a-dfb71a7df011„´precedence_heuristic	§cell_idÙ$bb6316b7-23fb-44a3-b64a-dfb71a7df011´downstream_cells_map�¬column_names�²upstream_cells_map‚¥names�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083Ù$d911edb6-fc87-11ea-2258-d34d61c02245„´precedence_heuristic	§cell_idÙ$d911edb6-fc87-11ea-2258-d34d61c02245´downstream_cells_map€²upstream_cells_map€Ù$7b2496b0-fc35-11ea-0e78-473e5e8eac44„´precedence_heuristic	§cell_idÙ$7b2496b0-fc35-11ea-0e78-473e5e8eac44´downstream_cells_map€²upstream_cells_mapƒ¦filter�¤data‘Ù$38344160-fc27-11ea-220e-95aa00e4b083¢==�Ù$efa281da-cef9-41bc-923e-625140ce5a07„´precedence_heuristic	§cell_idÙ$efa281da-cef9-41bc-923e-625140ce5a07´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$ad43cea2-fc28-11ea-2bc3-a9d81e3766f4„´precedence_heuristic	§cell_idÙ$ad43cea2-fc28-11ea-2bc3-a9d81e3766f4´downstream_cells_map€²upstream_cells_map‚§@md_str�¨getindex�Ù$7ec28cd0-fc87-11ea-2de5-1959ea5dc37c„´precedence_heuristic	§cell_idÙ$7ec28cd0-fc87-11ea-2de5-1959ea5dc37c´downstream_cells_map‚¡r�§zipfile�²upstream_cells_mapˆ¥write�¤open�®ZipFile.Reader�¨download�§ZipFile‘Ù$db4c1f10-7c37-4513-887a-2467ce673458§println�¥close�¤read�´cell_execution_orderÜ jÙ$db4c1f10-7c37-4513-887a-2467ce673458Ù$a26b8742-6a16-445a-ae77-25a4189c0f14Ù$cbd9c1aa-fc37-11ea-29d9-e3361406796fÙ$0f87cec6-fc31-11ea-23d2-395e61f38b6fÙ$19f4da16-fc31-11ea-0de9-1dbe668b862dÙ$d3398953-afee-4989-932c-995c3ffc0c40Ù$efa281da-cef9-41bc-923e-625140ce5a07Ù$e0493940-8aa7-4733-af72-cd6bc0e37d92Ù$64d9bcea-7c85-421d-8f1e-17ea8ee694daÙ$c460b0c3-6d3b-439b-8cc7-1c58d6547f51Ù$a7369222-fc20-11ea-314d-4d6b0f0f72ebÙ$1620aa9d-7dcd-4686-b7e4-a72cebe315edÙ$38344160-fc27-11ea-220e-95aa00e4b083Ù$ad43cea2-fc28-11ea-2bc3-a9d81e3766f4Ù$fab64d86-fc28-11ea-0ae1-3ba1b9a14759Ù$3519cf96-fc26-11ea-3386-d97c61ea1b85Ù$a054e048-4fea-487c-9d06-463723c7151cÙ$e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6Ù$aaa7c012-fc1f-11ea-3c6c-89630affb1dbÙ$b0eb3918-fc1f-11ea-238b-7f5d23e424bbÙ$68f76d3b-b398-459d-bf39-20bf300dcaa2Ù$34440afc-fc2e-11ea-0484-5b47af235badÙ$79ba0433-2a31-475a-87c9-14103ebbff16Ù$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2Ù$a39589ee-20e3-4f22-bf81-167fd815f6f9Ù$9484ea9e-fc2e-11ea-137c-6da8212da5bdÙ$bcc95a8a-fc2e-11ea-2ccd-3bece42a08e6Ù$ada3ceb4-fc2e-11ea-2cbf-399430fa18b5Ù$1633abe8-fc2f-11ea-2c7e-21b3348a3569Ù$ed383524-e0c0-4da2-9a98-ca75aadd2c9eÙ$9ee79840-30ff-4c92-97f4-e178caceceafÙ$99d5a138-fc30-11ea-2977-71732ca3aeadÙ$450b4902-fc30-11ea-321d-29faf6188ff5Ù$4f423a75-43da-486f-ac2a-7220032dac9fÙ$a8b2db96-fc30-11ea-2eea-b938a3a430fbÙ$c400ce4e-fc30-11ea-13b1-b54cf8f5630eÙ$7b2496b0-fc35-11ea-0e78-473e5e8eac44Ù$8990f13a-fc35-11ea-338f-0955eeb23c3cÙ$a772eadc-fc35-11ea-3d38-4b121f88f1d7Ù$16a79308-fc36-11ea-16e5-e1087d7ebbdaÙ$a41db8ea-f0e0-461f-a298-bdcea42a67f3Ù$67eebb7e-fc36-11ea-03ef-bd6966487bb5Ù$7b5db0f4-fc36-11ea-09a5-49def64f4c79Ù$f099424c-0e22-42fb-894c-d8c2a65715fbÙ$7e7d14a2-fc37-11ea-3f1a-870ca98c4b75Ù$75d2dc66-fc47-11ea-0e35-05f9cf38e901Ù$b3880f40-fc36-11ea-074a-edc51adeb6f0Ù$6de0800c-fc37-11ea-0d94-2b6f8f66964dÙ$bb6316b7-23fb-44a3-b64a-dfb71a7df011Ù$0c098923-b016-4c65-9a37-6b7b56b13a0cÙ$546a40eb-7897-485d-a1b5-c4dfae0a4861Ù$9e23b0e2-ac13-4d19-a3f9-4a655a1e9f14Ù$25c79620-14f4-45a7-b120-05ec72cb77e9Ù$31dc4e46-4839-4f01-b383-1a1189aeb0e6Ù$ee27bd98-fc37-11ea-163c-1365e194fc2eÙ$f5c29f0d-937f-4731-8f87-0405ebc966f5Ù$36c37b4d-eb23-4deb-a593-e511eccd9204Ù$511eb51e-fc38-11ea-0492-19532da809deÙ$d228e232-fc39-11ea-1569-a31b817118c4Ù$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4cÙ$19bdf146-fc3c-11ea-3c60-bf7823c43a1dÙ$12900562-fc3a-11ea-25e1-f7c91a6940e5Ù$be868a52-fc3b-11ea-0b60-7fea05ffe8e9Ù$0b01120c-fc3d-11ea-1381-8bab939e6214Ù$252eff18-fc3d-11ea-0c18-7b130ada882eÙ$9626d74a-fc3d-11ea-2ab3-978dc46c0f1fÙ$4358c348-91aa-4c76-a443-0a9cefce0e83Ù$687409a2-fc43-11ea-03e0-d9a7a48165a8Ù$4f23c8fc-fc43-11ea-0e73-e5f89d14155cÙ$91f99062-fc43-11ea-1b0e-afe8aa8a1c3dÙ$07282688-fc3e-11ea-2f9e-5b0581061e65Ù$210cee94-fc3e-11ea-1a6e-7f88270354e1Ù$2f254a9e-fc3e-11ea-2c02-75ed59f41903Ù$539c951c-fc48-11ea-2293-457b7717ea4dÙ$287f0fa8-fc44-11ea-2788-9f3ac4ee6d2bÙ$3edd2a22-fc4a-11ea-07e5-55ca6d7639e8Ù$c5ad4d40-fc57-11ea-23cb-e55487bc6f7aÙ$57a9bb06-fc4a-11ea-2665-7f97026981dcÙ$80138b30-fc4a-11ea-0e15-b54cf6b402dfÙ$8709f208-fc4a-11ea-0203-e13eae5f0d93Ù$a29c8ad0-fc4a-11ea-14c7-71435769b73eÙ$4e4cca22-fc4c-11ea-12ae-2b51545799ecÙ$16981da0-fc4d-11ea-37a2-535aa014a298Ù$a9c39dbe-fc4d-11ea-2e86-4992896e2abbÙ$b93b88b0-fc4d-11ea-0c45-8f64983f8b5cÙ$7ec28cd0-fc87-11ea-2de5-1959ea5dc37cÙ$dc2cfa82-fc86-11ea-1311-bb6e69350d43Ù$ada44a56-fc56-11ea-2ab7-fb649be7e066Ù$d911edb6-fc87-11ea-2258-d34d61c02245Ù$b3e1ebf8-fc56-11ea-05b8-ed0b9e50503dÙ$f8e754ee-fc73-11ea-0c7f-cdc760ab3e94Ù$39982810-fc76-11ea-01c3-3987cfc2fd3cÙ$0f329ece-fc74-11ea-1e02-bdbddf551ef3Ù$4ccb2718-fce2-11ea-18c4-89640faec38dÙ$b406eec8-fc77-11ea-1a98-d36d6d3e2393Ù$1f30a1ac-fc74-11ea-2abf-abf437006babÙ$24934438-fc74-11ea-12e4-7f7e50f54029Ù$c2da1f88-fcdb-11ea-0b18-bf801c373a73Ù$ae9149f4-fcdc-11ea-30a3-031d38f38b23Ù$85a145c6-fceb-11ea-0c94-27b3ef8270bcÙ$861a2c3a-fc88-11ea-2d95-fb076e751203Ù$1a59b12e-fceb-11ea-0634-1b4daee1bc62Ù$b4264196-fcdc-11ea-2197-512f8363a4d3Ù$c939a87a-fcdc-11ea-29dd-c1f6dd3de88fÙ$893a417c-fcea-11ea-38f4-1df639c54cbcÙ$251c06e4-fc77-11ea-1a0f-73139ba11e83´last_hot_reload_timeË        ©shortpath¨covid.jl®process_status¥ready¤pathÙ>/home/runner/work/disorganised-mess/disorganised-mess/covid.jl­pluto_version¨v0.19.47®last_save_timeËAÚÜøàªcell_orderÜ jÙ$0f87cec6-fc31-11ea-23d2-395e61f38b6fÙ$19f4da16-fc31-11ea-0de9-1dbe668b862dÙ$d3398953-afee-4989-932c-995c3ffc0c40Ù$efa281da-cef9-41bc-923e-625140ce5a07Ù$e0493940-8aa7-4733-af72-cd6bc0e37d92Ù$64d9bcea-7c85-421d-8f1e-17ea8ee694daÙ$c460b0c3-6d3b-439b-8cc7-1c58d6547f51Ù$a7369222-fc20-11ea-314d-4d6b0f0f72ebÙ$db4c1f10-7c37-4513-887a-2467ce673458Ù$1620aa9d-7dcd-4686-b7e4-a72cebe315edÙ$38344160-fc27-11ea-220e-95aa00e4b083Ù$ad43cea2-fc28-11ea-2bc3-a9d81e3766f4Ù$fab64d86-fc28-11ea-0ae1-3ba1b9a14759Ù$3519cf96-fc26-11ea-3386-d97c61ea1b85Ù$a054e048-4fea-487c-9d06-463723c7151cÙ$e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6Ù$aaa7c012-fc1f-11ea-3c6c-89630affb1dbÙ$b0eb3918-fc1f-11ea-238b-7f5d23e424bbÙ$68f76d3b-b398-459d-bf39-20bf300dcaa2Ù$34440afc-fc2e-11ea-0484-5b47af235badÙ$79ba0433-2a31-475a-87c9-14103ebbff16Ù$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2Ù$a39589ee-20e3-4f22-bf81-167fd815f6f9Ù$9484ea9e-fc2e-11ea-137c-6da8212da5bdÙ$bcc95a8a-fc2e-11ea-2ccd-3bece42a08e6Ù$ada3ceb4-fc2e-11ea-2cbf-399430fa18b5Ù$1633abe8-fc2f-11ea-2c7e-21b3348a3569Ù$ed383524-e0c0-4da2-9a98-ca75aadd2c9eÙ$9ee79840-30ff-4c92-97f4-e178caceceafÙ$99d5a138-fc30-11ea-2977-71732ca3aeadÙ$450b4902-fc30-11ea-321d-29faf6188ff5Ù$4f423a75-43da-486f-ac2a-7220032dac9fÙ$a8b2db96-fc30-11ea-2eea-b938a3a430fbÙ$c400ce4e-fc30-11ea-13b1-b54cf8f5630eÙ$7b2496b0-fc35-11ea-0e78-473e5e8eac44Ù$8990f13a-fc35-11ea-338f-0955eeb23c3cÙ$a772eadc-fc35-11ea-3d38-4b121f88f1d7Ù$16a79308-fc36-11ea-16e5-e1087d7ebbdaÙ$a41db8ea-f0e0-461f-a298-bdcea42a67f3Ù$67eebb7e-fc36-11ea-03ef-bd6966487bb5Ù$7b5db0f4-fc36-11ea-09a5-49def64f4c79Ù$a26b8742-6a16-445a-ae77-25a4189c0f14Ù$f099424c-0e22-42fb-894c-d8c2a65715fbÙ$7e7d14a2-fc37-11ea-3f1a-870ca98c4b75Ù$75d2dc66-fc47-11ea-0e35-05f9cf38e901Ù$b3880f40-fc36-11ea-074a-edc51adeb6f0Ù$6de0800c-fc37-11ea-0d94-2b6f8f66964dÙ$bb6316b7-23fb-44a3-b64a-dfb71a7df011Ù$0c098923-b016-4c65-9a37-6b7b56b13a0cÙ$546a40eb-7897-485d-a1b5-c4dfae0a4861Ù$cbd9c1aa-fc37-11ea-29d9-e3361406796fÙ$9e23b0e2-ac13-4d19-a3f9-4a655a1e9f14Ù$25c79620-14f4-45a7-b120-05ec72cb77e9Ù$31dc4e46-4839-4f01-b383-1a1189aeb0e6Ù$ee27bd98-fc37-11ea-163c-1365e194fc2eÙ$f5c29f0d-937f-4731-8f87-0405ebc966f5Ù$36c37b4d-eb23-4deb-a593-e511eccd9204Ù$511eb51e-fc38-11ea-0492-19532da809deÙ$d228e232-fc39-11ea-1569-a31b817118c4Ù$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4cÙ$12900562-fc3a-11ea-25e1-f7c91a6940e5Ù$19bdf146-fc3c-11ea-3c60-bf7823c43a1dÙ$be868a52-fc3b-11ea-0b60-7fea05ffe8e9Ù$0b01120c-fc3d-11ea-1381-8bab939e6214Ù$252eff18-fc3d-11ea-0c18-7b130ada882eÙ$9626d74a-fc3d-11ea-2ab3-978dc46c0f1fÙ$4358c348-91aa-4c76-a443-0a9cefce0e83Ù$687409a2-fc43-11ea-03e0-d9a7a48165a8Ù$4f23c8fc-fc43-11ea-0e73-e5f89d14155cÙ$07282688-fc3e-11ea-2f9e-5b0581061e65Ù$91f99062-fc43-11ea-1b0e-afe8aa8a1c3dÙ$210cee94-fc3e-11ea-1a6e-7f88270354e1Ù$2f254a9e-fc3e-11ea-2c02-75ed59f41903Ù$539c951c-fc48-11ea-2293-457b7717ea4dÙ$287f0fa8-fc44-11ea-2788-9f3ac4ee6d2bÙ$3edd2a22-fc4a-11ea-07e5-55ca6d7639e8Ù$c5ad4d40-fc57-11ea-23cb-e55487bc6f7aÙ$57a9bb06-fc4a-11ea-2665-7f97026981dcÙ$80138b30-fc4a-11ea-0e15-b54cf6b402dfÙ$8709f208-fc4a-11ea-0203-e13eae5f0d93Ù$a29c8ad0-fc4a-11ea-14c7-71435769b73eÙ$4e4cca22-fc4c-11ea-12ae-2b51545799ecÙ$16981da0-fc4d-11ea-37a2-535aa014a298Ù$a9c39dbe-fc4d-11ea-2e86-4992896e2abbÙ$b93b88b0-fc4d-11ea-0c45-8f64983f8b5cÙ$7ec28cd0-fc87-11ea-2de5-1959ea5dc37cÙ$dc2cfa82-fc86-11ea-1311-bb6e69350d43Ù$ada44a56-fc56-11ea-2ab7-fb649be7e066Ù$d911edb6-fc87-11ea-2258-d34d61c02245Ù$b3e1ebf8-fc56-11ea-05b8-ed0b9e50503dÙ$f8e754ee-fc73-11ea-0c7f-cdc760ab3e94Ù$39982810-fc76-11ea-01c3-3987cfc2fd3cÙ$0f329ece-fc74-11ea-1e02-bdbddf551ef3Ù$4ccb2718-fce2-11ea-18c4-89640faec38dÙ$b406eec8-fc77-11ea-1a98-d36d6d3e2393Ù$1f30a1ac-fc74-11ea-2abf-abf437006babÙ$24934438-fc74-11ea-12e4-7f7e50f54029Ù$c2da1f88-fcdb-11ea-0b18-bf801c373a73Ù$ae9149f4-fcdc-11ea-30a3-031d38f38b23Ù$85a145c6-fceb-11ea-0c94-27b3ef8270bcÙ$861a2c3a-fc88-11ea-2d95-fb076e751203Ù$893a417c-fcea-11ea-38f4-1df639c54cbcÙ$1a59b12e-fceb-11ea-0634-1b4daee1bc62Ù$c939a87a-fcdc-11ea-29dd-c1f6dd3de88fÙ$b4264196-fcdc-11ea-2197-512f8363a4d3Ù$251c06e4-fc77-11ea-1a0f-73139ba11e83±published_objects€¥nbpkgŠ¯install_time_nsÀ¬instantiatedÃ²installed_versions€°terminal_outputs€§enabledÂ·restart_recommended_msgÀ´restart_required_msgÀ­busy_packages�¶waiting_for_permissionÂÙ,waiting_for_permission_but_probably_disabledÂ«cell_inputsÞ jÙ$251c06e4-fc77-11ea-1a0f-73139ba11e83„§cell_idÙ$251c06e4-fc77-11ea-1a0f-73139ba11e83¤codeÚamd"However, we should always be wary about visualisations such as these. Perhaps we should be plotting cases per capita instead of absolute numbers of cases. Or should we divide by the area of the country? Some countries, such as China and Canada, are divided into states or regions in the original data set -- but others, such as the US, are not. You should always check exactly what is being plotted! 

Unfortunately, published visualisations often hide some of  this information. This emphasises the need to be able to get our hands on the data, create our own visualisations and draw our own conclusions."¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$68f76d3b-b398-459d-bf39-20bf300dcaa2„§cell_idÙ$68f76d3b-b398-459d-bf39-20bf300dcaa2¤codeÙ"all_countries = data[:, "country"]¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$8990f13a-fc35-11ea-338f-0955eeb23c3c„§cell_idÙ$8990f13a-fc35-11ea-338f-0955eeb23c3c¤codeÙµmd"Here we have used an **anonymous function** with the syntax `x -> â‹¯`. This is a function which takes the argument `x` and returns whatever is on the right of the arrow (`->`)."¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$b3880f40-fc36-11ea-074a-edc51adeb6f0„§cell_idÙ$b3880f40-fc36-11ea-074a-edc51adeb6f0¤code²md"## Using dates"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$25c79620-14f4-45a7-b120-05ec72cb77e9„§cell_idÙ$25c79620-14f4-45a7-b120-05ec72cb77e9¤codeÙ'date_format = Dates.DateFormat("m/d/Y")¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$0f87cec6-fc31-11ea-23d2-395e61f38b6f„§cell_idÙ$0f87cec6-fc31-11ea-23d2-395e61f38b6f¤codeÙ$md"# Module 2: Epidemic propagation"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$893a417c-fcea-11ea-38f4-1df639c54cbc„§cell_idÙ$893a417c-fcea-11ea-38f4-1df639c54cbc¤code¿set_points(data, daily[:, day])¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$252eff18-fc3d-11ea-0c18-7b130ada882e„§cell_idÙ$252eff18-fc3d-11ea-0c18-7b130ada882e¤codeÚ±md"A visual check for this is to plot the data with a **logarithmic scale** on the $y$ axis (but a standard scale on the $x$ axis).

The reason for this is that if we observe a straight line on such a semi-logarithmic plot, we have

$$\log(y) \sim ax + b,$$

where we are using $\sim$ to denote approximate equality.

Hence, taking exponentials of both sides, we have

$$y \sim \exp(ax + b) = c \, e^{ax},$$

for some constant $c$.
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$c939a87a-fcdc-11ea-29dd-c1f6dd3de88f„§cell_idÙ$c939a87a-fcdc-11ea-29dd-c1f6dd3de88f¤codeÙûfunction set_points(data, fotoday)
	jsondata = sprint(io->JSON.print(io, make_features(data, fotoday)));
	HTML("""
			<script>
			var elem = document.getElementById("map");
			elem.mapbox.getSource('points').setData($jsondata)
			</script>
			""")
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$a41db8ea-f0e0-461f-a298-bdcea42a67f3„§cell_idÙ$a41db8ea-f0e0-461f-a298-bdcea42a67f3¤code¯data[US_row, :]¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$a29c8ad0-fc4a-11ea-14c7-71435769b73e„§cell_idÙ$a29c8ad0-fc4a-11ea-14c7-71435769b73e¤codeÙWbegin
	indices = ismissing.(province)
	province[indices] .= all_countries[indices]
end;¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$4e4cca22-fc4c-11ea-12ae-2b51545799ec„§cell_idÙ$4e4cca22-fc4c-11ea-12ae-2b51545799ec¤codeÙÿbegin 
	
	scatter(data.longitude, data.latitude, leg=false, alpha=0.5, ms=2)

	for i in 1:length(province)	
		annotate!(data.longitude[i], data.latitude[i], text(province[i], :center, 5, color=RGBA{Float64}(0.0,0.0,0.0,0.3)))
	end
	
	plot!(axis=false)
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$f8e754ee-fc73-11ea-0c7f-cdc760ab3e94„§cell_idÙ$f8e754ee-fc73-11ea-0c7f-cdc760ab3e94¤codeÙsmd"Now we would like to combine the geographical and temporal (time) aspects. One way to do so is to animate time:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$c2da1f88-fcdb-11ea-0b18-bf801c373a73„§cell_idÙ$c2da1f88-fcdb-11ea-0b18-bf801c373a73¤codeÙEResource("https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.css")¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$687409a2-fc43-11ea-03e0-d9a7a48165a8„§cell_idÙ$687409a2-fc43-11ea-03e0-d9a7a48165a8¤codeÙOmd"Let's zoom on the part where the growth seems linear on this semi-log plot:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$b4264196-fcdc-11ea-2197-512f8363a4d3„§cell_idÙ$b4264196-fcdc-11ea-2197-512f8363a4d3¤codeÚCfunction make_features(data, fotoday)
	point(long, lat, n) =
		Dict("type"=>"Feature",
			"properties"=>Dict("size" => 2 * log10(n)),
			"geometry"=>Dict(
				"type" => "Point",
				"coordinates" => [long, lat]))
	Dict("type" => "FeatureCollection",
		"features" => map(point, data.longitude, data.latitude, fotoday))


end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$a8b2db96-fc30-11ea-2eea-b938a3a430fb„§cell_idÙ$a8b2db96-fc30-11ea-2eea-b938a3a430fb¤codeÙsmd"""We see that the correct spelling is `"US"`. (And note how the different provinces of the UK are separated.)"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$67eebb7e-fc36-11ea-03ef-bd6966487bb5„§cell_idÙ$67eebb7e-fc36-11ea-03ef-bd6966487bb5¤codeÙ?md"Now we can extract the data into a standard Julia `Vector`:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$511eb51e-fc38-11ea-0492-19532da809de„§cell_idÙ$511eb51e-fc38-11ea-0492-19532da809de¤codeÙ md"## Exploratory data analysis"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$9ee79840-30ff-4c92-97f4-e178caceceaf„§cell_idÙ$9ee79840-30ff-4c92-97f4-e178caceceaf¤codeÙEU_countries = [startswith(country, "U") for country in all_countries]¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2„§cell_idÙ$5c1ec9ae-fc2e-11ea-397d-937c7ab1edb2¤codeÙ4@bind i Slider(1:length(countries), show_value=true)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$80138b30-fc4a-11ea-0e15-b54cf6b402df„§cell_idÙ$80138b30-fc4a-11ea-0e15-b54cf6b402df¤code¹province = data.province;¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$546a40eb-7897-485d-a1b5-c4dfae0a4861„§cell_idÙ$546a40eb-7897-485d-a1b5-c4dfae0a4861¤codeÙ­md"""
Now we need to **parse** the date strings, i.e. convert from a string representation into an actual Julia type provided by the `Dates.jl` standard library package:
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$7b5db0f4-fc36-11ea-09a5-49def64f4c79„§cell_idÙ$7b5db0f4-fc36-11ea-09a5-49def64f4c79¤codeÙ%US_data = Vector(data[US_row, 5:end])¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$7e7d14a2-fc37-11ea-3f1a-870ca98c4b75„§cell_idÙ$7e7d14a2-fc37-11ea-3f1a-870ca98c4b75¤codeÚEmd"Note that we are only passing a single vector to the `scatter` function, so the $x$ coordinates are taken as the natural numbers $1$, $2$, etc.

Also note that the $y$-axis in this plot gives the *cumulative* case numbers, i.e. the *total* number of confirmed cases since the start of the epidemic up to the given date. 
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$79ba0433-2a31-475a-87c9-14103ebbff16„§cell_idÙ$79ba0433-2a31-475a-87c9-14103ebbff16¤codeÙ!countries = unique(all_countries)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$dc2cfa82-fc86-11ea-1311-bb6e69350d43„§cell_idÙ$dc2cfa82-fc86-11ea-1311-bb6e69350d43¤codeÙcdownload("https://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-admin-0-countries")¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$39982810-fc76-11ea-01c3-3987cfc2fd3c„§cell_idÙ$39982810-fc76-11ea-01c3-3987cfc2fd3c¤codeÙ5daily = max.(1, diff(Array(data[:, 5:end]), dims=2));¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$19f4da16-fc31-11ea-0de9-1dbe668b862d„§cell_idÙ$19f4da16-fc31-11ea-0de9-1dbe668b862d¤codeÙ«md"We are starting a new module on modelling epidemic propagation.

Let's start off by analysing some of the data that is now available on the current COVID-19 pandemic.
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$1f30a1ac-fc74-11ea-2abf-abf437006bab„§cell_idÙ$1f30a1ac-fc74-11ea-2abf-abf437006bab¤codeªdates[day]¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$1633abe8-fc2f-11ea-2c7e-21b3348a3569„§cell_idÙ$1633abe8-fc2f-11ea-2c7e-21b3348a3569¤codeÚtmd"""How can we extract the data for a particular country? First we need to know the exact name of the country. E.g. is the US written as "USA", or "United States"?

We could scroll through to find out, or **filter** the data to only look at a sample of it, for example those countries that begin with the letter "U".

One way to do this is with an array comprehension:"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$a054e048-4fea-487c-9d06-463723c7151c„§cell_idÙ$a054e048-4fea-487c-9d06-463723c7151c¤codeÙubegin
	data_2 = rename(data, 1 => "province", 2 => "country", 3 => "latitude", 4 => "longitude")   
	head(data_2)
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c„§cell_idÙ$dbaacbb6-fc3b-11ea-0a42-a9792e8a6c4c¤codeÙ¦begin
	daily_cases = diff(US_data)
	plot(dates[2:end], daily_cases, m=:o, leg=false, xlabel="days", ylabel="daily US cases", alpha=0.5)   # use "o"-shaped markers
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$8709f208-fc4a-11ea-0203-e13eae5f0d93„§cell_idÙ$8709f208-fc4a-11ea-0203-e13eae5f0d93¤codeÙHmd"If the `province` is missing we should use the country name instead:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$07282688-fc3e-11ea-2f9e-5b0581061e65„§cell_idÙ$07282688-fc3e-11ea-2f9e-5b0581061e65¤codeÙÓmd"We see that there is a period lasting from around day $(first(exp_period)) to around day $(last(exp_period)) when the curve looks straight on the semi-log plot. 
This corresponds to the following date range:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$3edd2a22-fc4a-11ea-07e5-55ca6d7639e8„§cell_idÙ$3edd2a22-fc4a-11ea-07e5-55ca6d7639e8¤codeÙÌmd"Our data set contains more information: the geographical locations (latitude and longitude) of each country (or, rather, of a particular point that was chosen as being representative of that country)."¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$0f329ece-fc74-11ea-1e02-bdbddf551ef3„§cell_idÙ$0f329ece-fc74-11ea-1e02-bdbddf551ef3¤codeº@bind day_ticks Clock(0.5)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$2f254a9e-fc3e-11ea-2c02-75ed59f41903„§cell_idÙ$2f254a9e-fc3e-11ea-2c02-75ed59f41903¤codeÙ»md"i.e. the first 3 weeks of March. Fortunately the imposition of lockdown during the last 10 days of March (on different days in different US states) significantly reduced transmission."¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$31dc4e46-4839-4f01-b383-1a1189aeb0e6„§cell_idÙ$31dc4e46-4839-4f01-b383-1a1189aeb0e6¤codeÙ)parse(Date, date_strings[1], date_format)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$f5c29f0d-937f-4731-8f87-0405ebc966f5„§cell_idÙ$f5c29f0d-937f-4731-8f87-0405ebc966f5¤codeÙ=dates = parse.(Date, date_strings, date_format) .+ Year(2000)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$4f423a75-43da-486f-ac2a-7220032dac9f„§cell_idÙ$4f423a75-43da-486f-ac2a-7220032dac9f¤code´data[U_countries, :]¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$6de0800c-fc37-11ea-0d94-2b6f8f66964d„§cell_idÙ$6de0800c-fc37-11ea-0d94-2b6f8f66964d¤codeÙ«md"We would like to use actual dates instead of just the number of days since the start of the recorded data. The dates are given in the column names of the `DataFrame`:
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$24934438-fc74-11ea-12e4-7f7e50f54029„§cell_idÙ$24934438-fc74-11ea-12e4-7f7e50f54029¤codeÙÙ#=
begin 
	plot(shp_countries, alpha=0.2)
	scatter!(data.longitude, data.latitude, leg=false, ms=2*log10.(daily[:, day]), alpha=0.7)
	xlabel!("latitude")
	ylabel!("longitude")
	title!("daily cases per country")
end
=#¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$4358c348-91aa-4c76-a443-0a9cefce0e83„§cell_idÙ$4358c348-91aa-4c76-a443-0a9cefce0e83¤codeÙ°begin
	plot(replace(daily_cases, 0 => NaN), 
		yscale=:log10, 
		leg=false, m=:o)
	
	xlabel!("day")
	ylabel!("confirmed cases in US")
	title!("US confirmed COVID-19 cases")
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$9484ea9e-fc2e-11ea-137c-6da8212da5bd„§cell_idÙ$9484ea9e-fc2e-11ea-137c-6da8212da5bd¤codeÙ\md"[Here we used **string interpolation** with `$` to put the text into a Markdown string.]"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$4ccb2718-fce2-11ea-18c4-89640faec38d„§cell_idÙ$4ccb2718-fce2-11ea-18c4-89640faec38d¤codeÙ$day = min(day_ticks, size(daily, 2))¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$75d2dc66-fc47-11ea-0e35-05f9cf38e901„§cell_idÙ$75d2dc66-fc47-11ea-0e35-05f9cf38e901¤codeÙ[md"This is an example of a **time series**, i.e. a single quantity that changes over time."¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$b406eec8-fc77-11ea-1a98-d36d6d3e2393„§cell_idÙ$b406eec8-fc77-11ea-1a98-d36d6d3e2393¤code½log10(maximum(daily[:, day]))¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$861a2c3a-fc88-11ea-2d95-fb076e751203„§cell_idÙ$861a2c3a-fc88-11ea-2d95-fb076e751203¤codeÚëhtml"""
<div id="map" style="height: 500px"></div>
<script>
	mapboxgl.accessToken = 'pk.eyJ1Ijoic2hhc2hpNTMiLCJhIjoiY2ppMG5vZmpuMWEyNjNwb2I5dWhveTkyZCJ9.dQ67jXuhU3DGz7QFR35alw';
var map = new mapboxgl.Map({
	container: 'map',
	style: 'mapbox://styles/mapbox/light-v10',
	zoom: 1,
	center: [0, 0]
});

var elem = document.getElementById("map");

elem.mapbox = map;

map.on('load', function () {

	// Add a GeoJSON source with 2 points
	map.addSource('points', {
		'type': 'geojson',
		'data': {
			'type': 'FeatureCollection',
			'features': [
				{
					'type': 'Feature',
					'geometry': {
						'type': 'Point',
						'coordinates': [
							-77.03238901390978,
							38.913188059745586
						]
					}
				},
				{
					'type': 'Feature',
					'geometry': {
						'type': 'Point',
						'coordinates': [-122.414, 37.776]
					}
				}
			]
		}
	});
	map.addLayer({
	'id': 'points',
	'type': 'circle',
	'source': 'points',
	'paint': {
		'circle-color': {
              "property": "size",
              "stops": [
                [0, "#fff5f0"],
                [1, "#fee0d2"],
                [2, "#fcbba1"],
                [3, "#fc9272"],
                [4, "#fb6a4a"],
                [7, "#ef3b2c"],
                [8, "#cb181d"],
                [9, "#a50f15"],
                [10, "#67000d"]
              ]
            },
		// make circles larger as the user zooms from z12 to z22
		'circle-radius': [
				'interpolate',
				['linear'], ["zoom"],
				0, ['get', 'size']
			]
    }
});
});
</script>
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$c5ad4d40-fc57-11ea-23cb-e55487bc6f7a„§cell_idÙ$c5ad4d40-fc57-11ea-23cb-e55487bc6f7a¤codeÙ-filter(x -> startswith(x.country, "A"), data)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$b0eb3918-fc1f-11ea-238b-7f5d23e424bb„§cell_idÙ$b0eb3918-fc1f-11ea-238b-7f5d23e424bb¤codeÙæmd"How can we extract the list of all the countries? The country names are in the second column.

For some purposes we can think of a `DataFrame`.as a matrix and use similar syntax. For example, we can extract the second column:
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$36c37b4d-eb23-4deb-a593-e511eccd9204„§cell_idÙ$36c37b4d-eb23-4deb-a593-e511eccd9204¤codeÙÎbegin
	plot(dates, US_data, xrotation=45, leg=:topleft, 
	    label="US data", m=:o, ms=3, alpha=0.5)
	
	xlabel!("date")
	ylabel!("cumulative US cases")
	title!("US cumulative confirmed COVID-19 cases")
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$a7369222-fc20-11ea-314d-4d6b0f0f72eb„§cell_idÙ$a7369222-fc20-11ea-314d-4d6b0f0f72eb¤codeÚRmd"We will need a couple of new packages. The data is in CSV format, i.e. *C*omma-*S*eparated *V*alues. This is a common data format in which observations, i.e. data points, are separated on different lines. Within each line the different data for that observation are separated by commas or other punctuation (possibly spaces and tabs)."¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$fab64d86-fc28-11ea-0ae1-3ba1b9a14759„§cell_idÙ$fab64d86-fc28-11ea-0ae1-3ba1b9a14759¤codeµmd"## Using the data"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$9e23b0e2-ac13-4d19-a3f9-4a655a1e9f14„§cell_idÙ$9e23b0e2-ac13-4d19-a3f9-4a655a1e9f14¤code¯date_strings[1]¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$1620aa9d-7dcd-4686-b7e4-a72cebe315ed„§cell_idÙ$1620aa9d-7dcd-4686-b7e4-a72cebe315ed¤codeÙ„md"""
We can load the data from a CSV using the `File` function from the `CSV.jl` package, and then convert it to a `DataFrame`:
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$ada3ceb4-fc2e-11ea-2cbf-399430fa18b5„§cell_idÙ$ada3ceb4-fc2e-11ea-2cbf-399430fa18b5¤code¿@bind country Select(countries)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$34440afc-fc2e-11ea-0484-5b47af235bad„§cell_idÙ$34440afc-fc2e-11ea-0484-5b47af235bad¤codeÙ£md"It turns out that some countries are divided into provinces, so there are repetitions in the `country` column that we can eliminate with the `unique` function:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$a26b8742-6a16-445a-ae77-25a4189c0f14„§cell_idÙ$a26b8742-6a16-445a-ae77-25a4189c0f14¤code«using Plots¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$ed383524-e0c0-4da2-9a98-ca75aadd2c9e„§cell_idÙ$ed383524-e0c0-4da2-9a98-ca75aadd2c9e¤code¾md"""
Array comprehension:
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$b93b88b0-fc4d-11ea-0c45-8f64983f8b5c„§cell_idÙ$b93b88b0-fc4d-11ea-0c45-8f64983f8b5c¤codeÚmd"We would also like to see the outlines of each country. For this we can use, for example, the data from [Natural Earth](https://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-admin-0-countries), which comes in the form of **shape files**, giving the outlines in terms of latitude and longitude coordinates. 

These may be read in using the `Shapefile.jl` package.
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$c460b0c3-6d3b-439b-8cc7-1c58d6547f51„§cell_idÙ$c460b0c3-6d3b-439b-8cc7-1c58d6547f51¤code¿download(url, "covid_data.csv")¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$1a59b12e-fceb-11ea-0634-1b4daee1bc62„§cell_idÙ$1a59b12e-fceb-11ea-0634-1b4daee1bc62¤codeµlog10.(daily[:, day])¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$91f99062-fc43-11ea-1b0e-afe8aa8a1c3d„§cell_idÙ$91f99062-fc43-11ea-1b0e-afe8aa8a1c3d¤code²exp_period = 38:60¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$ae9149f4-fcdc-11ea-30a3-031d38f38b23„§cell_idÙ$ae9149f4-fcdc-11ea-30a3-031d38f38b23¤codeÙDResource("https://api.mapbox.com/mapbox-gl-js/v1.12.0/mapbox-gl.js")¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$a772eadc-fc35-11ea-3d38-4b121f88f1d7„§cell_idÙ$a772eadc-fc35-11ea-3d38-4b121f88f1d7¤codeÙ¿md"To extract a single row we need the **index** of the row (i.e. which number row it is in the `DataFrame`). The `findfirst` function finds the first row that satisfies the given predicate:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$4f23c8fc-fc43-11ea-0e73-e5f89d14155c„§cell_idÙ$4f23c8fc-fc43-11ea-0e73-e5f89d14155c¤codeÙÂbegin
	plot(replace(daily_cases, 0 => NaN), 
		yscale=:log10, 
		leg=false, m=:o,
		xlims=(1, 100))
	
	xlabel!("day")
	ylabel!("confirmed cases in US")
	title!("US confirmed COVID-19 cases")
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$a39589ee-20e3-4f22-bf81-167fd815f6f9„§cell_idÙ$a39589ee-20e3-4f22-bf81-167fd815f6f9¤code¹md"$(Text(countries[i]))"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$cbd9c1aa-fc37-11ea-29d9-e3361406796f„§cell_idÙ$cbd9c1aa-fc37-11ea-29d9-e3361406796f¤code«using Dates¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$450b4902-fc30-11ea-321d-29faf6188ff5„§cell_idÙ$450b4902-fc30-11ea-321d-29faf6188ff5¤codeÙ”md"Note that this returns an array of booleans of the same length as the vector `all_countries`. We can now use this to index into the `DataFrame`:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$38344160-fc27-11ea-220e-95aa00e4b083„§cell_idÙ$38344160-fc27-11ea-220e-95aa00e4b083¤codeÙ€begin
	csv_data = CSV.File("covid_data.csv");   
	data = DataFrame(csv_data)   # it is common to use `df` as a variable name
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$287f0fa8-fc44-11ea-2788-9f3ac4ee6d2b„§cell_idÙ$287f0fa8-fc44-11ea-2788-9f3ac4ee6d2b¤code¸md"## Geographical data"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$d228e232-fc39-11ea-1569-a31b817118c4„§cell_idÙ$d228e232-fc39-11ea-1569-a31b817118c4¤codeÙÍmd"
Working with *cumulative* data is often less intuitive. Let's look at the actual number of daily cases. Julia has a `diff` function to calculate the difference between successive entries of a vector:
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$9626d74a-fc3d-11ea-2ab3-978dc46c0f1f„§cell_idÙ$9626d74a-fc3d-11ea-2ab3-978dc46c0f1f¤codeÙœmd"""Since the data contains some zeros, we need to replace those with `NaN`s ("Not a Number"), which `Plots.jl` interprets as a signal to break the line"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$3519cf96-fc26-11ea-3386-d97c61ea1b85„§cell_idÙ$3519cf96-fc26-11ea-3386-d97c61ea1b85¤codeÚ md"""Since we need to manipulate the columns, let's rename them to something shorter. We can do this either **in place**, i.e. modifying the original `DataFrame`, or **out of place**, creating a new `DataFrame`. The convention in Julia is that functions that modify their argument have a name ending with `!` (often pronounced "bang").

We can use the `head` function to see only the first few lines of the data.
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$16a79308-fc36-11ea-16e5-e1087d7ebbda„§cell_idÙ$16a79308-fc36-11ea-16e5-e1087d7ebbda¤codeÙ+US_row = findfirst(==("US"), all_countries)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$ada44a56-fc56-11ea-2ab7-fb649be7e066„§cell_idÙ$ada44a56-fc56-11ea-2ab7-fb649be7e066¤codeÙUshp_countries = Shapefile.shapes(Shapefile.Table("./ne_110m_admin_0_countries.shp"));¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$64d9bcea-7c85-421d-8f1e-17ea8ee694da„§cell_idÙ$64d9bcea-7c85-421d-8f1e-17ea8ee694da¤codeÙžurl = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$210cee94-fc3e-11ea-1a6e-7f88270354e1„§cell_idÙ$210cee94-fc3e-11ea-1a6e-7f88270354e1¤code±dates[exp_period]¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$539c951c-fc48-11ea-2293-457b7717ea4d„§cell_idÙ$539c951c-fc48-11ea-2293-457b7717ea4d¤codeÙWmd"We can fit a straight line using **linear regression** to this portion of the data."¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$aaa7c012-fc1f-11ea-3c6c-89630affb1db„§cell_idÙ$aaa7c012-fc1f-11ea-3c6c-89630affb1db¤codeÙ$md"## Extracting useful information"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6„§cell_idÙ$e9ad97b6-fdef-4f48-bd32-634cfd2ce0e6¤codeÙibegin
	rename!(data, 1 => "province", 2 => "country", 3 => "latitude", 4 => "longitude") 
	head(data)
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$d3398953-afee-4989-932c-995c3ffc0c40„§cell_idÙ$d3398953-afee-4989-932c-995c3ffc0c40¤codeÙ$md"""
## Exploring COVID-19 data
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$0b01120c-fc3d-11ea-1381-8bab939e6214„§cell_idÙ$0b01120c-fc3d-11ea-1381-8bab939e6214¤codeÙŽmd"## Exponential growth

Simple models of epidemic spread often predict a period with **exponential growth**. Do the data corroborate this?
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$db4c1f10-7c37-4513-887a-2467ce673458„§cell_idÙ$db4c1f10-7c37-4513-887a-2467ce673458¤codeÙ¼begin
	using Pkg   
	Pkg.add.(["CSV", "DataFrames", "PlutoUI", "Shapefile", "ZipFile", "JSON"])

	using CSV
	using DataFrames
	using PlutoUI
	using Shapefile
	using ZipFile
	using JSON
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$be868a52-fc3b-11ea-0b60-7fea05ffe8e9„§cell_idÙ$be868a52-fc3b-11ea-0b60-7fea05ffe8e9¤codeÙmbegin
	plot(daily_cases, label="raw daily cases")
	plot!(running_mean, m=:o, label="running weakly mean")
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$16981da0-fc4d-11ea-37a2-535aa014a298„§cell_idÙ$16981da0-fc4d-11ea-37a2-535aa014a298¤code­data.latitude¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$12900562-fc3a-11ea-25e1-f7c91a6940e5„§cell_idÙ$12900562-fc3a-11ea-25e1-f7c91a6940e5¤codeÚÕmd"Note that discrete data should *always* be plotted with points. The lines are just to guide the eye. 

Cumulating data corresponds to taking the integral of a function and is a *smoothing* operation. Note that the cumulative data is indeed visually smoother than the daily data.

The oscillations in the daily data seem to be due to a lower incidence of reporting at weekends. We could try to smooth this out by taking a **moving average**, say over the past week:
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$c400ce4e-fc30-11ea-13b1-b54cf8f5630e„§cell_idÙ$c400ce4e-fc30-11ea-13b1-b54cf8f5630e¤codeÚ˜md"Now we would like to extract the data for the US alone. How can we access the correct row of the table? We can again filter on the country name. A nicer way to do this is to use the `filter` function.

This is a **higher-order function**: its first argument is itself a function, which must return `true` or `false`.  `filter` will return all the rows of the `DataFrame` that satisfy that **predicate**:
"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$bcc95a8a-fc2e-11ea-2ccd-3bece42a08e6„§cell_idÙ$bcc95a8a-fc2e-11ea-2ccd-3bece42a08e6¤codeÙ8md"You can also use `Select` to get a dropdown instead:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$19bdf146-fc3c-11ea-3c60-bf7823c43a1d„§cell_idÙ$19bdf146-fc3c-11ea-3c60-bf7823c43a1d¤codeÙebegin
	using Statistics
	running_mean = [mean(daily_cases[i-6:i]) for i in 7:length(daily_cases)]
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$a9c39dbe-fc4d-11ea-2e86-4992896e2abb„§cell_idÙ$a9c39dbe-fc4d-11ea-2e86-4992896e2abb¤code²md"## Adding maps"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$b3e1ebf8-fc56-11ea-05b8-ed0b9e50503d„§cell_idÙ$b3e1ebf8-fc56-11ea-05b8-ed0b9e50503d¤codeÙ!# plot!(shp_countries, alpha=0.2)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$e0493940-8aa7-4733-af72-cd6bc0e37d92„§cell_idÙ$e0493940-8aa7-4733-af72-cd6bc0e37d92¤codeÙ#md"""
## Download and load data
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$99d5a138-fc30-11ea-2977-71732ca3aead„§cell_idÙ$99d5a138-fc30-11ea-2977-71732ca3aead¤code³length(U_countries)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$85a145c6-fceb-11ea-0c94-27b3ef8270bc„§cell_idÙ$85a145c6-fceb-11ea-0c94-27b3ef8270bc¤code°md"""Day $day"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$0c098923-b016-4c65-9a37-6b7b56b13a0c„§cell_idÙ$0c098923-b016-4c65-9a37-6b7b56b13a0c¤codeÙSdate_strings = String.(names(data)[5:end])  # apply String function to each element¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$ee27bd98-fc37-11ea-163c-1365e194fc2e„§cell_idÙ$ee27bd98-fc37-11ea-163c-1365e194fc2e¤codeÙbmd"Since the year was not correctly represented in the original data, we need to manually fix it:"¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$f099424c-0e22-42fb-894c-d8c2a65715fb„§cell_idÙ$f099424c-0e22-42fb-894c-d8c2a65715fb¤codeÙ[scatter(US_data, m=:o, alpha=0.5, ms=3, xlabel="day", ylabel="cumulative cases", leg=false)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$57a9bb06-fc4a-11ea-2665-7f97026981dc„§cell_idÙ$57a9bb06-fc4a-11ea-2665-7f97026981dc¤codeÙqmd"Let's extract and plot the geographical information. To reduce the visual noise a bit we will only use those "¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$bb6316b7-23fb-44a3-b64a-dfb71a7df011„§cell_idÙ$bb6316b7-23fb-44a3-b64a-dfb71a7df011¤codeºcolumn_names = names(data)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$d911edb6-fc87-11ea-2258-d34d61c02245„§cell_idÙ$d911edb6-fc87-11ea-2258-d34d61c02245¤code ¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$7b2496b0-fc35-11ea-0e78-473e5e8eac44„§cell_idÙ$7b2496b0-fc35-11ea-0e78-473e5e8eac44¤codeÙ0filter(x -> x.country == "United Kingdom", data)¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂÙ$efa281da-cef9-41bc-923e-625140ce5a07„§cell_idÙ$efa281da-cef9-41bc-923e-625140ce5a07¤codeÙ÷md"""
In this notebook we will explore and analyse data on the COVID-19 pandemic. The aim is to use Julia's tools to analyse and visualise the data in different ways.

Here is an example of the kind of visualisation we will be able to produce:
"""¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$ad43cea2-fc28-11ea-2bc3-a9d81e3766f4„§cell_idÙ$ad43cea2-fc28-11ea-2bc3-a9d81e3766f4¤codeÚæmd"A `DataFrame` is a standard way of storing **heterogeneous data** in Julia, i.e. a table consisting of columns with different types. As you can see from the display of the `DataFrame` object above, each column has an associated type, but different columns have different types, reflecting the type of the data in that column.

In our case, country names are stored as `String`s, their latitude and longitude as `Float64`s and the (cumulative) case counts for each day as `Int64`s.
."¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÃÙ$7ec28cd0-fc87-11ea-2de5-1959ea5dc37c„§cell_idÙ$7ec28cd0-fc87-11ea-2de5-1959ea5dc37c¤codeÚ6begin
	zipfile = download("https://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_countries.zip")

	r = ZipFile.Reader(zipfile);
	for f in r.files
	    println("Filename: \$(f.name)")
		open(f.name, "w") do io
	    	write(io, read(f))
		end
    end
	close(r)
end¨metadataƒ©show_logsÃ¨disabledÂ®skip_as_scriptÂ«code_foldedÂ«notebook_idÙ$8cae8068-4aa9-11f0-31ab-a194d2ebba27«in_temp_dirÂ¨metadata€