Updated: 27 Sep 2020

Author: Marc Bevand

This repository contains code to:

  • apply estimates of the age-stratified infection fatality ratio (IFR) of COVID-19 to countries' population pyramids, to find their expected overall IFR
  • calculate the age-stratified IFR from the Spanish ENE-COVID serosurvey

Age-stratified IFR applied to countries' population pyramids

The script apply_ifr.py uses a handful of age-stratified IFR estimates and applies them to countries' population pyramids, to find their expected overall IFR assuming equal prevalence of the disease among all age groups.

Of course, the real-world overall IFR will dependent on many factors: varying prevalence among age groups, underlying health conditions, access to healthcare, socioeconomic status, ethnicity, etc.

IFR estimates come from:

  1. ENE-COVID Spanish serosurvey (calculated by calc_ifr.py, see next section)
  2. US CDC (table 1)
  3. Verity et al.: Estimates of the severity of coronavirus disease 2019: a model-based analysis (table 1)
  4. Levin et al.: Assessing the age specificity of infection fatality rates for COVID-19: systematic review, meta-analysis, and public policy implications (table 3)
  5. Gudbjartsson et al.: Humoral Immune Response to SARS-CoV-2 in Iceland, Supplementary Appendix 1 (table S7)

Data for the population pyramids comes from the United Nations, specifically the first sheet of Population by Age Groups - Both Sexes. This excel file was converted to CSV format: WPP2019_POP_F07_1_POPULATION_BY_AGE_BOTH_SEXES.csv

Results

The overall expected IFR percentages are summarized in this table (sorted by IFR according to ENE-COV column):

ENE-COV US_CDC Verity Levin Gudbj Region
1.274 1.311 1.605 2.247 1.283 Japan
1.065 1.092 1.382 1.847 1.068 Italy
1.041 1.043 1.339 1.806 1.057 Greece
0.993 1.012 1.305 1.702 0.994 Germany
0.984 1.045 1.320 1.726 0.986 Portugal
0.931 0.985 1.270 1.648 0.918 Martinique
0.919 0.933 1.221 1.658 0.918 Lithuania
0.916 0.942 1.207 1.648 0.921 Spain
0.914 0.941 1.201 1.606 0.913 France
0.899 1.008 1.248 1.556 0.883 Finland
0.881 0.919 1.192 1.624 0.870 Latvia
0.875 0.957 1.205 1.528 0.857 Puerto Rico
0.868 0.892 1.171 1.516 0.870 Estonia
0.865 0.932 1.209 1.487 0.855 Croatia
0.855 0.965 1.205 1.471 0.835 Malta
0.846 0.881 1.137 1.478 0.847 Belgium
0.843 0.905 1.181 1.489 0.829 Slovenia
0.840 0.943 1.154 1.471 0.838 Sweden
0.836 0.910 1.149 1.462 0.830 Austria
0.825 0.897 1.132 1.447 0.819 Switzerland
0.810 0.861 1.117 1.396 0.802 Europe
0.802 0.909 1.141 1.394 0.785 Netherlands
0.801 0.949 1.181 1.377 0.779 Bulgaria
0.798 0.864 1.113 1.399 0.779 Guadeloupe
0.797 0.935 1.136 1.370 0.782 Denmark
0.794 0.868 1.089 1.384 0.794 United Kingdom
0.791 0.811 1.102 1.367 0.761 China, Hong Kong SAR
0.759 0.830 1.090 1.285 0.745 Romania
0.753 0.854 1.101 1.323 0.732 Hungary
0.745 0.800 1.064 1.285 0.724 Poland
0.739 0.828 1.059 1.315 0.737 Channel Islands
0.738 0.878 1.092 1.302 0.717 Czechia
0.734 0.810 1.047 1.288 0.714 Canada
0.719 0.756 0.998 1.259 0.705 Barbados
0.713 0.808 1.038 1.210 0.694 Curaçao
0.709 0.802 1.007 1.239 0.699 Norway
0.680 0.800 1.029 1.160 0.659 Serbia
0.676 0.694 0.904 1.193 0.686 Uruguay
0.675 0.745 0.967 1.181 0.660 Northern America
0.671 0.736 0.944 1.174 0.670 Australia
0.671 0.733 0.983 1.103 0.651 Ukraine
0.669 0.738 0.958 1.169 0.654 United States of America
0.659 0.757 1.011 1.088 0.620 Bosnia and Herzegovina
0.654 0.742 0.945 1.137 0.645 New Zealand
0.644 0.735 0.941 1.131 0.630 Cuba
0.641 0.877 1.059 1.152 0.608 United States Virgin Islands
0.633 0.725 0.963 1.090 0.606 Republic of Korea
0.628 0.686 0.938 1.100 0.599 China, Taiwan Province of China
0.624 0.663 0.916 1.030 0.606 Russian Federation
0.624 0.657 0.921 1.082 0.606 Belarus
0.615 0.668 0.881 1.078 0.616 Luxembourg
0.607 0.670 0.896 1.002 0.598 Georgia
0.605 0.683 0.888 1.061 0.599 Iceland
0.604 0.709 0.935 1.059 0.580 Slovakia
0.582 0.667 0.891 0.989 0.567 Montenegro
0.563 0.653 0.838 0.972 0.559 Ireland
0.561 0.649 0.839 0.957 0.559 Cyprus
0.548 0.659 0.857 0.941 0.533 Albania
0.531 0.652 0.874 0.920 0.508 Aruba
0.518 0.580 0.754 0.902 0.526 Oceania
0.510 0.588 0.795 0.881 0.491 Thailand
0.500 0.569 0.763 0.880 0.493 Réunion
0.499 0.545 0.710 0.872 0.516 Israel
0.497 0.522 0.748 0.794 0.491 Armenia
0.497 0.616 0.816 0.851 0.474 North Macedonia
0.493 0.550 0.736 0.861 0.492 Chile
0.479 0.550 0.796 0.829 0.433 Singapore
0.454 0.515 0.671 0.790 0.471 Argentina
0.449 0.514 0.738 0.770 0.412 China, Macao SAR
0.447 0.544 0.732 0.772 0.425 Mauritius
0.435 0.501 0.721 0.766 0.413 Republic of Moldova
0.415 0.511 0.681 0.717 0.402 Trinidad and Tobago
0.413 0.475 0.638 0.712 0.417 Costa Rica
0.413 0.468 0.626 0.704 0.413 Saint Lucia
0.409 0.507 0.695 0.707 0.385 China
0.394 0.497 0.648 0.712 0.409 Antigua and Barbuda
0.387 0.495 0.651 0.668 0.377 Sri Lanka
0.377 0.487 0.635 0.622 0.373 Dem. People's Republic of Korea
0.376 0.437 0.594 0.645 0.382 Brazil
0.365 0.464 0.611 0.618 0.373 Guam
0.364 0.425 0.569 0.627 0.381 Jamaica
0.361 0.454 0.605 0.663 0.375 Saint Vincent and the Grenadines
0.359 0.399 0.540 0.623 0.380 Panama
0.358 0.418 0.566 0.615 0.370 WORLD
0.356 0.410 0.555 0.614 0.371 Latin America and the Caribbean
0.355 0.412 0.560 0.613 0.367 Colombia
0.354 0.438 0.595 0.642 0.368 Grenada
0.347 0.399 0.528 0.595 0.377 El Salvador
0.343 0.363 0.528 0.602 0.355 Viet Nam
0.342 0.408 0.552 0.588 0.356 Turkey
0.339 0.397 0.537 0.583 0.358 Peru
0.336 0.394 0.553 0.579 0.344 Tunisia
0.327 0.432 0.573 0.547 0.328 New Caledonia
0.325 0.394 0.541 0.559 0.331 Asia
0.310 0.350 0.463 0.535 0.346 Bolivia (Plurinational State of)
0.309 0.348 0.480 0.532 0.333 Dominican Republic
0.307 0.348 0.503 0.505 0.319 Kazakhstan
0.306 0.352 0.485 0.532 0.327 Mexico
0.305 0.365 0.502 0.526 0.317 Venezuela (Bolivarian Republic of)
0.303 0.347 0.474 0.525 0.329 Ecuador
0.295 0.346 0.482 0.501 0.317 Lebanon
0.293 0.400 0.542 0.477 0.284 Seychelles
0.287 0.384 0.527 0.513 0.286 French Polynesia
0.282 0.326 0.456 0.456 0.298 Guyana
0.280 0.335 0.463 0.469 0.298 Suriname
0.273 0.313 0.474 0.452 0.279 Azerbaijan
0.272 0.337 0.474 0.462 0.284 Morocco
0.269 0.358 0.495 0.460 0.272 Bahamas
0.263 0.325 0.453 0.442 0.279 Malaysia
0.260 0.305 0.426 0.446 0.289 Algeria
0.257 0.307 0.418 0.436 0.287 Paraguay
0.251 0.297 0.403 0.423 0.288 Bhutan
0.246 0.301 0.431 0.418 0.263 Iran (Islamic Republic of)
0.234 0.293 0.414 0.398 0.253 India
0.229 0.293 0.416 0.387 0.244 Indonesia
0.228 0.259 0.373 0.393 0.262 Nicaragua
0.221 0.269 0.368 0.374 0.255 Bangladesh
0.221 0.232 0.349 0.374 0.260 Cabo Verde
0.217 0.284 0.375 0.310 0.247 Tonga
0.215 0.277 0.401 0.366 0.228 Myanmar
0.208 0.235 0.334 0.351 0.244 Belize
0.206 0.235 0.331 0.353 0.249 Honduras
0.204 0.233 0.323 0.349 0.253 Guatemala
0.204 0.255 0.360 0.342 0.232 Philippines
0.202 0.267 0.360 0.344 0.232 Nepal
0.197 0.249 0.381 0.331 0.210 Brunei Darussalam
0.194 0.237 0.331 0.330 0.233 Haiti
0.193 0.251 0.355 0.325 0.220 South Africa
0.193 0.222 0.339 0.316 0.220 Turkmenistan
0.192 0.247 0.343 0.321 0.224 Egypt
0.192 0.262 0.376 0.318 0.206 Fiji
0.188 0.220 0.335 0.310 0.217 Kyrgyzstan
0.188 0.245 0.353 0.344 0.216 French Guiana
0.187 0.219 0.340 0.317 0.212 Uzbekistan
0.185 0.224 0.323 0.317 0.222 Syrian Arab Republic
0.182 0.226 0.324 0.307 0.216 Libya
0.181 0.229 0.319 0.308 0.221 Lesotho
0.173 0.216 0.320 0.294 0.201 Mongolia
0.170 0.225 0.317 0.287 0.205 Djibouti
0.170 0.238 0.325 0.271 0.197 Samoa
0.168 0.221 0.314 0.288 0.199 Cambodia
0.164 0.210 0.292 0.274 0.206 Pakistan
0.158 0.204 0.273 0.268 0.208 Eritrea
0.157 0.183 0.277 0.252 0.203 Maldives
0.157 0.194 0.268 0.281 0.212 Mayotte
0.156 0.199 0.279 0.260 0.199 Jordan
0.155 0.203 0.289 0.263 0.193 Botswana
0.154 0.199 0.287 0.257 0.191 Lao People's Democratic Republic
0.152 0.209 0.279 0.253 0.197 Timor-Leste
0.146 0.180 0.282 0.248 0.177 Saudi Arabia
0.145 0.187 0.254 0.239 0.199 Eswatini
0.139 0.173 0.248 0.234 0.188 Namibia
0.135 0.176 0.302 0.222 0.145 Kuwait
0.134 0.173 0.244 0.224 0.183 Sudan
0.133 0.173 0.245 0.221 0.182 Gabon
0.130 0.167 0.231 0.216 0.183 Ethiopia
0.130 0.174 0.242 0.224 0.179 Solomon Islands
0.128 0.158 0.245 0.207 0.169 Tajikistan
0.127 0.165 0.236 0.212 0.176 Africa
0.125 0.157 0.229 0.212 0.176 Iraq
0.125 0.150 0.253 0.199 0.156 Bahrain
0.124 0.163 0.225 0.204 0.176 South Sudan
0.123 0.168 0.244 0.196 0.163 Vanuatu
0.122 0.165 0.247 0.204 0.160 Papua New Guinea
0.121 0.157 0.226 0.203 0.171 Liberia
0.121 0.157 0.222 0.203 0.173 Benin
0.120 0.155 0.224 0.199 0.170 Mauritania
0.120 0.157 0.222 0.196 0.171 State of Palestine
0.119 0.150 0.219 0.173 0.170 Sao Tome and Principe
0.118 0.178 0.278 0.228 0.136 Micronesia (Fed. States of)
0.118 0.138 0.222 0.195 0.165 Oman
0.118 0.160 0.260 0.195 0.143 Western Sahara
0.116 0.157 0.230 0.190 0.159 Ghana
0.116 0.146 0.216 0.193 0.166 Madagascar
0.113 0.149 0.220 0.193 0.162 Comoros
0.112 0.142 0.205 0.188 0.169 Zimbabwe
0.112 0.146 0.216 0.193 0.161 Rwanda
0.111 0.146 0.208 0.184 0.165 Senegal
0.110 0.144 0.203 0.182 0.166 Democratic Republic of the Congo
0.107 0.139 0.202 0.175 0.160 Yemen
0.106 0.141 0.203 0.174 0.159 Sierra Leone
0.103 0.165 0.239 0.197 0.135 Kiribati
0.103 0.136 0.192 0.168 0.160 Mozambique
0.102 0.135 0.192 0.168 0.158 Somalia
0.102 0.139 0.202 0.168 0.152 Togo
0.101 0.137 0.201 0.166 0.152 Congo
0.101 0.133 0.191 0.166 0.156 Central African Republic
0.100 0.134 0.194 0.166 0.154 Guinea
0.100 0.135 0.197 0.165 0.152 Côte d'Ivoire
0.098 0.130 0.189 0.160 0.153 Cameroon
0.097 0.130 0.192 0.160 0.150 Guinea-Bissau
0.097 0.129 0.183 0.157 0.155 Malawi
0.096 0.129 0.186 0.157 0.152 United Republic of Tanzania
0.096 0.128 0.184 0.156 0.151 Afghanistan
0.094 0.122 0.186 0.153 0.148 Kenya
0.094 0.130 0.190 0.154 0.145 Nigeria
0.092 0.118 0.179 0.149 0.149 Equatorial Guinea
0.091 0.126 0.177 0.146 0.149 Gambia
0.091 0.116 0.170 0.150 0.152 Chad
0.090 0.112 0.203 0.141 0.126 Qatar
0.088 0.121 0.172 0.146 0.147 Niger
0.088 0.118 0.173 0.144 0.145 Burkina Faso
0.088 0.109 0.169 0.144 0.146 Burundi
0.087 0.117 0.169 0.145 0.147 Mali
0.085 0.111 0.164 0.139 0.145 Angola
0.083 0.104 0.190 0.130 0.124 United Arab Emirates
0.083 0.107 0.158 0.134 0.144 Zambia
0.074 0.099 0.147 0.121 0.137 Uganda

Note that in addition to countries, there are rows for each continent and for the world.

Findings

The overall IFR estimates, with the exception of Levin et al., are relatively consistent with each other, usually within 30-40%.

The country with the oldest population is expected to have the highest overall IFR: Japan at 1.3-1.6% (excluding Levin et al.)

The country with the youngest population is expected to have the lowest overall IFR: Uganda at 0.074-0.147%

The overall IFR varies dramatically by more than 10-fold between countries with a young population and those with an old population.

In fact, the young age of the population in Africa is a major factor explaining the relatively small number of deaths on this continent. We find IFR=0.127% for Africa, and IFR=0.810% in Europe, a 6-fold difference.

Calculating the age-stratified IFR of COVID-19 from the Spanish ENE-COVID study

The largest serological prevalence survey of COVID-19 was conducted by Spain during the second round of the ENE-COVID study that analyzed 63 564 samples between 18 May 2020 and 01 June 2020. We used its provisional results published on 03 June to calculate the overall and age-stratified IFR of COVID-19 with the Python script calc_ifr.py:

$ ./calc_ifr.py
Ages  0 to   9:  115013 infected,     4 deaths,  0.003% IFR
Ages 10 to  19:  177929 infected,     7 deaths,  0.004% IFR
Ages 20 to  29:  212099 infected,    32 deaths,  0.015% IFR
Ages 30 to  39:  281290 infected,    86 deaths,  0.030% IFR
Ages 40 to  49:  447942 infected,   287 deaths,  0.064% IFR
Ages 50 to  59:  410213 infected,   874 deaths,  0.213% IFR
Ages 60 to  69:  334709 infected,  2404 deaths,  0.718% IFR
Ages 70 to  79:  270572 infected,  6451 deaths,  2.384% IFR
Ages 80 to  89:  131703 infected, 11150 deaths,  8.466% IFR
Ages 90 to 199:   46631 infected,  5827 deaths, 12.497% IFR
Ages  0 to 199: 2428102 infected, 27121 deaths,  1.117% IFR

The average IFR for Spain is 1.117%. However the true IFR may be higher due to right-censoring, under-reporting of deaths, or low specificity of the serological test; or the true IFR may be lower due to low sensitivity of the serological test.

The Spanish serological study remains the largest published study available to this day. The age-stratified IFR was calculated from three sources:

  1. Detailed prevalence data for age brackets, from the serosurvey (table 1)
  2. Total deaths and deaths per age bracket from the Ministry of Health's daily report for 29 May (table 2 and table 3)
  3. Population pyramid for Spain, from worldpopulationreview.com

In order to minimize right-censoring (deaths lagging infections,) the parameters total deaths and deaths per age bracket should be obtained from a point in time as close as possible to when the serosurvey was conducted (18 May to 01 June, preferably closer to the mid-point 25 May.) This is because the seroconversion time is roughly the same as the time between infection and death. We found only two Ministry of Health reports in this time period that document deaths per age bracket: 18 May, 29 May. However the Ministry of Health has made significant corrections to deaths statistics on 25 May by subtracting approximately 2 000 deaths. Therefore we trusted the statistics from 29 May over those of 18 May. Furthermore, 29 May is closer to the mid-point.

Important detail to note: there were 27 121 total deaths, however age information was only available for 20 585 deaths, and was missing for 6 536 deaths. We assume that these 6 536 deaths were distributed proportionally—not equally—among age brackets, which seems to be a reasonable assumption.

Regarding the specificity of the commercial test used (COVID-19 IgG Rapid Test Cassette by Zhejiang Orient Gene Biotech Co Ltd) we found various claims, all 100% or close, so no significant false positives are expected:

However the sensitivity is more uncertain:

So a false negative rate anywhere from 3% to 21% could be possible, and we think it is premature to adjust IFR calculations given the exact sensitivity is not known.

S
Description
No description provided
Readme 4.6 MiB
Languages
Python 100%