├── COVID19_clustersize.html ├── README.md ├── data ├── bycountries_27Feb2020.csv └── dailycases_international_27Feb2020.csv ├── figures ├── fig1.tiff ├── fig2.tiff ├── figS1.tif ├── figS2.tif ├── figS3.tif └── outbreaksize-fig1.png ├── src ├── 2020-03-11-overdispersion-from-outbreaksize.md ├── COVID19_clustersize.Rmd ├── COVID19_clustersize.ipynb ├── install.R └── runtime.txt └── supplementarymaterials.pdf /README.md: -------------------------------------------------------------------------------- 1 | # Estimating the amount of superspreading using outbreak sizes of COVID-19 outside China 2 | Source code accompanying Endo et al. "Estimating the amount of superspreading using outbreak sizes of COVID-19 outside China". [https://wellcomeopenresearch.org/articles/5-67](https://wellcomeopenresearch.org/articles/5-67) 3 | 4 | ## Main files 5 | * COVID19_clustersize.ipynb/[.html](https://akira-endo.github.io/COVID19_clustersize/COVID19_clustersize.html): 6 | Jupyter Notebook to reproduce the analysis in the paper 7 | * bycountries_27Feb2020.csv: 8 | Data file of imported/local case counts by country from [WHO situation report 38](https://www.who.int/docs/default-source/coronaviruse/situation-reports/20200227-sitrep-38-covid-19.pdf) 9 | * dailycases_international_27Feb2020.csv: 10 | Data file of daily case counts by country from [COVID2019.app](https://docs.google.com/spreadsheets/d/1mmnYxABvDOG4EzTnV3j2TLJ-ikaua20C1KnpXTROIsI/) 11 | * supplementarymaterials.pdf: 12 | Supplementary materials (Figures S1-S3 and descriptions) 13 | ## Licence 14 | 15 | [MIT](https://github.com/akira-endo/COVID19_clustersize/blob/master/LICENSE) 16 | 17 | ## Dependencies 18 | * R ver. 3.6.1 19 | * {LaplacesDemon} ver. 16.1.1 20 | * {repr} ver. 1.0.1 21 | * {IRkernel} ver. 1.0.2 22 | * Python ver. 3.7.4 23 | * Jupyter Notebook ver. 4.5.0 24 | 25 | ## Authors 26 | 27 | [Akira Endo](https://github.com/akira-endo), 28 | [Sam Abbott](https://github.com/seabbs), 29 | [Adam Kucharski](https://github.com/adamkucharski), 30 | [Sebastian Funk](https://github.com/sbfnk) 31 | -------------------------------------------------------------------------------- /data/bycountries_27Feb2020.csv: -------------------------------------------------------------------------------- 1 | ,Total,ImportedChina,ImportedOthers,Local,Unknown,Death 2 | South Korea,1766,13,4,605,1144,13 3 | Japan,186,28,11,129,18,3 4 | Singapore,93,24,0,69,0,0 5 | Australia,23,12,8,3,0,0 6 | Malaysia,22,18,2,2,0,0 7 | Vietnam,16,8,0,8,0,0 8 | Philippines,3,3,0,0,0,1 9 | Cambodia,1,1,0,0,0,0 10 | Thailand,40,23,0,7,10,0 11 | India,3,3,0,0,0,0 12 | Nepal,1,1,0,0,0,0 13 | Sri Lanka,1,1,0,0,0,0 14 | USA,59,14,42,2,1,0 15 | Canada,11,7,2,1,1,0 16 | Brazil,1,0,1,0,0,0 17 | Italy,400,3,0,121,276,12 18 | Germany,21,2,1,14,4,0 19 | France,18,6,2,7,3,2 20 | UK,13,2,10,1,0,0 21 | Spain,12,0,10,1,1,0 22 | Croatia,3,0,2,1,0,0 23 | Austria,2,0,2,0,0,0 24 | Finland,2,1,1,0,0,0 25 | Israel,2,0,2,0,0,0 26 | Russia,2,2,0,0,0,0 27 | Sweden,2,1,1,0,0,0 28 | Belgium,1,1,0,0,0,0 29 | Denmark,1,0,1,0,0,0 30 | Estonia,1,0,0,0,1,0 31 | Georgia,1,0,1,0,0,0 32 | Greece,1,0,1,0,0,0 33 | North Macedonia,1,0,1,0,0,0 34 | Norway,1,1,0,0,0,0 35 | Romania,1,0,1,0,0,0 36 | Switzerland,1,0,1,0,0,0 37 | Iran,141,0,0,28,113,22 38 | Kuwait,43,0,43,0,0,0 39 | Bahrain,33,0,33,0,0,0 40 | UAE,13,6,2,5,0,0 41 | Iraq,6,0,6,0,0,0 42 | Oman,4,0,4,0,0,0 43 | Lebanon,1,0,1,0,0,0 44 | Pakistan,2,0,1,0,1,0 45 | Afghanistan,1,0,1,0,0,0 46 | Egypt,1,0,0,1,0,0 47 | Algeria,1,0,1,0,0,0 48 | -------------------------------------------------------------------------------- /data/dailycases_international_27Feb2020.csv: -------------------------------------------------------------------------------- 1 | HOME,Daily new,43,0,0,4,18,59,77,94,151,134,263,462,714,780,"1,779","1,477","1,755","2,011","2,127","2,604","2,834","3,242","3,922","3,726","3,163","3,446","2,668","3,005","2,549","2,071","15,156","4,110","2,662","2,097","2,133","2,002","1,850",512,970,995,979,551,885,748,"1,012","1,264","1,521","1,964","1,978","1,765","2,667","1,153",,,,,,,,,,,,,COVID2019.app Team,,,,,,,,,,, 2 | ,(Excl. China),1,0,0,0,1,0,0,1,2,3,4,18,13,11,8,18,18,30,28,15,9,9,36,32,20,51,26,32,82,56,5,63,21,89,85,114,101,121,81,172,331,337,377,342,579,937,"1,094","1,391","1,776","1,640","2,548",0,,,,,,,,,,,,,,,,,,,,,,,, 3 | Total,,43,43,43,46,64,123,200,294,445,579,843,"1,304","2,005","2,786","4,565","6,041","7,797","9,816","11,946","14,551","17,389","20,633","24,556","28,283","31,446","34,896","37,578","40,672","43,232","45,303","60,460","65,613","68,275","70,373","72,387","74,387","76,237","77,178","78,148","78,717","79,696","80,247","81,132","81,880","82,892","84,156","85,677","87,637","89,615","91,380","94,047","95,201",,,,,,,,,,,,,Contributors,,,,,,,,,,, 4 | Total,Territory / Date,"Jan 13, 2020","Jan 14, 2020","Jan 15, 2020","Jan 16, 2020","Jan 17, 2020","Jan 18, 2020","Jan 19, 2020","Jan 20, 2020","Jan 21, 2020","Jan 22, 2020","Jan 23, 2020","Jan 24, 2020","Jan 25, 2020","Jan 26, 2020","Jan 27, 2020","Jan 28, 2020","Jan 29, 2020","Jan 30, 2020","Jan 31, 2020","Feb 1, 2020","Feb 2, 2020","Feb 3, 2020","Feb 4, 2020","Feb 5, 2020","Feb 6, 2020","Feb 7, 2020","Feb 8, 2020","Feb 9, 2020","Feb 10, 2020","Feb 11, 2020","Feb 12, 2020","Feb 13, 2020","Feb 14, 2020","Feb 15, 2020","Feb 16, 2020","Feb 17, 2020","Feb 18, 2020","Feb 19, 2020","Feb 20, 2020","Feb 21, 2020","Feb 22, 2020","Feb 23, 2020","Feb 24, 2020","Feb 25, 2020","Feb 26, 2020","Feb 27, 2020","Feb 28, 2020","Feb 29, 2020","Mar 1, 2020","Mar 2, 2020","Mar 3, 2020"," Mar 4, 2020 11:44 AM GMT","Mar 5, 2020","Mar 6, 2020","Mar 7, 2020","Mar 8, 2020","Mar 9, 2020","Mar 10, 2020","Mar 11, 2020",,,,,,Updaters,,Informers,,,,,,,,, 5 | "80,270",China,+42,,-+119,+3,+17,+59,+77,+93,+149,+131,+259,+444,+688,+769,"+1,771","+1,459","+1,737","+1,982","+2,102","+2,590","+2,829","+3,235","+3,887","+3,694","+3,143","+3,399","+2,656","+3,062","+2,478","+2,015","+15,152","+5,090","+2,641","+2,009","+2,048","+1,886","+1,749",+820,+889,+397,+648,+409,+508,+406,+433,+327,+427,+573,+202,+125,+119,,,,,,,,,,,,,,@yxlearn,@jodigraphics15,,,,,,,,,, 6 | 43,Thailand,+1,,,,+1,,,,,,,+3,+2,+1,,+6,,,+5,,,,+6,,,,+7,,,+1,,,,+1,,+1,,,,,,,,+2,+3,,+1,+1,,+1,,,,,,,,,,,,,,,,,,,,,,,,,, 7 | 299,Japan,,,+1,,,,,,,,+1,,+1,+1,,+3,+5,+10,+3,+3,,,+3,+3,,,+1,+5,+3,+2,,+4,+7,+12,+7,+6,+6,+13,+5,+11,+25,+11,+10,+11,+17,+22,+21,+9,+14,+18,+19,+6,,,,,,,,,,,,,@limahall1,,,,,,,,,,, 8 | 706,Cruise ship,,,,,,,,,,,,,,,,,,,,,,,+10,+10,,+41,+3,+6,+65,+39,,+44,,+67,+70,+99,+88,+79,+13,,,+57,,,+14,,,,,+1,,,,,,,,,,,,,,,@limahall1,,,,,,,,,,, 9 | "5,621",South Korea,,,,,,,,+1,,,,+1,,,+2,,,+2,+5,+1,+3,,+1,+7,,+1,,+3,,+1,,,,,+1,+1,+1,+20,+53,+100,+229,+169,+231,+144,+284,+505,+571,+813,+586,+476,+974,+435,,,,,,,,,,,,,@jake_spann,,,,,,,,,,, 10 | 42,Taiwan,,,,,,,,,+1,,,+2,,,+2,+2,+1,+1,+1,,,,+1,,+5,,+1,+1,,,,,,,+2,+2,,+1,+1,+2,,+2,+2,+1,+1,,+2,+5,+1,+1,+1,,,,,,,,,,,,,,Yi Lun Weng,,,,,,,,,,, 11 | 127,USA,,,,,,,,,+1,,,+1,,+3,,,,+1,+1,+1,+1,+2,,+1,,,,,,+1,,+2,,,,,,,,+20,,,+18,+4,+3,,+3,+5,+11,+23,+20,+5,,,,,,,,,,,,,@msmakita,@shernicejohnson,@GoRogueAnalysis,Gabriel Pragin,,,,,,,, 12 | 10,Macau,,,,,,,,,,+1,+1,,,+3,,,,+2,,+1,,+1,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 13 | 100,Hong Kong,,,,,,,,,,+2,,+3,,+3,,,+2,+2,+1,+1,,+1,+2,+4,+3,+2,,+10,+6,+7,+1,+3,+3,,+1,+3,+2,+3,+4,,+1,+4,+7,+4,+6,+2,+1,+1,+3,+2,+0,,,,,,,,,,,,,,@iamdaniellow,,,,,,,,,,, 14 | 110,Singapore,,,,,,,,,,,+1,+2,+1,,+1,+2,+3,+3,+3,+2,,,+6,+4,+2,+3,+7,+3,+2,+2,+3,+8,+9,+5,+3,+2,+4,+3,+1,+1,+3,,+1,+1,+2,+3,+2,+4,+4,+2,+2,,,,,,,,,,,,,,@septian,,,,,,,,,,, 15 | 16,Vietnam,,,,,,,,,,,+2,,,,,,,+3,,+1,+1,+1,+2,,+2,,+1,+1,,+1,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 16 | 1,Nepal,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 17 | 212,France,,,,,,,,,,,,+3,,,,+1,+1,+1,,,,,,,,,+5,,,,,,,+1,,,,,,,,,,+2,+4,+20,+19,+43,+30,+61,+21,,,,,,,,,,,,,,@FrCovid19,,,,,,,,,,, 18 | 43,Australia,,,,,,,,,,,,,+4,,+1,,+2,+2,,+3,,,+1,+1,+1,,,,,,,,,,,,,,,+4,+2,+1,,,+1,,+2,,+4,+1,+2,+11,,,,,,,,,,,,,,,,,,,,,,,, 19 | 50,Malaysia,,,,,,,,,,,,,+4,,,,+3,+1,,,,,+2,+2,+2,+1,+1,+1,+1,,,+1,,+3,,,,,,,,,,,,+1,+2,,+4,,+7,+14,,,,,,,,,,,,,@alanusedbooks,,,,,,,,,,, 20 | 33,Canada,,,,,,,,,,,,+1,+1,+1,,,,,+1,,,+1,,,+2,,,,,,,,+1,,,,,,+1,,,,+2,,+1,+2,+2,+4,+4,+3,+3,+3,,,,,,,,,,,,,"@officialEBoland 21 | ",@diab_elie,@radicle110,,,,,,,,, 22 | 1,Sri Lanka,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 23 | 240,Germany,,,,,,,,,,,,,,,+1,+3,,+1,+2,+1,+2,+2,,,+1,+1,,,,+2,,,,,,,,,,,,,,+2,+12,+21,+26,+4,+49,+35,+38,+37,,,,,,,,,,,,,@niemieckapolity,,,,,,,,,,, 24 | 27,UAE,,,,,,,,,,,,,,,,,+1,+3,,+1,,,,,,+2,,,+1,,,,,,+1,,,,,+2,+2,,,,,+6,,+2,,,+6,,,,,,,,,,,,,,,,,,,,,,,,, 25 | 7,Finland,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,+1,,+3,+1,,,,,,,,,,,,,,,Maire,,,,,,,,,,, 26 | 28,India,,,,,,,,,,,,,,,,,,+1,,,+1,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,+2,+1,+22,,,,,,,,,,,,,@Sanchari_23,,,,,,,,,,, 27 | 3,Philippines,,,,,,,,,,,,,,,,,,+1,,,+1,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 28 | 1,Cambodia,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 29 | "2,502",Italy,,,,,,,,,,,,,,,,,,+2,,,,,,,+1,,,,,,,,,,,,,,,+17,+59,+73,+76,+95,+143,+184,+238,+220,+581,+347,+466,,,,,,,,,,,,,,@JJ_Cappa,@Mus0ItA,@WhiteStar97,,,,,,,,, 30 | 53,UK,,,,,,,,,,,,,,,,,,,+2,,,,,,+1,,,+1,+4,,+1,,,,,,,,,,,+4,,,,+3,+4,+3,+13,+4,+11,+2,,,,,,,,,,,,,@mayferch,,,,,,,,,,, 31 | 3,Russia,,,,,,,,,,,,,,,,,,,+2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,, 32 | 32,Sweden,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+5,+4,+2,+1,+1,+15,+2,,,,,,,,,,,,,,,,,,,,,,,, 33 | 168,Spain,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,+1,,,,,,,,,,,,,,,+1,+4,+6,+14,+15,+23,+18,+41,+44,,,,,,,,,,,,,,@Sukeema,@soldiciembre,@RubenApps,,,,,,,,, 34 | 23,Belgium,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+6,+5,+10,,,,,,,,,,,,,,,,,,,,,,,, 35 | 2,Egypt,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,, 36 | "2,922",Iran,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+2,+3,+13,+10,+15,+18,+34,+44,+106,+143,+205,+385,+523,+835,+586,,,,,,,,,,,,,@mohsenbarekati,,,,,,,,,,, 37 | 15,Israel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,+1,,,,+1,+3,,+4,,+2,+3,,,,,,,,,,,,,,,,,,,,,,,, 38 | 13,Lebanon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,+1,+1,,+1,+6,+3,,,,,,,,,,,,,,,,,,,,,,,,,, 39 | 56,Kuwait,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+5,+6,+15,+17,+2,,+1,+10,,,,,,,,,,,,,,,,,,,,,,,,,, 40 | 1,Afghanistan,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 41 | 49,Bahrain,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+2,+21,+10,,+5,,+9,+2,,,,,,,,,,,,,,,,,,,,,,,,,, 42 | 32,Iraq,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+4,,+2,+1,+5,+6,+7,+6,,,,,,,,,,,,,,,,,,,,,,,,, 43 | 12,Oman,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+2,+2,,+2,,,,,+6,,,,,,,,,,,,,,,,,,,,,,,,, 44 | 27,Austria,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+2,,+3,+1,+3,+5,+4,+6,+3,,,,,,,,,,,,,Tanja Malle,,@scharlatanja,,,,,,,,, 45 | 9,Croatia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+2,,+2,+1,+1,+1,+1,,,,,,,,,,,,,,,,,,,,,,,,, 46 | 61,Switzerland,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,+7,+7,+3,+6,+18,+15,+4,,,,,,,,,,,,,Tony,,,,,,,,,,, 47 | 8,Algeria,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,+2,+2,,+3,,,,,,,,,,,,,,,,,,,,,,,, 48 | 2,Brazil,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,, 49 | 8,Greece,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+2,+1,+3,,,,+1,,,,,,,,,,,,,@Onomastos,,Dionisios Lymp.,@Dennie____,,,,,,,, 50 | 5,Pakistan,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+2,,,+2,,,+1,,,,,,,,,,,,,,,,,,,,,,,,, 51 | 1,North Macedonia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 52 | 3,Georgia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,+1,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,, 53 | 33,Norway,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+3,+2,+9,+4,+6,+8,,,,,,,,,,,,,,Marianne,,,,,,,,,,, 54 | 4,Romania,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,+2,,,,+1,,,,,,,,,,,,,,@Gorunalex,,,,,,,,,,, 55 | 10,Denmark,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+1,+1,+1,,+6,,,,,,,,,,,,,,,,,,,,,,,,, 56 | 2,Estonia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,, 57 | 23,Netherlands,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+1,+5,+3,+8,+5,,,,,,,,,,,,,,,,,,,,,,,,, 58 | 10,San Marino,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,+7,+2,,,,,,,,,,,,,,,,,,,,,,,,, 59 | 1,Nigeria,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 60 | 1,Lithuania,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 61 | 2,New Zealand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,, 62 | 6,Belarus,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,+2,+3,,,,,,,,,,,,,,,,,,,,,,,, 63 | 3,Azerbaijan,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+2,,,,,,,,,,,,,,,,,,,,,,,,,,,, 64 | 5,Mexico,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+2,+2,+1,,,,,,,,,,,,,,,,,,,,,,,,,,, 65 | 16,Iceland,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,+2,+6,+5,+2,,,,,,,,,,,,,,,,,,,,,,,, 66 | 1,Monaco,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 67 | 7,Qatar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+2,+4,,,,,,,,,,,,,,,,,,,,,,,,,, 68 | 7,Ecuador,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+5,,+1,,,,,,,,,,,,,,,,,,,,,,,,, 69 | 1,Luxembourg,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,,, 70 | 2,Ireland,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,+1,,,,,,,,,,,,,,,,,,,,,,,,, 71 | 5,Czechia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+3,+1,+1,,,,,,,,,,,,,,,,,,,,,,,,, 72 | 1,Dominican Republic,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,, 73 | 1,Armenia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,,, 74 | 2,Indonesia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+2,,,,,,,,,,,,,,,,,,,,,,,,,, 75 | 1,Andorra,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,, 76 | 5,Portugal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+2,+2,+1,,,,,,,,,,,,,,,@_morning_,,,,,,,,, 77 | 1,Jordan,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,, 78 | 1,Tunisia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,, 79 | 2,Senegal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,+1,,,,,,,,,,,,,,,,,,,,,,,,, 80 | 1,Latvia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,, 81 | 1,Saudi Arabia,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,, 82 | 1,Morocco,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,,, 83 | 1,Ukraine,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,, 84 | 1,Argentina ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,, 85 | 1,Liechtenstein,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,, 86 | 1,Chile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,,, 87 | 1,Poland,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+1,,,,,,,,,,,,,,,,,,,,,,,, 88 | -------------------------------------------------------------------------------- /figures/fig1.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akira-endo/COVID19_clustersize/e748321cf4bccd6cc5ee77afde83b51479f3f449/figures/fig1.tiff -------------------------------------------------------------------------------- /figures/fig2.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akira-endo/COVID19_clustersize/e748321cf4bccd6cc5ee77afde83b51479f3f449/figures/fig2.tiff -------------------------------------------------------------------------------- /figures/figS1.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akira-endo/COVID19_clustersize/e748321cf4bccd6cc5ee77afde83b51479f3f449/figures/figS1.tif -------------------------------------------------------------------------------- /figures/figS2.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akira-endo/COVID19_clustersize/e748321cf4bccd6cc5ee77afde83b51479f3f449/figures/figS2.tif -------------------------------------------------------------------------------- /figures/figS3.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akira-endo/COVID19_clustersize/e748321cf4bccd6cc5ee77afde83b51479f3f449/figures/figS3.tif -------------------------------------------------------------------------------- /figures/outbreaksize-fig1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akira-endo/COVID19_clustersize/e748321cf4bccd6cc5ee77afde83b51479f3f449/figures/outbreaksize-fig1.png -------------------------------------------------------------------------------- /src/2020-03-11-overdispersion-from-outbreaksize.md: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | #add the title of your project 4 | title: Estimating the overdispersion in COVID-19 transmission using outbreak sizes outside China 5 | 6 | #add a description 7 | 8 | description: We evaluated the overdispersion in the number of secondary transmissions of COVID-19 9 | 10 | #add a status: in-progress, under-review, published 11 | #defaults to in-progress if not set 12 | status: in-progress 13 | 14 | #add the date at which post is updated (if applicable), in YYYY-MM-DD 15 | update: 2020-03-12 16 | 17 | #add optional hash-array with authors 18 | # see /_data/authors.yml for list of ids, or to add/edit an author 19 | # can add ncov-group as one author, will link to list of members 20 | # can set equal: X to show 'contributed equally' 21 | # can set corresponding: true to indicate corresponding author 22 | authors: 23 | - id: akira_endo 24 | corresponding: true 25 | - id: ncov-group 26 | - id: adam_kucharski 27 | - id: seb_funk 28 | 29 | --- 30 | 31 | ## Aim 32 | To estimate the level of overdispersion in COVID-19 transmission from the worldwide case count data. 33 | 34 | ## Methods summary 35 | * We extracted the number of imported/local cases in the affected countries from the [WHO situation report 38](https://www.who.int/docs/default-source/coronaviruse/situation-reports/20200227-sitrep-38-covid-19.pdf) published on 27 February 2020. 36 | * Assuming that the offspring distribution (distribution of the number of secondary transmissions) for COVID-19 cases is an identically- and independently-distributed negative-binomial distribution, we estimated the parameters of the negative-binomial distribution (reproduction number $R_0$ and overdispersion $k$) using the likelihood of observing the reported number of imported/local cases (outbreak size) of COVID-19 for each country. 37 | * The outbreak size may grow in countries with an ongoing outbreak; using the current outbreak size as the final size for such countries may introduce bias. We assumed that the growth of a cluster in a country had not been ceased if the latest reported cases were within 7 days before 27 February 2020, and adjusted the likelihood for these countries by using the condition that the final cluster size has to be at least as large as the currently observed number of cases. 38 | 39 | ## Key findings 40 | * The offspring distribution of COVID-19 is highly overdispersed. 41 | * For the likely range of $R_0$ of 2-3, the overdispersion parameter $k$ was estimated to be around 0.1, suggesting that the majority of secondary transmission is caused by a very small fraction of individuals (80% of transmissions caused by ~10% of the total cases). 42 | * Joint estimation of $R_0$ and $k$ indicated it is likely that $R_0>1.4$ and $k<0.2$. The current data and model did not provide evidence on the upper bound of $R_0$. 43 | 44 | ![Fig1A](../figures/outbreaksize-fig1.png) 45 | Figure 1. MCMC estimates given assumed R0 values. 46 | (A) Estimated overestimation parameter for various basic reproduction number R0. (B) Proportion of infected individuals responsible for 80% of the total secondary transmissions (p80%). 47 | The black lines show the median estimates given fixed R0 values and the grey shaded areas indicate 95% CrIs. The regions corresponding to the likely range of R0 (2-3) are indicated by colour. 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 |
Table 1. Credible intervals from a joint estimation
Prior distribution95% lower bound95% upper bound
R0$\mathcal N(3,5)$1.411.6
k$\mathrm{HalfNormal}(10)$ for the reciprocal $k^{-1}$0.04 0.2
59 | 60 | ## Limitations 61 | * We used the confirmed case counts reported to WHO and did not account for possible underreporting of cases. 62 | * Reported cases whose site of infection classified as unknown, which should in principle be counted as either imported or local cases, were excluded from analysis. 63 | * The distinction between countries with and without ongoing outbreak (7 days without any new confirmation of cases) was arbitrary and the results may be sensitive to this assumption. 64 | 65 | ## Detailed methods 66 | Full details and the underlying scripts can be found on a [Github page](https://akira-endo.github.io/COVID19_clustersize/COVID19_clustersize.html). 67 | ### Data source 68 | We extracted the number of imported/local cases in the affected countries from the [WHO situation report 39](https://www.who.int/docs/default-source/coronaviruse/situation-reports/20200227-sitrep-38-covid-19.pdf) published on 27 February 2020, which, at the time of writing, is the latest report of the number of imported/local cases in each country (from the situation report 40, WHO no longer reports the number of cases stratified by the site of infection). We defined imported cases as the cases whose likely site of infection is outside the reporting country, and the local cases as those whose likely site of infection is inside the reporting country. Those whose site of infection under investigation were excluded from the analysis. In Egypt and Iran, no imported cases have been confirmed which cause the likelihood value to be zero. Data in these two countries were excluded. 69 | 70 | To distinguish between countries with and without an ongoing outbreak, we extracted daily case counts from an [online resource (COVID2019.app)](https://docs.google.com/spreadsheets/d/1Z7VQ5xlf3BaTx_LBBblsW4hLoGYWnZyog3jqsS9Dbgc) and determined the dates of the latest case confirmation for each country (as of 27 February). 71 | 72 | ### Final outbreak size 73 | Assume that the offspring distribution for COVID-19 cases is an i.i.d. negative-binomial distribution. The probability mass function for the final cluster size resulting from $s$ initial cases is, according to [Blumberg et al.](https://doi.org/10.1371/journal.ppat.1004452), given by 74 | $$ 75 | c(x;s)=P(X=x;s)=\frac{ks}{kx+x-s}\binom{kx+x-s}{x-s}\frac{\left(\frac{R_0} k\right)^{x-s}}{\left(1+\frac{R_0} k\right)^{kx+x-s}}. 76 | $$ 77 | 78 | If the observed case counts are part of an ongoing outbreak in a country, cluster sizes may grow in the future. To address this issue, we adjusted the likelihood corresponding those countries with ongoing outbreak by only using the condition that the final cluster size of such a country has to be larger than the currently observed number of cases. The corresponding likelihood function is 79 | $$ 80 | c_\mathrm{o}(x;s)=P(X\geq x;s)=1-\sum_{m=0}^{x}c(m;s)+c(x;s) 81 | $$ 82 | 83 | ### Defining countries with ongoing outbreak and total likelihood 84 | We assumed that the growth of a cluster in a country had ceased if 7 days have passed since the latest reported cases (denoted by $A$). We applied the final size likelihood $c(x;s)$ to those countries and $c_\mathrm{o}(x;s)$ to the rest of the countries (countries with an ongoing outbreak: $B$). 85 | 86 | The total likelihood is 87 | $$ 88 | L(R_0,k)=\prod_{i\in A}P(X=x_i;s_i)\prod_{i\in B}P(X\geq x_i;s_i) 89 | $$ 90 | 91 | ### Estimating overdispersion parameter 92 | Holding $R_0$ constant, we estimated the overdispersion parameter $k$ using the likelihood given above. We used the Markov-chain Monte Carlo (MCMC) method to provide 95% credible intervals (CrIs). The reciprocal of $k$ (concentration parameter) was sampled where the prior distribution for the reciprocal was weakly-informed half-normal ($\mathrm{HalfNormal}(\sigma=10)$). We employed the adaptive hit-and-run Metropolis algorithm and obtained 500 thinned samples from 10,000 MCMC steps (where the first half of the chain was discarded as burn-in). 93 | 94 | ### Proportion responsible for 80% of transmissions 95 | Following [Grantz et al.](https://hopkinsidd.github.io/nCoV-Sandbox/DispersionExploration.html), we calculated the estimated proportion of infected individuals responsible for 80% of secondary transmissions caused. Such proportion $p_{80\%}$ is given as 96 | $$ 97 | 1-p_{80\%}=\int_0^{X}\mathrm{NB}\left(\lfloor x\rfloor;k,\frac{k}{R_0+k}\right)dx, 98 | $$ 99 | where $X$ satisfies 100 | $$ 101 | 1-0.8=\frac 1{R_0}\int_0^{X}\lfloor x\rfloor\mathrm{NB}\left(\lfloor x\rfloor;k,\frac{k}{R_0+k}\right)dx. 102 | $$ 103 | 104 | Note that 105 | $$ 106 | \frac 1{R_0}\int_0^{X}\lfloor x\rfloor\mathrm{NB}\left(\lfloor x\rfloor;k,\frac{k}{R_0+k}\right)dx=\int_0^{X-1}\mathrm{NB}\left(\lfloor x\rfloor;k+1,\frac{k}{R_0+k}\right)dx. 107 | $$ 108 | 109 | We computed $p_{80\%}$ for each MCMC sample to yield median and 95% CrIs. 110 | 111 | ### Joint estimation of $R_{0}$ and $k$ 112 | We performed a joint estimation of $R_0$ and $k$ by MCMC (with a weakly-informed normal prior $\mathcal N(\mu=3,\sigma=5)$ for $R_0$; the prior for $k^{-1}$ was the same as above). The posterior distribution indicated a lower bound of $R_0$ of 1.4 and the upper bound of $k$ of 0.2. The upper bound of $R_0$ did not differ much from that of the prior, suggesting that our model and data did not provide useful evidence on the upper bound of $R_0$. -------------------------------------------------------------------------------- /src/COVID19_clustersize.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | jupyter: 3 | jupytext: 4 | formats: ipynb,Rmd 5 | text_representation: 6 | extension: .Rmd 7 | format_name: rmarkdown 8 | format_version: '1.1' 9 | jupytext_version: 1.2.4 10 | kernelspec: 11 | display_name: R 12 | language: R 13 | name: ir 14 | --- 15 | 16 | # Estimating the overdispersion in COVID-19 transmission using outbreak sizes outside China 17 | ### Akira Endo, Centre for the Mathematical Modelling of Infectious Diseases COVID-19 Working Group, Adam Kucharski, Sebastian Funk 18 | ## Background 19 | 20 | A novel coronavirus disease (COVID-19) outbreak, which is considered to be associated with a market in Wuhan, China, is now affecting a number of countries worldwide ([Zhu et al.](https://doi.org/10.1056/NEJMoa2001017)). Substantial amount of human-to-human transmissions are being observed; the basic reproduction number $R_0$ (the average number of secondary transmissions caused by a single primary case) has been estimated around 2-3 ([Zhao et al.](https://doi.org/10.1016/j.ijid.2020.01.050)). More than 30 countries have observed confirmed cases of COVID-19. A few countries have already shifted from the containment phase to the mitigation phase, with a substantial number of locally acquired cases (including those whose epidemiological link is untraceable). On the other hand, there are countries where a number of imported cases were ascertained but not as many secondary cases as one might expect with an $R_0$ value of 2-3. 21 | 22 | This suggests that not all symptomatic cases cause a secondary transmission, which was also suggested in the past coronavirus outbreaks (SARS/MERS). Such high variation in the distribution of the number of secondary transmissions, so-called superspreading events, is critical information in the epidemic control strategy ([Lloyd-Smith et al.](https://doi.org/10.1038/nature04153)). High overdispersion in the offspring distribution suggests that most cases do not contribute to the expansion of the epidemic, thereby highlighting the importance of containment efforts to prevent superspreading events from happening. 23 | 24 | Here we estimate the amount of overdispersion, or superspreading, by using a mathematical model of transmission that is characterised $R_0$ and the overdispersion parameter $k$ of a negative binomial branching process. We fit this model to worldwide data on COVID-19 cases to estimate $k$ given the likely range of $R_0$ and interpret this in the context of superspreading. 25 | 26 | 27 | ## Method 28 | Assume that the offspring distribution for COVID-19 cases is an i.i.d. negative-binomial distribution. The probability mass function for the final cluster size resulting from $s$ initial cases is, according to [Blumberg et al.](https://doi.org/10.1371/journal.ppat.1004452), given by 29 | $$ 30 | c(x;s)=P(X=x;s)=\frac{ks}{kx+x-s}\binom{kx+x-s}{x-s}\frac{\left(\frac{R_0} k\right)^{x-s}}{\left(1+\frac{R_0} k\right)^{kx+x-s}}. 31 | $$ 32 | 33 | If the observed case counts are part of an ongoing outbreak in a country, cluster sizes may grow in the future. To address this issue, we adjusted the likelihood corresponding those countries with ongoing outbreak by only using the condition that the final cluster size of such a country has to be larger than the currently observed number of cases. The corresponding likelihood function is 34 | $$ 35 | c_\mathrm{o}(x;s)=P(X\geq x;s)=1-\sum_{m=0}^{x}c(m;s)+c(x;s) 36 | $$ 37 | 38 | ### Defining countries with ongoing outbreak and total likelihood 39 | We assumed that the growth of a cluster in a country had ceased if 7 days are passed since the latest reported cases (denoted by $A$). We applied the final size likelihood $c(x;s)$ to those countries and $c_\mathrm{o}(x;s)$ to the rest of the countries (countries with ongoing outbreak: $B$). 40 | 41 | The total likelihood is 42 | $$ 43 | L(R_0,k)=\prod_{i\in A}P(X=x_i;s_i)\prod_{i\in B}P(X\geq x_i;s_i) 44 | $$ 45 | 46 | 47 | ### Data source 48 | We extracted the number of imported/local cases in the affected countries from the [WHO situation report 38](https://www.who.int/docs/default-source/coronaviruse/situation-reports/20200227-sitrep-38-covid-19.pdf) published on 27 February 2020, which, at the time of writing, is the latest report of the number of imported/local cases in each country (from the situation report 40, WHO no longer reports the number of cases stratified by the site of infection). We defined imported cases as the cases whose likely site of infection is outside the reporting country, and the local cases as those whose likely site of infection is inside the reporting country. Those whose site of infection under investigation were excluded from the analysis. In Egypt and Iran, no imported cases have been confirmed which cause the likelihood value to be zero. Data in these two countries were excluded. 49 | 50 | To distinguish between countries with and without an ongoing outbreak, we extracted daily case counts from an [online resource (COVID2019.app)](https://docs.google.com/spreadsheets/d/1Z7VQ5xlf3BaTx_LBBblsW4hLoGYWnZyog3jqsS9Dbgc) and determined the dates of the latest case confirmation for each country (as of 27 February). 51 | 52 | ```{r} 53 | library(repr) 54 | options(repr.plot.width=6, repr.plot.height=5) 55 | # options(jupyter.plot_mimetypes = "image/svg+xml") 56 | currdate=as.Date("2020-2-27") 57 | # buffer period: we assume the growth of a cluster is ceased when this period has been passed since the latest case report 58 | buffer=7 59 | ``` 60 | 61 | ```{r} 62 | # Data 63 | # Imported and local cases outside China 64 | # Source (accessed 4/3/2020): https://www.who.int/docs/default-source/coronaviruse/situation-reports/20200227-sitrep-38-covid-19.pdf 65 | WHO_data=read.csv("../data/bycountries_27Feb2020.csv") 66 | WHO_data[,"ImportedChina"]=WHO_data[,"ImportedChina"]+WHO_data[,"ImportedOthers"] 67 | WHO_data=WHO_data[,-4] 68 | colnames(WHO_data)[3]="Imported" 69 | rownames(WHO_data)=WHO_data[,1] 70 | 71 | # Daily confirmed cases (by date of confirmation) 72 | # Source (accessed 18/2/2020): https://docs.google.com/spreadsheets/d/1Z7VQ5xlf3BaTx_LBBblsW4hLoGYWnZyog3jqsS9Dbgc 73 | daily_data=read.csv("../data/dailycases_international_27Feb2020.csv") 74 | countrynames=daily_data[-(1:3),2] 75 | names(countrynames)=as.character(countrynames) 76 | counts=suppressWarnings(apply(t(daily_data[-(1:2),-(1:2)]),1:2,as.numeric)) 77 | dates=as.Date("2020-1-13")+1:nrow(counts)-1 78 | dailydata=cbind(dates,as.data.frame(counts)) 79 | dailydata=dailydata[,-2] 80 | rownames(dailydata)=dailydata[,1] 81 | colnames(dailydata)=c("date",as.character(countrynames)) 82 | 83 | 84 | # get dates of last reported case for each country 85 | dateidx=seq(as.Date("2020-1-13"),currdate,by="days") 86 | dailydata_tillcurrdate=dailydata[as.character(dateidx),-1] 87 | latestdates=as.Date(apply(dailydata_tillcurrdate,2,function(x){ 88 | lastreported=tail(which(!(x %in% NA)),1) 89 | if(length(lastreported)==0){NA} 90 | else{as.character(dailydata[lastreported,1])} 91 | })) 92 | latestdates=data.frame(countrynames,latestdates) 93 | rownames(latestdates)=as.character(countrynames) 94 | 95 | # get the number of cases within the buffer period 96 | bufferdays=seq(currdate-buffer,currdate,by="days") 97 | ongoingbranches=colSums(dailydata[as.character(bufferdays),-1],na.rm=T) 98 | 99 | # reorder latestdates and ongoingbranches according to WHO data 100 | latestdates_WHO=latestdates[rownames(WHO_data),2] 101 | ongoingbranches_WHO=ongoingbranches[rownames(WHO_data)] 102 | WHO_data=cbind(WHO_data,latestdate=latestdates_WHO,ongoingbranches=ongoingbranches_WHO) 103 | WHO_data[,-1] 104 | WHO_data=WHO_data[!rownames(WHO_data) %in% c("Egypt","Iran","Estonia"),] # exclude Egypt and Iran, where imported cases are reported to be zero 105 | ``` 106 | 107 | ```{r} 108 | # label countries with/without cases in the last (buffer) days 109 | isextinct=WHO_data$latestdate2$, the overdispersion parameter $k$ was estimated to be around 0.1, suggesting that the majority of secondary transmission is caused by a very small fraction of individuals (80% of transmissions caused by ~10% of the total cases) ([Liu et al.](https://doi.org/10.1016/S0140-6736(20)30462-1)). This suggests that the effective reproduction number could be drastically reduced by interventions targeting potential superspreading events. From the current dataset and model, we were unable to simultaneously estimate $R_0$ and $k$. More detailed dataset on the epidemiological link between cases could improve these estimates in the future. 272 | 273 | 274 | ## Additional analysis 275 | ### Model comparison with a Poisson model 276 | The baseline negative-binomial branching process model was compared with a Poisson branching process model by the widely-applicable Bayesian information criterion (WBIC). 277 | 278 | ```{r} 279 | # model comparison with a Poisson model 280 | Model_Pois=function(R0,Data){ 281 | ret=Model_joint(c(R0,1e-10),Data) 282 | ret$parm=ret$parm[1] 283 | ret 284 | } 285 | Data_Pois=list(N=13,mon.names=c("R0","k"),parm.names="R0",icases=icases,lcases=lcases,ocases=ocases,isextinct=isextinct) 286 | 287 | niter=10000 288 | fit_Pois=LaplacesDemon(Model=Model_Pois,Data=Data_Pois,Initial.Values=2,Covar=NULL,Iterations=niter,Status=niter%/%10,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.23,B=NULL)) 289 | 290 | fit_Pois=LaplacesDemon(Model=Model_Pois,Data=Data_Pois,Initial.Values=2,Covar=NULL,Iterations=niter,Status=niter%/%10,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.23,B=NULL)) 291 | Model_joint_WBIC=function(parm,Data){ 292 | ret=Model_joint(parm,Data) 293 | ret$LP=ret$LP/log(nrow(WHO_data)) 294 | ret 295 | } 296 | Model_Pois_WBIC=function(parm,Data){ 297 | ret=Model_Pois(parm,Data) 298 | ret$LP=ret$LP/log(nrow(WHO_data)) 299 | ret 300 | } 301 | WBfit_joint=LaplacesDemon(Model=Model_joint_WBIC,Data=Data_joint,Initial.Values=2,Covar=NULL,Iterations=niter,Status=niter%/%10,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.23,B=NULL)) 302 | WBfit_Pois=LaplacesDemon(Model=Model_Pois_WBIC,Data=Data_Pois,Initial.Values=2,Covar=NULL,Iterations=niter,Status=niter%/%10,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.23,B=NULL)) 303 | print(list(WBIC.NBinom=WBfit_joint$Summary2["Deviance","Mean"],WBIC.Pois=WBfit_Pois$Summary2["Deviance","Mean"])) 304 | ``` 305 | 306 | ### Offspring distributions for different $R_0$ and $k$ 307 | Negative-binomial offspring distributions corresponding to $(R_0=2.5, k=0.1)$ and other sets of values 308 | 309 | ```{r} 310 | # Show offspring distributions 311 | par(mfrow=c(2,3)) 312 | barplot(c(dnbinom(0:20,0.1,mu=2.5),NA,pnbinom(20,0.1,mu=2.5,lower.tail=F)),names.arg=c(0:20,NA,">20"),xlab="the number of secondary cases",ylab="probability",ylim=c(0,0.8)) 313 | legend("topright",c("R0 = 2.5 ","k = 0.1 "),bty="n") 314 | barplot(c(dnbinom(0:20,0.05,mu=2.5),NA,pnbinom(20,0.05,mu=2.5,lower.tail=F)),ylim=c(0,0.8),border="blue",col=NA,names.arg=c(0:20,NA,">20"),xlab="the number of secondary cases",ylab="probability") 315 | legend("topright",c("R0 = 2.5 ","k = 0.05 "),bty="n") 316 | barplot(c(dnbinom(0:20,0.2,mu=2.5),NA,pnbinom(20,0.2,mu=2.5,lower.tail=F)),ylim=c(0,0.8),border="red",col=NA,names.arg=c(0:20,NA,">20"),xlab="the number of secondary cases",ylab="probability") 317 | legend("topright",c("R0 = 2.5 ","k = 0.2 "),bty="n") 318 | 319 | barplot(c(dnbinom(0:20,0.1,mu=2.5),NA,pnbinom(20,0.1,mu=2.5,lower.tail=F)),names.arg=c(0:20,NA,">20"),xlab="the number of secondary cases",ylab="probability",ylim=c(0,0.8)) 320 | legend("topright",c("R0 = 2.5 ","k = 0.1 "),bty="n") 321 | barplot(c(dnbinom(0:20,0.1,mu=1.5),NA,pnbinom(20,0.1,mu=1.5,lower.tail=F)),ylim=c(0,0.8),border="blue",col=NA,names.arg=c(0:20,NA,">20"),xlab="the number of secondary cases",ylab="probability") 322 | legend("topright",c("R0 = 1.5 ","k = 0.1 "),bty="n") 323 | barplot(c(dnbinom(0:20,0.1,mu=5),NA,pnbinom(20,0.1,mu=5,lower.tail=F)),ylim=c(0,0.8),border="red",col=NA,names.arg=c(0:20,NA,">20"),xlab="the number of secondary cases",ylab="probability") 324 | legend("topright",c("R0 = 5 ","k = 0.1 "),bty="n") 325 | ``` 326 | 327 | ## Smaller reproduction number for imported cases 328 | Imported cases may exhibit a smaller reproduction number due to intervention measures such as isolation/quarantine. We accounted for this possibility by modifying the likelihood function $c(x;s)$ as 329 | $$ 330 | c_I(x;s)=\sum_{j=0}^x \operatorname{NB}(j;ks,\mu=sR_I)c(x-s;j). 331 | $$ 332 | where $R_I$ is the effective reproduction number for imported cases, which we varied (0.5, 0.8, 1.2) to estimate $k$. $R_0$ (the reproduction number for local cases) were assumed to be 2.5 throughout. 333 | 334 | ```{r} 335 | llextinct_importcontrol<-function(icases,lcases,R0,k){ 336 | if(length(icases)==0)return(0) 337 | tcases=lcases+icases 338 | lls=tcases*0 339 | for(i in 1:length(lls)){ 340 | ls=sapply(0:lcases[i],function(ioffsprings){ 341 | ll=dnbinom(ioffsprings,k*icases[i],mu=R0[1]*icases[i],log=T)+llextinct(ioffsprings,lcases[i]-ioffsprings,R0[2],k,F) 342 | return(ll) 343 | }) 344 | lls[i]=lls[i]+logSumExp(ls) 345 | } 346 | sum(lls,na.rm=T) 347 | } 348 | ``` 349 | 350 | ```{r} 351 | Data=list(N=13,mon.names=c("R0_imp","R0_loc","k"),parm.names="invk",R0=c(1,2.5),icases=icases,lcases=lcases,ocases=ocases,isextinct=isextinct) 352 | Model=function(parm,Data){ 353 | invk=interval(parm,0) 354 | lp=lltotal_R0(invk,Data$icases,Data$lcases,Data$isextinct,Data$R0,T) 355 | lp=lp+dnorm(invk,0,10,log=T) 356 | return(list(LP=lp,Dev=-2*lp,Monitor=c(Data$R0,1/invk),yhat=NULL,parm=invk)) 357 | } 358 | R0s=c(0.5,0.8,1.2) 359 | niter=10000 360 | set.seed(20) 361 | mcmcfits=lapply(R0s,function(R0){ 362 | Data$R0[1]=R0 363 | fit=LaplacesDemon(Model=Model,Data=Data,Initial.Values=50,Covar=NULL,Iterations=niter,Status=niter,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.2,B=NULL)) 364 | }) 365 | 366 | k_mcmc=sapply(mcmcfits,function(x){x$Monitor[(niter%/%20):(niter%/%10),3]}) 367 | ll_mcmc=sapply(mcmcfits,function(x){-x$Deviance[(niter%/%20):(niter%/%10)]/2}) 368 | ``` 369 | 370 | ```{r} 371 | colnames(k_mcmc)=paste("k (R_I = ", c(0.5,0.8,1.2),")") 372 | apply(k_mcmc,2,quantile,c(0.025,0.5,0.975)) 373 | ``` 374 | 375 | ### Simulation of underreporting 376 | To investigate the effect of potential underreporting of cases, simulational dataset was generated and the overdispersion parameter $k$ was estimated by the maximum likelihood estimation. For each country in the WHO situation report dataset, the reporting probability $q_i$ was sampled from a beta distribution and the true number of imported cases were sampled based on the observed number and the sampled $q_i$. Three generations of transmission chains were drawn with a negative-binomial offspring distribution where $R_0=2.5$ and $k=0.1$ to provide the observed local cases given the same reporting probability $q_i$. 377 | 378 | ```{r} 379 | R0=2.5;k=0.1 380 | sim_data=function(icases,R0,k,betaparm=NULL){ 381 | generations=numeric(length(icases))+3#sample(2:4,length(icases),T)+1 382 | if(is.null(betaparm)){reporting=numeric(length(icases))+1 383 | }else{reporting=rbeta(length(icases),betaparm[1],betaparm[2])} 384 | icases_all=rnbinom(length(icases),icases+1,reporting)+icases 385 | sapply(1:length(icases),function(i){sim_cluster(icases[i],icases_all[i],generations[i],reporting[i],R0,k)}) 386 | } 387 | sim_cluster=function(icase,icase_all,generation,reporting,R0,k){ 388 | recursive_nb=function(ts,generation,R0,k){ 389 | if(length(ts)==generation){return(ts)} 390 | else if(ts[length(ts)]==0){ 391 | return(c(ts,numeric(generation-length(ts)))) 392 | }else{ 393 | ts=c(ts,rnbinom(1,k*ts[length(ts)],k/(R0+k))) 394 | return(recursive_nb(ts,generation,R0,k)) 395 | } 396 | } 397 | tseries=recursive_nb(icase_all,generation,R0,k) 398 | ts_obs=rbinom(length(tseries),tseries,reporting) 399 | c(icase,sum(ts_obs[-1]),ts_obs[length(ts_obs)]==0) 400 | } 401 | estim_k=function(times,R0,betaparm=NULL){ 402 | sapply(1:times,function(x){ 403 | data=sim_data(icases,R0,k,betaparm) 404 | ll=function(invk){-lltotal_R0(invk,data[1,],data[2,],as.logical(data[3,]),R0)} 405 | 1/optim(fn=ll,par=10,method="Brent",lower=1e-2,upper=1e3)$par 406 | }) 407 | } 408 | 409 | set.seed(20) 410 | estims=sapply(c(8,5,2),function(x){estim_k(500,2.5,c(x,10-x))}) 411 | estims=cbind(estim_k(500,2.5),estims) 412 | colnames(estims)=c("1 (constant)","beta(8,2)","beta(5,5)","beta(2,8)") 413 | ``` 414 | 415 | ```{r} 416 | # plot 417 | boxplot(estims,ylim=c(0,2),col="lightgray",ylab="overdispersion parameter k",xlab="distribution of reporting probability") 418 | abline(h=0.1,lty=2,col="blue") 419 | betas=cbind(dbeta(0:100/100,8,2),dbeta(0:100/100,5,5),dbeta(0:100/100,2,8)) 420 | colnames(betas)=colnames(estims)[-1] 421 | matplot(x=0:100/100,betas,type="l",ylim=c(0,5),lty=1,col=2:4,xlab="reporting probability",ylab="density") 422 | legend("topright",col=2:4,legend=paste(colnames(betas)," "),bty="n",lty=1,y.intersp=2) 423 | ``` 424 | 425 | The same procedure was repeated where the reporting probability for the imported cases was assumed to be 100%. 426 | 427 | ```{r} 428 | # overwrite sim_data to assume 100% reporting for imported cases 429 | sim_data=function(icases,R0,k,betaparm=NULL){ 430 | generations=numeric(length(icases))+3#sample(2:4,length(icases),T)+1 431 | if(is.null(betaparm)){reporting=numeric(length(icases))+1 432 | }else{reporting=rbeta(length(icases),betaparm[1],betaparm[2])} 433 | icases_all=icases 434 | sapply(1:length(icases),function(i){sim_cluster(icases[i],icases_all[i],generations[i],reporting[i],R0,k)}) 435 | } 436 | set.seed(19) 437 | estims_all=sapply(c(8,5,2),function(x){estim_k(500,2.5,c(x,10-x))}) 438 | estims_all=cbind(estim_k(500,2.5),estims_all) 439 | colnames(estims_all)=c("1 (constant)","beta(8,2)","beta(5,5)","beta(2,8)") 440 | 441 | boxplot(estims_all,ylim=c(0,0.5),col="lightgray",ylab="overdispersion parameter k",xlab="distribution of reporting probability") 442 | abline(h=0.1,lty=2,col="blue") 443 | betas=cbind(dbeta(0:100/100,8,2),dbeta(0:100/100,5,5),dbeta(0:100/100,2,8)) 444 | colnames(betas)=colnames(estims)[-1] 445 | matplot(x=0:100/100,betas,type="l",ylim=c(0,5),lty=1,col=2:4,xlab="reporting probability",ylab="density") 446 | legend("topright",col=2:4,legend=paste(colnames(betas)," "),bty="n",lty=1,y.intersp=2) 447 | ``` 448 | -------------------------------------------------------------------------------- /src/COVID19_clustersize.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Estimating the overdispersion in COVID-19 transmission using outbreak sizes outside China\n", 8 | "### Akira Endo, Centre for the Mathematical Modelling of Infectious Diseases COVID-19 Working Group, Adam Kucharski, Sebastian Funk\n", 9 | "## Background\n", 10 | "\n", 11 | "A novel coronavirus disease (COVID-19) outbreak, which is considered to be associated with a market in Wuhan, China, is now affecting a number of countries worldwide ([Zhu et al.](https://doi.org/10.1056/NEJMoa2001017)). Substantial amount of human-to-human transmissions are being observed; the basic reproduction number $R_0$ (the average number of secondary transmissions caused by a single primary case) has been estimated around 2-3 ([Zhao et al.](https://doi.org/10.1016/j.ijid.2020.01.050)). More than 30 countries have observed confirmed cases of COVID-19. A few countries have already shifted from the containment phase to the mitigation phase, with a substantial number of locally acquired cases (including those whose epidemiological link is untraceable). On the other hand, there are countries where a number of imported cases were ascertained but not as many secondary cases as one might expect with an $R_0$ value of 2-3.\n", 12 | "\n", 13 | "This suggests that not all symptomatic cases cause a secondary transmission, which was also suggested in the past coronavirus outbreaks (SARS/MERS). Such high variation in the distribution of the number of secondary transmissions, so-called superspreading events, is critical information in the epidemic control strategy ([Lloyd-Smith et al.](https://doi.org/10.1038/nature04153)). High overdispersion in the offspring distribution suggests that most cases do not contribute to the expansion of the epidemic, thereby highlighting the importance of containment efforts to prevent superspreading events from happening.\n", 14 | "\n", 15 | "Here we estimate the amount of overdispersion, or superspreading, by using a mathematical model of transmission that is characterised $R_0$ and the overdispersion parameter $k$ of a negative binomial branching process. We fit this model to worldwide data on COVID-19 cases to estimate $k$ given the likely range of $R_0$ and interpret this in the context of superspreading." 16 | ] 17 | }, 18 | { 19 | "cell_type": "markdown", 20 | "metadata": {}, 21 | "source": [ 22 | "## Method\n", 23 | "Assume that the offspring distribution for COVID-19 cases is an i.i.d. negative-binomial distribution. The probability mass function for the final cluster size resulting from $s$ initial cases is, according to [Blumberg et al.](https://doi.org/10.1371/journal.ppat.1004452), given by\n", 24 | "$$\n", 25 | "c(x;s)=P(X=x;s)=\\frac{ks}{kx+x-s}\\binom{kx+x-s}{x-s}\\frac{\\left(\\frac{R_0} k\\right)^{x-s}}{\\left(1+\\frac{R_0} k\\right)^{kx+x-s}}.\n", 26 | "$$\n", 27 | "\n", 28 | "If the observed case counts are part of an ongoing outbreak in a country, cluster sizes may grow in the future. To address this issue, we adjusted the likelihood corresponding those countries with ongoing outbreak by only using the condition that the final cluster size of such a country has to be larger than the currently observed number of cases. The corresponding likelihood function is\n", 29 | "$$\n", 30 | "c_\\mathrm{o}(x;s)=P(X\\geq x;s)=1-\\sum_{m=0}^{x}c(m;s)+c(x;s)\n", 31 | "$$\n", 32 | "\n", 33 | "### Defining countries with ongoing outbreak and total likelihood\n", 34 | "We assumed that the growth of a cluster in a country had ceased if 7 days are passed since the latest reported cases (denoted by $A$). We applied the final size likelihood $c(x;s)$ to those countries and $c_\\mathrm{o}(x;s)$ to the rest of the countries (countries with ongoing outbreak: $B$).\n", 35 | "\n", 36 | "The total likelihood is\n", 37 | "$$\n", 38 | "L(R_0,k)=\\prod_{i\\in A}P(X=x_i;s_i)\\prod_{i\\in B}P(X\\geq x_i;s_i)\n", 39 | "$$" 40 | ] 41 | }, 42 | { 43 | "cell_type": "markdown", 44 | "metadata": {}, 45 | "source": [ 46 | "### Data source\n", 47 | "We extracted the number of imported/local cases in the affected countries from the [WHO situation report 38](https://www.who.int/docs/default-source/coronaviruse/situation-reports/20200227-sitrep-38-covid-19.pdf) published on 27 February 2020, which, at the time of writing, is the latest report of the number of imported/local cases in each country (from the situation report 40, WHO no longer reports the number of cases stratified by the site of infection). We defined imported cases as the cases whose likely site of infection is outside the reporting country, and the local cases as those whose likely site of infection is inside the reporting country. Those whose site of infection under investigation were excluded from the analysis. In Egypt and Iran, no imported cases have been confirmed which cause the likelihood value to be zero. Data in these two countries were excluded.\n", 48 | "\n", 49 | "To distinguish between countries with and without an ongoing outbreak, we extracted daily case counts from an [online resource (COVID2019.app)](https://docs.google.com/spreadsheets/d/1Z7VQ5xlf3BaTx_LBBblsW4hLoGYWnZyog3jqsS9Dbgc) and determined the dates of the latest case confirmation for each country (as of 27 February)." 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 1, 55 | "metadata": {}, 56 | "outputs": [], 57 | "source": [ 58 | "library(repr)\n", 59 | "options(repr.plot.width=6, repr.plot.height=5)\n", 60 | "# options(jupyter.plot_mimetypes = \"image/svg+xml\") \n", 61 | "currdate=as.Date(\"2020-2-27\")\n", 62 | "# buffer period: we assume the growth of a cluster is ceased when this period has been passed since the latest case report\n", 63 | "buffer=7" 64 | ] 65 | }, 66 | { 67 | "cell_type": "code", 68 | "execution_count": 2, 69 | "metadata": {}, 70 | "outputs": [ 71 | { 72 | "data": { 73 | "text/html": [ 74 | "\n", 75 | "\n", 76 | "\n", 77 | "\t\n", 78 | "\t\n", 79 | "\n", 80 | "\n", 81 | "\t\n", 82 | "\t\n", 83 | "\t\n", 84 | "\t\n", 85 | "\t\n", 86 | "\t\n", 87 | "\t\n", 88 | "\t\n", 89 | "\t\n", 90 | "\t\n", 91 | "\t\n", 92 | "\t\n", 93 | "\t\n", 94 | "\t\n", 95 | "\t\n", 96 | "\t\n", 97 | "\t\n", 98 | "\t\n", 99 | "\t\n", 100 | "\t\n", 101 | "\t\n", 102 | "\t\n", 103 | "\t\n", 104 | "\t\n", 105 | "\t\n", 106 | "\t\n", 107 | "\t\n", 108 | "\t\n", 109 | "\t\n", 110 | "\t\n", 111 | "\t\n", 112 | "\t\n", 113 | "\t\n", 114 | "\t\n", 115 | "\t\n", 116 | "\t\n", 117 | "\t\n", 118 | "\t\n", 119 | "\t\n", 120 | "\t\n", 121 | "\t\n", 122 | "\t\n", 123 | "\t\n", 124 | "\t\n", 125 | "\t\n", 126 | "\t\n", 127 | "\n", 128 | "
A data.frame: 46 × 7
TotalImportedLocalUnknownDeathlatestdateongoingbranches
<int><int><int><int><int><date><dbl>
South Korea1766176051144132020-02-271715
Japan 18639129 18 32020-02-27 112
Singapore 9324 69 0 02020-02-27 12
Australia 2320 3 0 02020-02-26 8
Malaysia 2220 2 0 02020-02-27 1
Vietnam 16 8 8 0 02020-02-13 0
Philippines 3 3 0 0 12020-02-05 0
Cambodia 1 1 0 0 02020-01-30 0
Thailand 4023 7 10 02020-02-26 5
India 3 3 0 0 02020-02-03 0
Nepal 1 1 0 0 02020-01-24 0
Sri Lanka 1 1 0 0 02020-01-27 0
USA 5956 2 1 02020-02-26 45
Canada 11 9 1 1 02020-02-27 6
Brazil 1 1 0 0 02020-02-26 1
Italy 400 3121 276122020-02-27 647
Germany 21 3 14 4 02020-02-27 35
France 18 8 7 3 22020-02-27 26
UK 1312 1 0 02020-02-27 7
Spain 1210 1 1 02020-02-27 25
Croatia 3 2 1 0 02020-02-26 3
Austria 2 2 0 0 02020-02-27 5
Finland 2 2 0 0 02020-02-26 1
Israel 2 2 0 0 02020-02-27 3
Russia 2 2 0 0 02020-01-31 0
Sweden 2 2 0 0 02020-02-27 6
Belgium 1 1 0 0 02020-02-04 0
Denmark 1 1 0 0 02020-02-27 1
Estonia 1 0 0 1 02020-02-27 1
Georgia 1 1 0 0 02020-02-26 1
Greece 1 1 0 0 02020-02-27 3
North Macedonia 1 1 0 0 02020-02-26 1
Norway 1 1 0 0 02020-02-27 4
Romania 1 1 0 0 02020-02-26 1
Switzerland 1 1 0 0 02020-02-27 8
Iran 141 0 28 113222020-02-27 243
Kuwait 4343 0 0 02020-02-27 43
Bahrain 3333 0 0 02020-02-26 33
UAE 13 8 5 0 02020-02-27 10
Iraq 6 6 0 0 02020-02-27 7
Oman 4 4 0 0 02020-02-27 6
Lebanon 1 1 0 0 02020-02-27 3
Pakistan 2 1 0 1 02020-02-26 2
Afghanistan 1 1 0 0 02020-02-24 1
Egypt 1 0 1 0 02020-02-14 0
Algeria 1 1 0 0 02020-02-25 1
\n" 129 | ], 130 | "text/latex": [ 131 | "A data.frame: 46 × 7\n", 132 | "\\begin{tabular}{r|lllllll}\n", 133 | " & Total & Imported & Local & Unknown & Death & latestdate & ongoingbranches\\\\\n", 134 | " & & & & & & & \\\\\n", 135 | "\\hline\n", 136 | "\tSouth Korea & 1766 & 17 & 605 & 1144 & 13 & 2020-02-27 & 1715\\\\\n", 137 | "\tJapan & 186 & 39 & 129 & 18 & 3 & 2020-02-27 & 112\\\\\n", 138 | "\tSingapore & 93 & 24 & 69 & 0 & 0 & 2020-02-27 & 12\\\\\n", 139 | "\tAustralia & 23 & 20 & 3 & 0 & 0 & 2020-02-26 & 8\\\\\n", 140 | "\tMalaysia & 22 & 20 & 2 & 0 & 0 & 2020-02-27 & 1\\\\\n", 141 | "\tVietnam & 16 & 8 & 8 & 0 & 0 & 2020-02-13 & 0\\\\\n", 142 | "\tPhilippines & 3 & 3 & 0 & 0 & 1 & 2020-02-05 & 0\\\\\n", 143 | "\tCambodia & 1 & 1 & 0 & 0 & 0 & 2020-01-30 & 0\\\\\n", 144 | "\tThailand & 40 & 23 & 7 & 10 & 0 & 2020-02-26 & 5\\\\\n", 145 | "\tIndia & 3 & 3 & 0 & 0 & 0 & 2020-02-03 & 0\\\\\n", 146 | "\tNepal & 1 & 1 & 0 & 0 & 0 & 2020-01-24 & 0\\\\\n", 147 | "\tSri Lanka & 1 & 1 & 0 & 0 & 0 & 2020-01-27 & 0\\\\\n", 148 | "\tUSA & 59 & 56 & 2 & 1 & 0 & 2020-02-26 & 45\\\\\n", 149 | "\tCanada & 11 & 9 & 1 & 1 & 0 & 2020-02-27 & 6\\\\\n", 150 | "\tBrazil & 1 & 1 & 0 & 0 & 0 & 2020-02-26 & 1\\\\\n", 151 | "\tItaly & 400 & 3 & 121 & 276 & 12 & 2020-02-27 & 647\\\\\n", 152 | "\tGermany & 21 & 3 & 14 & 4 & 0 & 2020-02-27 & 35\\\\\n", 153 | "\tFrance & 18 & 8 & 7 & 3 & 2 & 2020-02-27 & 26\\\\\n", 154 | "\tUK & 13 & 12 & 1 & 0 & 0 & 2020-02-27 & 7\\\\\n", 155 | "\tSpain & 12 & 10 & 1 & 1 & 0 & 2020-02-27 & 25\\\\\n", 156 | "\tCroatia & 3 & 2 & 1 & 0 & 0 & 2020-02-26 & 3\\\\\n", 157 | "\tAustria & 2 & 2 & 0 & 0 & 0 & 2020-02-27 & 5\\\\\n", 158 | "\tFinland & 2 & 2 & 0 & 0 & 0 & 2020-02-26 & 1\\\\\n", 159 | "\tIsrael & 2 & 2 & 0 & 0 & 0 & 2020-02-27 & 3\\\\\n", 160 | "\tRussia & 2 & 2 & 0 & 0 & 0 & 2020-01-31 & 0\\\\\n", 161 | "\tSweden & 2 & 2 & 0 & 0 & 0 & 2020-02-27 & 6\\\\\n", 162 | "\tBelgium & 1 & 1 & 0 & 0 & 0 & 2020-02-04 & 0\\\\\n", 163 | "\tDenmark & 1 & 1 & 0 & 0 & 0 & 2020-02-27 & 1\\\\\n", 164 | "\tEstonia & 1 & 0 & 0 & 1 & 0 & 2020-02-27 & 1\\\\\n", 165 | "\tGeorgia & 1 & 1 & 0 & 0 & 0 & 2020-02-26 & 1\\\\\n", 166 | "\tGreece & 1 & 1 & 0 & 0 & 0 & 2020-02-27 & 3\\\\\n", 167 | "\tNorth Macedonia & 1 & 1 & 0 & 0 & 0 & 2020-02-26 & 1\\\\\n", 168 | "\tNorway & 1 & 1 & 0 & 0 & 0 & 2020-02-27 & 4\\\\\n", 169 | "\tRomania & 1 & 1 & 0 & 0 & 0 & 2020-02-26 & 1\\\\\n", 170 | "\tSwitzerland & 1 & 1 & 0 & 0 & 0 & 2020-02-27 & 8\\\\\n", 171 | "\tIran & 141 & 0 & 28 & 113 & 22 & 2020-02-27 & 243\\\\\n", 172 | "\tKuwait & 43 & 43 & 0 & 0 & 0 & 2020-02-27 & 43\\\\\n", 173 | "\tBahrain & 33 & 33 & 0 & 0 & 0 & 2020-02-26 & 33\\\\\n", 174 | "\tUAE & 13 & 8 & 5 & 0 & 0 & 2020-02-27 & 10\\\\\n", 175 | "\tIraq & 6 & 6 & 0 & 0 & 0 & 2020-02-27 & 7\\\\\n", 176 | "\tOman & 4 & 4 & 0 & 0 & 0 & 2020-02-27 & 6\\\\\n", 177 | "\tLebanon & 1 & 1 & 0 & 0 & 0 & 2020-02-27 & 3\\\\\n", 178 | "\tPakistan & 2 & 1 & 0 & 1 & 0 & 2020-02-26 & 2\\\\\n", 179 | "\tAfghanistan & 1 & 1 & 0 & 0 & 0 & 2020-02-24 & 1\\\\\n", 180 | "\tEgypt & 1 & 0 & 1 & 0 & 0 & 2020-02-14 & 0\\\\\n", 181 | "\tAlgeria & 1 & 1 & 0 & 0 & 0 & 2020-02-25 & 1\\\\\n", 182 | "\\end{tabular}\n" 183 | ], 184 | "text/markdown": [ 185 | "\n", 186 | "A data.frame: 46 × 7\n", 187 | "\n", 188 | "| | Total <int> | Imported <int> | Local <int> | Unknown <int> | Death <int> | latestdate <date> | ongoingbranches <dbl> |\n", 189 | "|---|---|---|---|---|---|---|---|\n", 190 | "| South Korea | 1766 | 17 | 605 | 1144 | 13 | 2020-02-27 | 1715 |\n", 191 | "| Japan | 186 | 39 | 129 | 18 | 3 | 2020-02-27 | 112 |\n", 192 | "| Singapore | 93 | 24 | 69 | 0 | 0 | 2020-02-27 | 12 |\n", 193 | "| Australia | 23 | 20 | 3 | 0 | 0 | 2020-02-26 | 8 |\n", 194 | "| Malaysia | 22 | 20 | 2 | 0 | 0 | 2020-02-27 | 1 |\n", 195 | "| Vietnam | 16 | 8 | 8 | 0 | 0 | 2020-02-13 | 0 |\n", 196 | "| Philippines | 3 | 3 | 0 | 0 | 1 | 2020-02-05 | 0 |\n", 197 | "| Cambodia | 1 | 1 | 0 | 0 | 0 | 2020-01-30 | 0 |\n", 198 | "| Thailand | 40 | 23 | 7 | 10 | 0 | 2020-02-26 | 5 |\n", 199 | "| India | 3 | 3 | 0 | 0 | 0 | 2020-02-03 | 0 |\n", 200 | "| Nepal | 1 | 1 | 0 | 0 | 0 | 2020-01-24 | 0 |\n", 201 | "| Sri Lanka | 1 | 1 | 0 | 0 | 0 | 2020-01-27 | 0 |\n", 202 | "| USA | 59 | 56 | 2 | 1 | 0 | 2020-02-26 | 45 |\n", 203 | "| Canada | 11 | 9 | 1 | 1 | 0 | 2020-02-27 | 6 |\n", 204 | "| Brazil | 1 | 1 | 0 | 0 | 0 | 2020-02-26 | 1 |\n", 205 | "| Italy | 400 | 3 | 121 | 276 | 12 | 2020-02-27 | 647 |\n", 206 | "| Germany | 21 | 3 | 14 | 4 | 0 | 2020-02-27 | 35 |\n", 207 | "| France | 18 | 8 | 7 | 3 | 2 | 2020-02-27 | 26 |\n", 208 | "| UK | 13 | 12 | 1 | 0 | 0 | 2020-02-27 | 7 |\n", 209 | "| Spain | 12 | 10 | 1 | 1 | 0 | 2020-02-27 | 25 |\n", 210 | "| Croatia | 3 | 2 | 1 | 0 | 0 | 2020-02-26 | 3 |\n", 211 | "| Austria | 2 | 2 | 0 | 0 | 0 | 2020-02-27 | 5 |\n", 212 | "| Finland | 2 | 2 | 0 | 0 | 0 | 2020-02-26 | 1 |\n", 213 | "| Israel | 2 | 2 | 0 | 0 | 0 | 2020-02-27 | 3 |\n", 214 | "| Russia | 2 | 2 | 0 | 0 | 0 | 2020-01-31 | 0 |\n", 215 | "| Sweden | 2 | 2 | 0 | 0 | 0 | 2020-02-27 | 6 |\n", 216 | "| Belgium | 1 | 1 | 0 | 0 | 0 | 2020-02-04 | 0 |\n", 217 | "| Denmark | 1 | 1 | 0 | 0 | 0 | 2020-02-27 | 1 |\n", 218 | "| Estonia | 1 | 0 | 0 | 1 | 0 | 2020-02-27 | 1 |\n", 219 | "| Georgia | 1 | 1 | 0 | 0 | 0 | 2020-02-26 | 1 |\n", 220 | "| Greece | 1 | 1 | 0 | 0 | 0 | 2020-02-27 | 3 |\n", 221 | "| North Macedonia | 1 | 1 | 0 | 0 | 0 | 2020-02-26 | 1 |\n", 222 | "| Norway | 1 | 1 | 0 | 0 | 0 | 2020-02-27 | 4 |\n", 223 | "| Romania | 1 | 1 | 0 | 0 | 0 | 2020-02-26 | 1 |\n", 224 | "| Switzerland | 1 | 1 | 0 | 0 | 0 | 2020-02-27 | 8 |\n", 225 | "| Iran | 141 | 0 | 28 | 113 | 22 | 2020-02-27 | 243 |\n", 226 | "| Kuwait | 43 | 43 | 0 | 0 | 0 | 2020-02-27 | 43 |\n", 227 | "| Bahrain | 33 | 33 | 0 | 0 | 0 | 2020-02-26 | 33 |\n", 228 | "| UAE | 13 | 8 | 5 | 0 | 0 | 2020-02-27 | 10 |\n", 229 | "| Iraq | 6 | 6 | 0 | 0 | 0 | 2020-02-27 | 7 |\n", 230 | "| Oman | 4 | 4 | 0 | 0 | 0 | 2020-02-27 | 6 |\n", 231 | "| Lebanon | 1 | 1 | 0 | 0 | 0 | 2020-02-27 | 3 |\n", 232 | "| Pakistan | 2 | 1 | 0 | 1 | 0 | 2020-02-26 | 2 |\n", 233 | "| Afghanistan | 1 | 1 | 0 | 0 | 0 | 2020-02-24 | 1 |\n", 234 | "| Egypt | 1 | 0 | 1 | 0 | 0 | 2020-02-14 | 0 |\n", 235 | "| Algeria | 1 | 1 | 0 | 0 | 0 | 2020-02-25 | 1 |\n", 236 | "\n" 237 | ], 238 | "text/plain": [ 239 | " Total Imported Local Unknown Death latestdate ongoingbranches\n", 240 | "South Korea 1766 17 605 1144 13 2020-02-27 1715 \n", 241 | "Japan 186 39 129 18 3 2020-02-27 112 \n", 242 | "Singapore 93 24 69 0 0 2020-02-27 12 \n", 243 | "Australia 23 20 3 0 0 2020-02-26 8 \n", 244 | "Malaysia 22 20 2 0 0 2020-02-27 1 \n", 245 | "Vietnam 16 8 8 0 0 2020-02-13 0 \n", 246 | "Philippines 3 3 0 0 1 2020-02-05 0 \n", 247 | "Cambodia 1 1 0 0 0 2020-01-30 0 \n", 248 | "Thailand 40 23 7 10 0 2020-02-26 5 \n", 249 | "India 3 3 0 0 0 2020-02-03 0 \n", 250 | "Nepal 1 1 0 0 0 2020-01-24 0 \n", 251 | "Sri Lanka 1 1 0 0 0 2020-01-27 0 \n", 252 | "USA 59 56 2 1 0 2020-02-26 45 \n", 253 | "Canada 11 9 1 1 0 2020-02-27 6 \n", 254 | "Brazil 1 1 0 0 0 2020-02-26 1 \n", 255 | "Italy 400 3 121 276 12 2020-02-27 647 \n", 256 | "Germany 21 3 14 4 0 2020-02-27 35 \n", 257 | "France 18 8 7 3 2 2020-02-27 26 \n", 258 | "UK 13 12 1 0 0 2020-02-27 7 \n", 259 | "Spain 12 10 1 1 0 2020-02-27 25 \n", 260 | "Croatia 3 2 1 0 0 2020-02-26 3 \n", 261 | "Austria 2 2 0 0 0 2020-02-27 5 \n", 262 | "Finland 2 2 0 0 0 2020-02-26 1 \n", 263 | "Israel 2 2 0 0 0 2020-02-27 3 \n", 264 | "Russia 2 2 0 0 0 2020-01-31 0 \n", 265 | "Sweden 2 2 0 0 0 2020-02-27 6 \n", 266 | "Belgium 1 1 0 0 0 2020-02-04 0 \n", 267 | "Denmark 1 1 0 0 0 2020-02-27 1 \n", 268 | "Estonia 1 0 0 1 0 2020-02-27 1 \n", 269 | "Georgia 1 1 0 0 0 2020-02-26 1 \n", 270 | "Greece 1 1 0 0 0 2020-02-27 3 \n", 271 | "North Macedonia 1 1 0 0 0 2020-02-26 1 \n", 272 | "Norway 1 1 0 0 0 2020-02-27 4 \n", 273 | "Romania 1 1 0 0 0 2020-02-26 1 \n", 274 | "Switzerland 1 1 0 0 0 2020-02-27 8 \n", 275 | "Iran 141 0 28 113 22 2020-02-27 243 \n", 276 | "Kuwait 43 43 0 0 0 2020-02-27 43 \n", 277 | "Bahrain 33 33 0 0 0 2020-02-26 33 \n", 278 | "UAE 13 8 5 0 0 2020-02-27 10 \n", 279 | "Iraq 6 6 0 0 0 2020-02-27 7 \n", 280 | "Oman 4 4 0 0 0 2020-02-27 6 \n", 281 | "Lebanon 1 1 0 0 0 2020-02-27 3 \n", 282 | "Pakistan 2 1 0 1 0 2020-02-26 2 \n", 283 | "Afghanistan 1 1 0 0 0 2020-02-24 1 \n", 284 | "Egypt 1 0 1 0 0 2020-02-14 0 \n", 285 | "Algeria 1 1 0 0 0 2020-02-25 1 " 286 | ] 287 | }, 288 | "metadata": {}, 289 | "output_type": "display_data" 290 | } 291 | ], 292 | "source": [ 293 | "# Data\n", 294 | "# Imported and local cases outside China\n", 295 | "# Source (accessed 4/3/2020): https://www.who.int/docs/default-source/coronaviruse/situation-reports/20200227-sitrep-38-covid-19.pdf\n", 296 | "WHO_data=read.csv(\"../data/bycountries_27Feb2020.csv\")\n", 297 | "WHO_data[,\"ImportedChina\"]=WHO_data[,\"ImportedChina\"]+WHO_data[,\"ImportedOthers\"]\n", 298 | "WHO_data=WHO_data[,-4]\n", 299 | "colnames(WHO_data)[3]=\"Imported\"\n", 300 | "rownames(WHO_data)=WHO_data[,1]\n", 301 | "\n", 302 | "# Daily confirmed cases (by date of confirmation)\n", 303 | "# Source (accessed 18/2/2020): https://docs.google.com/spreadsheets/d/1Z7VQ5xlf3BaTx_LBBblsW4hLoGYWnZyog3jqsS9Dbgc\n", 304 | "daily_data=read.csv(\"../data/dailycases_international_27Feb2020.csv\")\n", 305 | "countrynames=daily_data[-(1:3),2]\n", 306 | "names(countrynames)=as.character(countrynames)\n", 307 | "counts=suppressWarnings(apply(t(daily_data[-(1:2),-(1:2)]),1:2,as.numeric))\n", 308 | "dates=as.Date(\"2020-1-13\")+1:nrow(counts)-1\n", 309 | "dailydata=cbind(dates,as.data.frame(counts))\n", 310 | "dailydata=dailydata[,-2]\n", 311 | "rownames(dailydata)=dailydata[,1]\n", 312 | "colnames(dailydata)=c(\"date\",as.character(countrynames))\n", 313 | "\n", 314 | "\n", 315 | "# get dates of last reported case for each country\n", 316 | "dateidx=seq(as.Date(\"2020-1-13\"),currdate,by=\"days\")\n", 317 | "dailydata_tillcurrdate=dailydata[as.character(dateidx),-1]\n", 318 | "latestdates=as.Date(apply(dailydata_tillcurrdate,2,function(x){\n", 319 | " lastreported=tail(which(!(x %in% NA)),1)\n", 320 | " if(length(lastreported)==0){NA}\n", 321 | " else{as.character(dailydata[lastreported,1])}\n", 322 | "}))\n", 323 | "latestdates=data.frame(countrynames,latestdates)\n", 324 | "rownames(latestdates)=as.character(countrynames)\n", 325 | "\n", 326 | "# get the number of cases within the buffer period\n", 327 | "bufferdays=seq(currdate-buffer,currdate,by=\"days\")\n", 328 | "ongoingbranches=colSums(dailydata[as.character(bufferdays),-1],na.rm=T)\n", 329 | "\n", 330 | "# reorder latestdates and ongoingbranches according to WHO data\n", 331 | "latestdates_WHO=latestdates[rownames(WHO_data),2]\n", 332 | "ongoingbranches_WHO=ongoingbranches[rownames(WHO_data)]\n", 333 | "WHO_data=cbind(WHO_data,latestdate=latestdates_WHO,ongoingbranches=ongoingbranches_WHO)\n", 334 | "WHO_data[,-1]\n", 335 | "WHO_data=WHO_data[!rownames(WHO_data) %in% c(\"Egypt\",\"Iran\",\"Estonia\"),] # exclude Egypt and Iran, where imported cases are reported to be zero" 336 | ] 337 | }, 338 | { 339 | "cell_type": "code", 340 | "execution_count": 3, 341 | "metadata": {}, 342 | "outputs": [], 343 | "source": [ 344 | "# label countries with/without cases in the last (buffer) days\n", 345 | "isextinct=WHO_data$latestdate\n", 647 | "A matrix: 2 × 7 of type dbl\n", 648 | "\n", 649 | "\tMeanSDMCSEESSLBMedianUB\n", 650 | "\n", 651 | "\n", 652 | "\tR05.065063332.841844630.127371174649.54881.403343504.4032965711.5525352\n", 653 | "\tk0.093829230.045972270.002015266631.57430.043559450.08145725 0.2088263\n", 654 | "\n", 655 | "\n" 656 | ], 657 | "text/latex": [ 658 | "A matrix: 2 × 7 of type dbl\n", 659 | "\\begin{tabular}{r|lllllll}\n", 660 | " & Mean & SD & MCSE & ESS & LB & Median & UB\\\\\n", 661 | "\\hline\n", 662 | "\tR0 & 5.06506333 & 2.84184463 & 0.127371174 & 649.5488 & 1.40334350 & 4.40329657 & 11.5525352\\\\\n", 663 | "\tk & 0.09382923 & 0.04597227 & 0.002015266 & 631.5743 & 0.04355945 & 0.08145725 & 0.2088263\\\\\n", 664 | "\\end{tabular}\n" 665 | ], 666 | "text/markdown": [ 667 | "\n", 668 | "A matrix: 2 × 7 of type dbl\n", 669 | "\n", 670 | "| | Mean | SD | MCSE | ESS | LB | Median | UB |\n", 671 | "|---|---|---|---|---|---|---|---|\n", 672 | "| R0 | 5.06506333 | 2.84184463 | 0.127371174 | 649.5488 | 1.40334350 | 4.40329657 | 11.5525352 |\n", 673 | "| k | 0.09382923 | 0.04597227 | 0.002015266 | 631.5743 | 0.04355945 | 0.08145725 | 0.2088263 |\n", 674 | "\n" 675 | ], 676 | "text/plain": [ 677 | " Mean SD MCSE ESS LB Median UB \n", 678 | "R0 5.06506333 2.84184463 0.127371174 649.5488 1.40334350 4.40329657 11.5525352\n", 679 | "k 0.09382923 0.04597227 0.002015266 631.5743 0.04355945 0.08145725 0.2088263" 680 | ] 681 | }, 682 | "metadata": {}, 683 | "output_type": "display_data" 684 | }, 685 | { 686 | "data": { 687 | "image/png": "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\n", 688 | "text/plain": [ 689 | "plot without title" 690 | ] 691 | }, 692 | "metadata": {}, 693 | "output_type": "display_data" 694 | } 695 | ], 696 | "source": [ 697 | "plot(fit$Monitor[niter%/%20+1:(niter%/%20),1:2],xlim=c(0,20),ylim=c(0,0.5),yaxs=\"i\",xaxs=\"i\")\n", 698 | "abline(v=1,col=\"grey\",lty=2)\n", 699 | "fit$Summary2[c(\"R0\",\"k\"),]" 700 | ] 701 | }, 702 | { 703 | "cell_type": "markdown", 704 | "metadata": {}, 705 | "source": [ 706 | "## Conclusion\n", 707 | "We estimated overdispersion of the offspring distribution of COVID-19 from the number of imported/local cases in affected countries. The results suggested that the offspring distribution of COVID-19 is highly overdispersed. For the likely range of $R_0>2$, the overdispersion parameter $k$ was estimated to be around 0.1, suggesting that the majority of secondary transmission is caused by a very small fraction of individuals (80% of transmissions caused by ~10% of the total cases) ([Liu et al.](https://doi.org/10.1016/S0140-6736(20)30462-1)). This suggests that the effective reproduction number could be drastically reduced by interventions targeting potential superspreading events. From the current dataset and model, we were unable to simultaneously estimate $R_0$ and $k$. More detailed dataset on the epidemiological link between cases could improve these estimates in the future." 708 | ] 709 | }, 710 | { 711 | "cell_type": "markdown", 712 | "metadata": {}, 713 | "source": [ 714 | "## Additional analysis\n", 715 | "### Model comparison with a Poisson model\n", 716 | "The baseline negative-binomial branching process model was compared with a Poisson branching process model by the widely-applicable Bayesian information criterion (WBIC)." 717 | ] 718 | }, 719 | { 720 | "cell_type": "code", 721 | "execution_count": null, 722 | "metadata": {}, 723 | "outputs": [], 724 | "source": [ 725 | "# model comparison with a Poisson model\n", 726 | "Model_Pois=function(R0,Data){\n", 727 | " ret=Model_joint(c(R0,1e-10),Data)\n", 728 | " ret$parm=ret$parm[1]\n", 729 | " ret\n", 730 | "}\n", 731 | "Data_Pois=list(N=13,mon.names=c(\"R0\",\"k\"),parm.names=\"R0\",icases=icases,lcases=lcases,ocases=ocases,isextinct=isextinct)\n", 732 | "\n", 733 | "niter=10000\n", 734 | "fit_Pois=LaplacesDemon(Model=Model_Pois,Data=Data_Pois,Initial.Values=2,Covar=NULL,Iterations=niter,Status=niter%/%10,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.23,B=NULL))\n", 735 | "\n", 736 | "fit_Pois=LaplacesDemon(Model=Model_Pois,Data=Data_Pois,Initial.Values=2,Covar=NULL,Iterations=niter,Status=niter%/%10,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.23,B=NULL))\n", 737 | "Model_joint_WBIC=function(parm,Data){\n", 738 | " ret=Model_joint(parm,Data)\n", 739 | " ret$LP=ret$LP/log(nrow(WHO_data))\n", 740 | " ret\n", 741 | "}\n", 742 | "Model_Pois_WBIC=function(parm,Data){\n", 743 | " ret=Model_Pois(parm,Data)\n", 744 | " ret$LP=ret$LP/log(nrow(WHO_data))\n", 745 | " ret\n", 746 | "}\n", 747 | "WBfit_joint=LaplacesDemon(Model=Model_joint_WBIC,Data=Data_joint,Initial.Values=2,Covar=NULL,Iterations=niter,Status=niter%/%10,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.23,B=NULL))\n", 748 | "WBfit_Pois=LaplacesDemon(Model=Model_Pois_WBIC,Data=Data_Pois,Initial.Values=2,Covar=NULL,Iterations=niter,Status=niter%/%10,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.23,B=NULL))\n", 749 | "print(list(WBIC.NBinom=WBfit_joint$Summary2[\"Deviance\",\"Mean\"],WBIC.Pois=WBfit_Pois$Summary2[\"Deviance\",\"Mean\"]))" 750 | ] 751 | }, 752 | { 753 | "cell_type": "markdown", 754 | "metadata": {}, 755 | "source": [ 756 | "### Offspring distributions for different $R_0$ and $k$\n", 757 | "Negative-binomial offspring distributions corresponding to $(R_0=2.5, k=0.1)$ and other sets of values" 758 | ] 759 | }, 760 | { 761 | "cell_type": "code", 762 | "execution_count": 14, 763 | "metadata": {}, 764 | "outputs": [ 765 | { 766 | "data": { 767 | "image/png": "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\nElXorWgK/X5jF2pLCt3NKyZ0N6+Y0HPYmwjdz6sldD+votB/0zsJ3cwrKHQzr6TQU/GB2bpC\nt/IqCt3Kqyl08XGswkI38koK3cgrJvQnca1IS+h+Xi2h+3nVhO42ICZ0A0mhGyC0OAjtmzEL\n89pfN55Eha7mFRW6mldV6GoDokIXkBa6AEKLg9C+WX/ru/lAbDGhu3nFhO7mFRM6/cwsy7SE\n7ufVErqfF6FDg9DLMoQODUIvyxA6NAi9LBMTmkFhVvSYagl9u0FhvwExoRtICt0AocVBaN8g\n9CAI7RuEHgShfYPQgyC0bxB6EIT2DUIPgtC+QehBENo3CD3IjYV+cm13uiD0IHcW+j3nGYQe\nBKF9g9CDILRvEHoQhPYNQg+C0L5B6EEQ2jcIPQhC+2ZPoTf+X6WxQGjf7Cr0vxt8TiO0bxB6\nkNsL7fx+IUIPgtDv1z5B6EEQ+v3aJwg9CEK/X/tkz8cY6Ai97jEGT07t2EGse4xBLrTbM+lV\n/qWfmWVZJvQFF+/23mQ/71Po99zZ7P1O6uf9Ffq91BsHCH3+5/Tem3Qv9M4b3iy0w4/po4Q+\n9XMaoW1sF3o65exjZAuHCf3Rel1HLFwq9AVn0s6Efs4eqPXI+c3+g8LlNOWs69Qou5/lrBwU\nTtM1Wu9+aNgwKJynhbHi3m7vL3S3gabQP2ciP1j7cOJpe03o53TJMX0481xnUOhscZktffAs\n9JDnfaZ56z6E/lmwM9O8df9CVxYPMc1bP0bovPaXU9uVtJF3ZSiJMe/upo4Jnc2fk3fQw92Y\nsq2PRwAID0KDFOarHJKQNyzm69CKkDcuCF2AvHFB6ALkjQtCFyBvXBgUliBvWBQyAMwgNEiB\n0CAFQoMUCA1SIDRIgdAgBUKDFAgNUiA0SLGP0PXbpsU/JC7WTq2G0nTgH1qNQ965ZHXtk/Lu\n8gtL1ZbqyYo1aw3NzTjZv/Pkp4S8F+f1InRqfeXrUyizg8lbLPQudCotrdRufocx1YsugLxz\ngbu8FwjdOseqN1QtugDyzgXu8h4qdKotbb2Dq4MGN/uXvJ/l7vK6E7rcId0dTN7PUu9CV67D\nNANX+lM96F0CeZ+LPeY99hx6+B1c606IHVxZSt5eI+6E3u3Ce/Xauq8dTN5PyeraJ+X180sD\n2AGEBikQGqRAaJACoUEKhAYpEBqkQGiQAqFBCoQGKRAapEBokAKhQQqEBikQGqRAaJACoUEK\n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", 768 | "text/plain": [ 769 | "plot without title" 770 | ] 771 | }, 772 | "metadata": {}, 773 | "output_type": "display_data" 774 | } 775 | ], 776 | "source": [ 777 | "# Show offspring distributions\n", 778 | "par(mfrow=c(2,3))\n", 779 | "barplot(c(dnbinom(0:20,0.1,mu=2.5),NA,pnbinom(20,0.1,mu=2.5,lower.tail=F)),names.arg=c(0:20,NA,\">20\"),xlab=\"the number of secondary cases\",ylab=\"probability\",ylim=c(0,0.8))\n", 780 | "legend(\"topright\",c(\"R0 = 2.5 \",\"k = 0.1 \"),bty=\"n\")\n", 781 | "barplot(c(dnbinom(0:20,0.05,mu=2.5),NA,pnbinom(20,0.05,mu=2.5,lower.tail=F)),ylim=c(0,0.8),border=\"blue\",col=NA,names.arg=c(0:20,NA,\">20\"),xlab=\"the number of secondary cases\",ylab=\"probability\")\n", 782 | "legend(\"topright\",c(\"R0 = 2.5 \",\"k = 0.05 \"),bty=\"n\")\n", 783 | "barplot(c(dnbinom(0:20,0.2,mu=2.5),NA,pnbinom(20,0.2,mu=2.5,lower.tail=F)),ylim=c(0,0.8),border=\"red\",col=NA,names.arg=c(0:20,NA,\">20\"),xlab=\"the number of secondary cases\",ylab=\"probability\")\n", 784 | "legend(\"topright\",c(\"R0 = 2.5 \",\"k = 0.2 \"),bty=\"n\")\n", 785 | "\n", 786 | "barplot(c(dnbinom(0:20,0.1,mu=2.5),NA,pnbinom(20,0.1,mu=2.5,lower.tail=F)),names.arg=c(0:20,NA,\">20\"),xlab=\"the number of secondary cases\",ylab=\"probability\",ylim=c(0,0.8))\n", 787 | "legend(\"topright\",c(\"R0 = 2.5 \",\"k = 0.1 \"),bty=\"n\")\n", 788 | "barplot(c(dnbinom(0:20,0.1,mu=1.5),NA,pnbinom(20,0.1,mu=1.5,lower.tail=F)),ylim=c(0,0.8),border=\"blue\",col=NA,names.arg=c(0:20,NA,\">20\"),xlab=\"the number of secondary cases\",ylab=\"probability\")\n", 789 | "legend(\"topright\",c(\"R0 = 1.5 \",\"k = 0.1 \"),bty=\"n\")\n", 790 | "barplot(c(dnbinom(0:20,0.1,mu=5),NA,pnbinom(20,0.1,mu=5,lower.tail=F)),ylim=c(0,0.8),border=\"red\",col=NA,names.arg=c(0:20,NA,\">20\"),xlab=\"the number of secondary cases\",ylab=\"probability\")\n", 791 | "legend(\"topright\",c(\"R0 = 5 \",\"k = 0.1 \"),bty=\"n\")" 792 | ] 793 | }, 794 | { 795 | "cell_type": "markdown", 796 | "metadata": {}, 797 | "source": [ 798 | "## Smaller reproduction number for imported cases\n", 799 | "Imported cases may exhibit a smaller reproduction number due to intervention measures such as isolation/quarantine. We accounted for this possibility by modifying the likelihood function $c(x;s)$ as\n", 800 | "$$\n", 801 | "c_I(x;s)=\\sum_{j=0}^x \\operatorname{NB}(j;ks,\\mu=sR_I)c(x-s;j).\n", 802 | "$$\n", 803 | "where $R_I$ is the effective reproduction number for imported cases, which we varied (0.5, 0.8, 1.2) to estimate $k$. $R_0$ (the reproduction number for local cases) were assumed to be 2.5 throughout." 804 | ] 805 | }, 806 | { 807 | "cell_type": "code", 808 | "execution_count": 7, 809 | "metadata": {}, 810 | "outputs": [], 811 | "source": [ 812 | "llextinct_importcontrol<-function(icases,lcases,R0,k){\n", 813 | " if(length(icases)==0)return(0)\n", 814 | " tcases=lcases+icases\n", 815 | " lls=tcases*0\n", 816 | " for(i in 1:length(lls)){\n", 817 | " ls=sapply(0:lcases[i],function(ioffsprings){\n", 818 | " ll=dnbinom(ioffsprings,k*icases[i],mu=R0[1]*icases[i],log=T)+llextinct(ioffsprings,lcases[i]-ioffsprings,R0[2],k,F)\n", 819 | " return(ll)\n", 820 | " })\n", 821 | " lls[i]=lls[i]+logSumExp(ls)\n", 822 | " }\n", 823 | " sum(lls,na.rm=T)\n", 824 | "}" 825 | ] 826 | }, 827 | { 828 | "cell_type": "code", 829 | "execution_count": null, 830 | "metadata": {}, 831 | "outputs": [], 832 | "source": [ 833 | "Data=list(N=13,mon.names=c(\"R0_imp\",\"R0_loc\",\"k\"),parm.names=\"invk\",R0=c(1,2.5),icases=icases,lcases=lcases,ocases=ocases,isextinct=isextinct)\n", 834 | "Model=function(parm,Data){\n", 835 | " invk=interval(parm,0)\n", 836 | " lp=lltotal_R0(invk,Data$icases,Data$lcases,Data$isextinct,Data$R0,T)\n", 837 | " lp=lp+dnorm(invk,0,10,log=T)\n", 838 | " return(list(LP=lp,Dev=-2*lp,Monitor=c(Data$R0,1/invk),yhat=NULL,parm=invk))\n", 839 | "}\n", 840 | "R0s=c(0.5,0.8,1.2)\n", 841 | "niter=10000\n", 842 | "set.seed(20)\n", 843 | "mcmcfits=lapply(R0s,function(R0){\n", 844 | " Data$R0[1]=R0\n", 845 | " fit=LaplacesDemon(Model=Model,Data=Data,Initial.Values=50,Covar=NULL,Iterations=niter,Status=niter,Thinning=10,Algorithm='HARM',Specs=list(alpha.star=0.2,B=NULL))\n", 846 | "})\n", 847 | "\n", 848 | "k_mcmc=sapply(mcmcfits,function(x){x$Monitor[(niter%/%20):(niter%/%10),3]})\n", 849 | "ll_mcmc=sapply(mcmcfits,function(x){-x$Deviance[(niter%/%20):(niter%/%10)]/2}) " 850 | ] 851 | }, 852 | { 853 | "cell_type": "code", 854 | "execution_count": 9, 855 | "metadata": {}, 856 | "outputs": [ 857 | { 858 | "data": { 859 | "text/html": [ 860 | "\n", 861 | "\n", 862 | "\n", 863 | "\t\n", 864 | "\n", 865 | "\n", 866 | "\t\n", 867 | "\t\n", 868 | "\t\n", 869 | "\n", 870 | "
A matrix: 3 × 3 of type dbl
k (R_I = 0.5 )k (R_I = 0.8 )k (R_I = 1.2 )
2.5%0.097094960.077673320.06413361
50%0.294033010.176059940.13703123
97.5%1.237425220.536282620.31583619
\n" 871 | ], 872 | "text/latex": [ 873 | "A matrix: 3 × 3 of type dbl\n", 874 | "\\begin{tabular}{r|lll}\n", 875 | " & k (R\\_I = 0.5 ) & k (R\\_I = 0.8 ) & k (R\\_I = 1.2 )\\\\\n", 876 | "\\hline\n", 877 | "\t2.5\\% & 0.09709496 & 0.07767332 & 0.06413361\\\\\n", 878 | "\t50\\% & 0.29403301 & 0.17605994 & 0.13703123\\\\\n", 879 | "\t97.5\\% & 1.23742522 & 0.53628262 & 0.31583619\\\\\n", 880 | "\\end{tabular}\n" 881 | ], 882 | "text/markdown": [ 883 | "\n", 884 | "A matrix: 3 × 3 of type dbl\n", 885 | "\n", 886 | "| | k (R_I = 0.5 ) | k (R_I = 0.8 ) | k (R_I = 1.2 ) |\n", 887 | "|---|---|---|---|\n", 888 | "| 2.5% | 0.09709496 | 0.07767332 | 0.06413361 |\n", 889 | "| 50% | 0.29403301 | 0.17605994 | 0.13703123 |\n", 890 | "| 97.5% | 1.23742522 | 0.53628262 | 0.31583619 |\n", 891 | "\n" 892 | ], 893 | "text/plain": [ 894 | " k (R_I = 0.5 ) k (R_I = 0.8 ) k (R_I = 1.2 )\n", 895 | "2.5% 0.09709496 0.07767332 0.06413361 \n", 896 | "50% 0.29403301 0.17605994 0.13703123 \n", 897 | "97.5% 1.23742522 0.53628262 0.31583619 " 898 | ] 899 | }, 900 | "metadata": {}, 901 | "output_type": "display_data" 902 | } 903 | ], 904 | "source": [ 905 | "colnames(k_mcmc)=paste(\"k (R_I = \", c(0.5,0.8,1.2),\")\")\n", 906 | "apply(k_mcmc,2,quantile,c(0.025,0.5,0.975))" 907 | ] 908 | }, 909 | { 910 | "cell_type": "markdown", 911 | "metadata": {}, 912 | "source": [ 913 | "### Simulation of underreporting\n", 914 | "To investigate the effect of potential underreporting of cases, simulational dataset was generated and the overdispersion parameter $k$ was estimated by the maximum likelihood estimation. For each country in the WHO situation report dataset, the reporting probability $q_i$ was sampled from a beta distribution and the true number of imported cases were sampled based on the observed number and the sampled $q_i$. Three generations of transmission chains were drawn with a negative-binomial offspring distribution where $R_0=2.5$ and $k=0.1$ to provide the observed local cases given the same reporting probability $q_i$." 915 | ] 916 | }, 917 | { 918 | "cell_type": "code", 919 | "execution_count": 15, 920 | "metadata": {}, 921 | "outputs": [], 922 | "source": [ 923 | "R0=2.5;k=0.1\n", 924 | "sim_data=function(icases,R0,k,betaparm=NULL){\n", 925 | " generations=numeric(length(icases))+3#sample(2:4,length(icases),T)+1\n", 926 | " if(is.null(betaparm)){reporting=numeric(length(icases))+1\n", 927 | " }else{reporting=rbeta(length(icases),betaparm[1],betaparm[2])}\n", 928 | " icases_all=rnbinom(length(icases),icases+1,reporting)+icases\n", 929 | " sapply(1:length(icases),function(i){sim_cluster(icases[i],icases_all[i],generations[i],reporting[i],R0,k)})\n", 930 | "}\n", 931 | "sim_cluster=function(icase,icase_all,generation,reporting,R0,k){\n", 932 | " recursive_nb=function(ts,generation,R0,k){\n", 933 | " if(length(ts)==generation){return(ts)}\n", 934 | " else if(ts[length(ts)]==0){\n", 935 | " return(c(ts,numeric(generation-length(ts))))\n", 936 | " }else{\n", 937 | " ts=c(ts,rnbinom(1,k*ts[length(ts)],k/(R0+k)))\n", 938 | " return(recursive_nb(ts,generation,R0,k))\n", 939 | " }\n", 940 | " }\n", 941 | " tseries=recursive_nb(icase_all,generation,R0,k)\n", 942 | " ts_obs=rbinom(length(tseries),tseries,reporting)\n", 943 | " c(icase,sum(ts_obs[-1]),ts_obs[length(ts_obs)]==0)\n", 944 | "}\n", 945 | "estim_k=function(times,R0,betaparm=NULL){\n", 946 | " sapply(1:times,function(x){\n", 947 | " data=sim_data(icases,R0,k,betaparm)\n", 948 | " ll=function(invk){-lltotal_R0(invk,data[1,],data[2,],as.logical(data[3,]),R0)}\n", 949 | " 1/optim(fn=ll,par=10,method=\"Brent\",lower=1e-2,upper=1e3)$par\n", 950 | " })\n", 951 | "}\n", 952 | "\n", 953 | "set.seed(20)\n", 954 | "estims=sapply(c(8,5,2),function(x){estim_k(500,2.5,c(x,10-x))})\n", 955 | "estims=cbind(estim_k(500,2.5),estims)\n", 956 | "colnames(estims)=c(\"1 (constant)\",\"beta(8,2)\",\"beta(5,5)\",\"beta(2,8)\")" 957 | ] 958 | }, 959 | { 960 | "cell_type": "code", 961 | "execution_count": 16, 962 | "metadata": {}, 963 | "outputs": [ 964 | { 965 | "data": { 966 | "image/png": "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\nQGhQxf8BRsGQdS9+nQUAAAAASUVORK5CYII=", 967 | "text/plain": [ 968 | "plot without title" 969 | ] 970 | }, 971 | "metadata": {}, 972 | "output_type": "display_data" 973 | }, 974 | { 975 | "data": { 976 | "image/png": "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\nAABJRU5ErkJggg==", 977 | "text/plain": [ 978 | "plot without title" 979 | ] 980 | }, 981 | "metadata": {}, 982 | "output_type": "display_data" 983 | } 984 | ], 985 | "source": [ 986 | "# plot\n", 987 | "boxplot(estims,ylim=c(0,2),col=\"lightgray\",ylab=\"overdispersion parameter k\",xlab=\"distribution of reporting probability\")\n", 988 | "abline(h=0.1,lty=2,col=\"blue\")\n", 989 | "betas=cbind(dbeta(0:100/100,8,2),dbeta(0:100/100,5,5),dbeta(0:100/100,2,8))\n", 990 | "colnames(betas)=colnames(estims)[-1]\n", 991 | "matplot(x=0:100/100,betas,type=\"l\",ylim=c(0,5),lty=1,col=2:4,xlab=\"reporting probability\",ylab=\"density\")\n", 992 | "legend(\"topright\",col=2:4,legend=paste(colnames(betas),\" \"),bty=\"n\",lty=1,y.intersp=2)" 993 | ] 994 | }, 995 | { 996 | "cell_type": "markdown", 997 | "metadata": {}, 998 | "source": [ 999 | "The same procedure was repeated where the reporting probability for the imported cases was assumed to be 100%." 1000 | ] 1001 | }, 1002 | { 1003 | "cell_type": "code", 1004 | "execution_count": 17, 1005 | "metadata": {}, 1006 | "outputs": [ 1007 | { 1008 | "data": { 1009 | "image/png": "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\nroTuqpjnwS6s31jZTehq2/c69Hk8V/6uij2M0dVdX/XNn+Nd30Mc3hT3Vug3dehHCaPiB7Xq\nZ5l3oUdTJ0JfTHbZeo1jV0KX41aOtDv7b4/Qze/sSOhuzrKZ69S0S5jhXH/vGkE6PrZyPD+9\nVVbzUYiX4gahnuV/bOUox8WPWznKzuLLvQ49WuT5r6tnpCbZeo1jV0J3rcCH+27866qW52ZH\nNtXHkdCHtsm67lur8+4L8Jhr2N5b1yN1nx+9Ebr/tKu3Z/cQL8UNQg3Kzx7173uZjxLGxXcF\nPdagMI8VHUwdCt2Faw//W69x7Evo5jRweqWw+Q0+py9CN1fUjvdlDu3E4Vyn5HlFrh6p+/zo\nndDNpTxz6A+/+X3GaXGDUMPyi+SW7qiylI8XGxf0WINDs5r3esZ96lDoLlxzWrj5GsfOhBaE\nWbjlu4O/SwmfKZd3pxIDQkfCWsf2gl+VP3tY+xc6MyffRa4OQkfCWse+S0ayvISfGT2P/tsF\noSNhr+PpVuVPB3fA+BY6eV4n3zAIDapAaFAFQoMqEBpUgdCgCoQGVSA0qAKhQRUIDapAaFAF\nQoMqEBpUgdCgCoQGVSA0qAKhQRUIDapAaFAFQoMqEBpUgdCgCoQGVSA0qAKhQRUIDapAaFAF\nQoMq/gfnljOigBHpwQAAAABJRU5ErkJggg==", 1010 | "text/plain": [ 1011 | "plot without title" 1012 | ] 1013 | }, 1014 | "metadata": {}, 1015 | "output_type": "display_data" 1016 | }, 1017 | { 1018 | "data": { 1019 | "image/png": "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\nAABJRU5ErkJggg==", 1020 | "text/plain": [ 1021 | "plot without title" 1022 | ] 1023 | }, 1024 | "metadata": {}, 1025 | "output_type": "display_data" 1026 | } 1027 | ], 1028 | "source": [ 1029 | "# overwrite sim_data to assume 100% reporting for imported cases\n", 1030 | "sim_data=function(icases,R0,k,betaparm=NULL){\n", 1031 | " generations=numeric(length(icases))+3#sample(2:4,length(icases),T)+1\n", 1032 | " if(is.null(betaparm)){reporting=numeric(length(icases))+1\n", 1033 | " }else{reporting=rbeta(length(icases),betaparm[1],betaparm[2])}\n", 1034 | " icases_all=icases\n", 1035 | " sapply(1:length(icases),function(i){sim_cluster(icases[i],icases_all[i],generations[i],reporting[i],R0,k)})\n", 1036 | "}\n", 1037 | "set.seed(19)\n", 1038 | "estims_all=sapply(c(8,5,2),function(x){estim_k(500,2.5,c(x,10-x))})\n", 1039 | "estims_all=cbind(estim_k(500,2.5),estims_all)\n", 1040 | "colnames(estims_all)=c(\"1 (constant)\",\"beta(8,2)\",\"beta(5,5)\",\"beta(2,8)\")\n", 1041 | "\n", 1042 | "boxplot(estims_all,ylim=c(0,0.5),col=\"lightgray\",ylab=\"overdispersion parameter k\",xlab=\"distribution of reporting probability\")\n", 1043 | "abline(h=0.1,lty=2,col=\"blue\")\n", 1044 | "betas=cbind(dbeta(0:100/100,8,2),dbeta(0:100/100,5,5),dbeta(0:100/100,2,8))\n", 1045 | "colnames(betas)=colnames(estims)[-1]\n", 1046 | "matplot(x=0:100/100,betas,type=\"l\",ylim=c(0,5),lty=1,col=2:4,xlab=\"reporting probability\",ylab=\"density\")\n", 1047 | "legend(\"topright\",col=2:4,legend=paste(colnames(betas),\" \"),bty=\"n\",lty=1,y.intersp=2)" 1048 | ] 1049 | } 1050 | ], 1051 | "metadata": { 1052 | "jupytext": { 1053 | "formats": "ipynb,Rmd" 1054 | }, 1055 | "kernelspec": { 1056 | "display_name": "R", 1057 | "language": "R", 1058 | "name": "ir" 1059 | }, 1060 | "language_info": { 1061 | "codemirror_mode": "r", 1062 | "file_extension": ".r", 1063 | "mimetype": "text/x-r-source", 1064 | "name": "R", 1065 | "pygments_lexer": "r", 1066 | "version": "3.6.1" 1067 | } 1068 | }, 1069 | "nbformat": 4, 1070 | "nbformat_minor": 4 1071 | } 1072 | -------------------------------------------------------------------------------- /src/install.R: -------------------------------------------------------------------------------- 1 | install.packages("LaplacesDemon") 2 | -------------------------------------------------------------------------------- /src/runtime.txt: -------------------------------------------------------------------------------- 1 | r-3.6.1-2019-07-05 2 | -------------------------------------------------------------------------------- /supplementarymaterials.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akira-endo/COVID19_clustersize/e748321cf4bccd6cc5ee77afde83b51479f3f449/supplementarymaterials.pdf --------------------------------------------------------------------------------