major_missing_because_of_controls <- 
  filter(df, !complete.cases(select(df, all_of(controls)))) %>% 
  filter(pop_tot>1 & !is.na(country) & country != "NA")

dropped <- major_missing_because_of_controls$country %>% 
  as.character %>% 
  unique 

major_missing_because_of_controls_pc <- 
  filter(df, !complete.cases(select(df, all_of(controls_deaths_capita)))) %>%
  filter(pop_tot>1 & !is.na(country) & country != "NA")

dropped_pc <- major_missing_because_of_controls_pc$country %>% 
  as.character %>% 
  unique 

##  Get measures and labels


families <- c("state_cap_vars", "pol_account_vars", "social_vars",
              "econ_vars",  "phys_vars", "epi_vars", "health_sys_vars")

for(v in families){  
  assign(v, filter(measures, family == v)$vars %>% as.character) 
  assign(paste0(v, "_labels"), filter(measures, family == v)$labels %>% as.character)
 }

Existing social science research has implications for the kinds of features of societies that might help explain variation in a society’s ability to respond to adverse shocks. In some accounts, for example, more democratic societies will be more responsive; in other accounts, state capacity or social cohesion are more important. We gather together major measures suggested by these literatures and report on the evolving covariance between these measures and the cross national distribution of reported Covid-19 burdens.

As of the most recent data date, 22 November, 2021:

Notes / warnings:

Overview

Deaths/million (logged)

Predicted and observed mortality


Each point in the figure shows the actual and predicted (log) per capita mortality for a given country. To predict mortality, we use four covariates selected by a Lasso procedure that maximize predictive accuracy as well an additional control for the quality of health data reporting. The controls are share 65+, respiratory disease prevalence, healthcare quality index (GHSI), healthcare spending/capita, and health data quality.

\label{oos2} Out of sample predictions from controls. Points above (below) the 45 degree line do worse (better) than predicted.

Out of sample predictions from controls. Points above (below) the 45 degree line do worse (better) than predicted.


Correlates of mortality

We show conditional and unconditional associations between political and social characteristics and logged deaths, at three points in time. Data for explanatory variables are typically given for 2018 or 2019. In addition to bivariate relationships, we show associations controlling for the five controls variables listed above. The coefficients are from linear models using \(z\)-standardized independent variables.

\label{results} Correlates of Covid-19 outcomes. Points represent normalized coefficients from either a bivariate model (circles) or a model with controls (squares).

Correlates of Covid-19 outcomes. Points represent normalized coefficients from either a bivariate model (circles) or a model with controls (squares).

Deaths total (logged)

Predicted and observed mortality

Each point in the figure shows the actual and predicted (log) total mortality for a given country. To predict mortality, we use four covariates selected by a Lasso procedure that maximize predictive accuracy as well an additional control for the quality of health data reporting. The controls are total population (logged), healthcare quality index (GHSI), healthcare spending/capita, health data quality, and NA.

\label{oos1} Out of sample predictions from controls. Points above (below) the 45 degree line do worse (better) than predicted.

Out of sample predictions from controls. Points above (below) the 45 degree line do worse (better) than predicted.

Deaths total (logged)

Correlates of total deaths recorded to date (logged), by day since 1 Jan 2020.

Y              <- "deaths_cum_log"
Y_lab          <- "Deaths total (logged)"
xlab           <- "Days since 1 Jan 2020"

State capacity

control_text <- paste0("Controls: ", paste(Clab, collapse = ", "))

X = state_cap_vars
Xlab = state_cap_vars_labels

out <- 
  results_over_time(Y = Y, X =  X, Xlab = Xlab, XX = XX,
                    bivariate = FALSE) 

do_plots_report(out, xlab)
Controls: Total population
(logged), Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Total population (logged), Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "state_cap_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Government effectiveness World Bank Indicators Government Effectiveness captures perceptions of the quality of public services, the quality of the civil service and the degree of its independence from political pressures, the quality of policy formulation and implementation, and the credibility of the government’s commitment to such policies. Estimate gives the country’s score on the aggregate indicator, in units of a standard normal distribution, i.e. ranging from approximately -2.5 to 2.5.
State fragility State Fragility Index The state fragility index combines scores measuring two essential qualities of state performance: effectiveness and legitimacy; these two quality indices combine scores on distinct measures of the key performance dimensions of security, governance, economics, and social development
Public sector corruption V-Dem Dataset - Version 10 Question: How pervasive is political corruption? "The corruption index includes measures of six distinct types of corruption that cover both different areas and levels of the polity realm, distinguishing between executive, legislative and judicial corruption. Within the executive realm, the measures also distinguish between corruption mostly pertaining to bribery and corruption due to embezzlement. Finally, they differentiate between corruption in the highest echelons of the executive at the level of the rulers/cabinet on the one hand, and in the public sector at large on the other. The measures thus tap into several distinguished types of corruption: both "petty" and "grand"; both bribery and theft; both corruption aimed and influencing law making and that affecting implementation." The raw indicators that comprise the components and sub-components of the index are arrived at via expert assessments, aggregated through a Bayesian IRT measurement model (Pemstein et al. 2020). Scale: Interval, 0 to 1, with higher values denoting higher levels of political corruption.
Pandemic preparedness GHSI 2019 A comprehensive assessment of countries’ ability to prevent infectious disease outbreaks and to detect and report, and rapidly respond to mitigate the spread. It also accounts for health system capacities and compliance with international norms to improving national capacity, along with countries’ overall risk environment and vulnerability to disease spread.
Ebola/SARS/MERS exposure WHO (HDX) The Ebola/SARS/MERS exposure measure captures a countries recent experience with SARS, Ebola, or MERS, draws on data from the World Health Organization and reports on whether a country displays at least 100 cases for either MERS, SARS, or Ebola.
Veto players DPI 2017 DPI checks measure of veto points. Definition varies depending on type of system. Generally, higher values denote contexts where there is electoral competitiveness in the legislature, and the two branches are controlled by opposing political forces. In presidential systems, higher values are produced by the existence of parties in the legislature that are allied with the president, but have a position on the economy that is closer to that of the main opposition party. In parliamentary systems, higher values are produced by the existence of parties in the legislature that are in the governing coalition, but have a position on the economy that is closer to that of the main opposition party. For further details, please see DPI 2017 codebook (pages 14, 15, 18, 19).
Index of federalism DPI 2017
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Political Institutions

X = pol_account_vars
Xlab = pol_account_vars_labels

out <- 
  results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE) 

do_plots_report(out, xlab)
Controls: Total population
(logged), Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Total population (logged), Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "pol_account_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Liberal democracy V-Dem Dataset - Version 10 To what extent is the ideal of liberal democracy achieved? Clarifications: The liberal principle of democracy emphasizes the importance of protecting individual and minority rights against the tyranny of the state and the tyranny of the majority. The liberal model takes a "negative" view of political power insofar as it judges the quality of democracy by the limits placed on government. This is achieved by constitutionally protected civil liberties, strong rule of law, an independent judiciary, and effective checks and balances that, together, limit the exercise of executive power. To make this a measure of liberal democracy, the index also takes the level of electoral democracy into account.
PR electoral system DPI 2017 Candidates are elected based on the percent of votes received by their party.
Media independence V-Dem Dataset - Version 10 Do journalists, publishers, or broadcasters accept payments in exchange for altering news coverage? Responses: 0: The media are so closely directed by the government that any such payments would be either unnecessary to ensure pro-government coverage or ineffective in producing anti-government coverage. 1: Journalists, publishers, and broadcasters routinely alter news coverage in exchange for payments. 2: It is common, but not routine, for journalists, publishers, and broadcasters to alter news coverage in exchange for payments. 3: It is not normal for journalists, publishers, and broadcasters to alter news coverage in exchange for payments, but it happens occasionally, without anyone being punished. 4: Journalists, publishers, and broadcasters rarely alter news coverage in exchange for payments, and if it becomes known, someone is punished for it.
Oil rents (% of GDP) World Bank Indicators "populist" countries (=1) are those in which a leader is elected within a democratic setting (PolityIV>=6 in year of election) running a populist campaign. This exclude leaders that only become populist while in office. Autocrats that deploy populism to hold onto power are not included (eg Mugabe). All others coded 0, including NAs in original data. The measure we use from Kyle and Meyer (2020) focuses speci?cally on electoral populism and classi?es 17 states currently as having governments led by electoral populist parties, including a number of cases with signi?cant early deaths from Covid-19, including Italy, the US, Brazil, and Turkey.
Electoral populism Populism in Power Measure of oil rents as a share of GDP. Estimates based on sources and methods described in "The Changing Wealth of Nations: Measuring Sustainable Development in the New Millennium" ( World Bank, 2011 ). "NY.GDP.PETR.RT.ZS"
Women leaders Wikipedia list Woman head of government on 1 Jan 2020. Does not include heads of state or joint heads.
Electoral pressure IFES, IPU, Wikipedia list Time to next election captures the number of days to the next parliamentary, presidential or senate election counted from the day the WHO declared Covid-19 a pandemic (March 11, 2020). The time to next election is constructed by using next election dates obtained from the IEFS election guide, the IPU Parline data and complemented by the Wikipedia list of next general elections.
Party polarization V-Dem Dataset - Version 10 Societal polarization, defined as the reluctance of supporters of different parties to interact in a civil manner. Higher values denote a higher extent of polarization
Left-Right Government V-Dem Dataset - Version 10 The Left-Right position of the government. Computed based on country expert opinion regarding the extent to which the government promotes a socialist or communist ideology to justify its rule to the population. Higher values denote a more Left-leaning governing coalition.
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Social structures

X = social_vars
Xlab = social_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Total population
(logged), Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Total population (logged), Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "social_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Institutional trust WVS, LAPOP % of respondents who reported trusting the government "a great deal" or "quite a lot" obtained from waves 5 and 6 of the WVS (WVS 2018) and the 2018 wave of the Latin Barometer. Computed based on item E069_11, which asks respondents to self-rate their degree of confidence in the central government: 1=a great deal; 2=quite a lot; 3=not very much; 4=none at all. Measure includes only countries sampled since 2009.
Ethnic fractionalization Alesina et al. (QoG) The variables reflect the probability that two randomly selected people from a given country will not be from the same ethnic group; the higher the number, the greater the degree of fractionalization. The indicator comes originally from Alesina et al. (2003)
Religious fractionalization Alesina et al. (QoG) Same as directly above, but this is based on the Alesina et al. (2003) data, and refers to the probability that two randomly drawn individuals are from different religious groups
Income GINI SWIID v8.2 Index of disposable (after taxes and transfers) income inequality, based on SWIID 8.2 data. Ranges from 0 to 1, with higher values denoting more income inequality.
Interpersonal trust WVS, Afrobarometer % of respondents who believe that "most people can be trusted", when given the option between this and "you can’t be too careful". Measures are based on waves 5 and 6 of the World Values Surveys (WVS), and obtained from Our World in Data (Ortiz-Ospina and Roser 2020), as well as from wave 5 of the Afrobarometer. Measures include only countries sampled since 2009. Where a country was included in both OWiD and Afrobarometer data, the most recent survey was given priority.
Share foreign born United Nations Population Division, Trends in Total Migrant Stock: 2008 Revision via World Bank International migrant stock is the number of people born in a country other than that in which they live. It also includes refugees. The data used to estimate the international migrant stock at a particular time are obtained mainly from population censuses. The estimates are derived from the data on foreign-born population–people who have residence in one country but were born in another country. When data on the foreign-born population are not available, data on foreign population–that is, people who are citizens of a country other than the country in which they reside–are used as estimates. After the breakup of the Soviet Union in 1991 people living in one of the newly independent countries who were born in another were classified as international migrants. Estimates of migrant stock in the newly independent states from 1990 on are based on the 1989 census of the Soviet Union. For countries with information on the international migrant stock for at least two points in time, interpolation or extrapolation was used to estimate the international migrant stock on July 1 of the reference years. For countries with only one observation, estimates for the reference years were derived using rates of change in the migrant stock in the years preceding or following the single observation available. A model was used to estimate migrants for countries that had no data. 2015 data.
Prop. of marginalized groups EPR data Share of the population that is defined as "powerless" in the EPR. This refers to groups with political representatives that are excluded from national-level decision making, without being explicitly discriminated. It’s important to highlight that groups that hold power at the subnational level, but not at the national level, are still defined as "powerless".
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Global Linkages

X = econ_vars
Xlab = econ_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Total population
(logged), Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Total population (logged), Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "econ_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
GDP per capita (PPP) World Bank GDP per capita, PPP (constant 2011 international \() </td> </tr> <tr> <td style="text-align:left;"> Trade (share of GDP) </td> <td style="text-align:left;"> World Bank </td> <td style="text-align:left;"> Trade is the sum of exports and imports of goods and services measured as a share of gross domestic product. (NE.TRD.GNFS.ZS) </td> </tr> <tr> <td style="text-align:left;"> FDI (net inflows, USD) </td> <td style="text-align:left;"> World Bank </td> <td style="text-align:left;"> Foreign direct investment, net inflows (BoP, current US\)). BX.KLT.DINV.CD.WD
Air travel (passengers carried) World Bank Air passengers carried include both domestic and international aircraft passengers of air carriers registered in the country. (IS.AIR.PSGR) (logged)
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Environmental risks

X = phys_vars
Xlab = phys_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Total population
(logged), Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Total population (logged), Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "phys_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Population density (log) FAO and World Bank Population density (people per sq. km of land area)
Total population (logged) World Bank Total population is based on the de facto definition of population, which counts all residents regardless of legal status or citizenship. The values shown are midyear estimates. (In ’000,000)
Precipitation (mm/month) Climatic Research Unit, University of East Anglia Average cumulative precipitation starting from January 2020, in mm per month
Temperature (Celsius) Climatic Research Unit, University of East Anglia Average cumulative temperature starting from January 2020, in Celsius degrees
Urban popularion (percent) UB via World Bank Population in urban agglomerations of more than 1 million (% of total population) (EN.URB.MCTY.TL.ZS)
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Health risks

X = epi_vars
Xlab = epi_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Total population
(logged), Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Total population (logged), Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "epi_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Share 65+ World Bank World Bank staff estimates using the World Bank’s total population and age/sex distributions of the United Nations Population Division’s World Population Prospects: 2019 Revision. Based on measures SP.POP.65UP.MA.IN and SP.POP.65UP.FE.IN
Respiratory disease prevalence Institute for Health Metrics and Evaluation (IHME) Combined prevalance of upper and lower respiratory disease as a % of the total population in 2017.
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Health system

X = health_sys_vars
Xlab = health_sys_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Total population
(logged), Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Total population (logged), Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "health_sys_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Share with health insurance ILO via Our World in Data Insurance coverage here includes affiliated members of health insurance, as well as the population having free access to healthcare services provided by the government.
Hospital beds / capita (GHSI) GHSI Hospital beds per capita.
Health data quality GHSI Index of early detection and reporting of epidemics with potential international concern.
Health sector robustness (GHSI) GHSI Index reporting on sufficient and robust health sector to treat the sick and protect health workers.
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Controls

As of 22 November, 2021, the five control variables account for 64.47% of the cross national variation in deaths.

The \(R^2\) in the figures below shows the share of the variation that is explained by each control variable on its own.

Bivariate relations between controls and deaths (logged)

Bivariate relations between controls and deaths (logged)

The \(R^2\) in the figures below shows the share of the residual variation that is explained by each control variable after taking account of the other control variables.

Relations between controls and deaths (logged), conditional on other controls

Relations between controls and deaths (logged), conditional on other controls

Deaths/million (logged)

Correlates of total deaths per million population (logged), by day since 1 Jan 2020.

dographs <- TRUE
Y              <- "deaths_cum_per_million_log"
xlab           <- "Days since 1 Jan 2020"

State capacity

control_text <- paste0("Controls: ", paste(Clab, collapse = ", "))

X = state_cap_vars
Xlab = state_cap_vars_labels

out <- 
  results_over_time(Y = Y, X =  X, Xlab = Xlab, XX = XX,
                    bivariate = FALSE) 

do_plots_report(out, xlab)
Controls: Share 65+, Respiratory
disease prevalence, Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Share 65+, Respiratory disease prevalence, Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "state_cap_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Government effectiveness World Bank Indicators Government Effectiveness captures perceptions of the quality of public services, the quality of the civil service and the degree of its independence from political pressures, the quality of policy formulation and implementation, and the credibility of the government’s commitment to such policies. Estimate gives the country’s score on the aggregate indicator, in units of a standard normal distribution, i.e. ranging from approximately -2.5 to 2.5.
State fragility State Fragility Index The state fragility index combines scores measuring two essential qualities of state performance: effectiveness and legitimacy; these two quality indices combine scores on distinct measures of the key performance dimensions of security, governance, economics, and social development
Public sector corruption V-Dem Dataset - Version 10 Question: How pervasive is political corruption? "The corruption index includes measures of six distinct types of corruption that cover both different areas and levels of the polity realm, distinguishing between executive, legislative and judicial corruption. Within the executive realm, the measures also distinguish between corruption mostly pertaining to bribery and corruption due to embezzlement. Finally, they differentiate between corruption in the highest echelons of the executive at the level of the rulers/cabinet on the one hand, and in the public sector at large on the other. The measures thus tap into several distinguished types of corruption: both "petty" and "grand"; both bribery and theft; both corruption aimed and influencing law making and that affecting implementation." The raw indicators that comprise the components and sub-components of the index are arrived at via expert assessments, aggregated through a Bayesian IRT measurement model (Pemstein et al. 2020). Scale: Interval, 0 to 1, with higher values denoting higher levels of political corruption.
Pandemic preparedness GHSI 2019 A comprehensive assessment of countries’ ability to prevent infectious disease outbreaks and to detect and report, and rapidly respond to mitigate the spread. It also accounts for health system capacities and compliance with international norms to improving national capacity, along with countries’ overall risk environment and vulnerability to disease spread.
Ebola/SARS/MERS exposure WHO (HDX) The Ebola/SARS/MERS exposure measure captures a countries recent experience with SARS, Ebola, or MERS, draws on data from the World Health Organization and reports on whether a country displays at least 100 cases for either MERS, SARS, or Ebola.
Veto players DPI 2017 DPI checks measure of veto points. Definition varies depending on type of system. Generally, higher values denote contexts where there is electoral competitiveness in the legislature, and the two branches are controlled by opposing political forces. In presidential systems, higher values are produced by the existence of parties in the legislature that are allied with the president, but have a position on the economy that is closer to that of the main opposition party. In parliamentary systems, higher values are produced by the existence of parties in the legislature that are in the governing coalition, but have a position on the economy that is closer to that of the main opposition party. For further details, please see DPI 2017 codebook (pages 14, 15, 18, 19).
Index of federalism DPI 2017
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Political Institutions

X = pol_account_vars
Xlab = pol_account_vars_labels

out <- 
  results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE) 

do_plots_report(out, xlab)
Controls: Share 65+, Respiratory
disease prevalence, Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Share 65+, Respiratory disease prevalence, Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "pol_account_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Liberal democracy V-Dem Dataset - Version 10 To what extent is the ideal of liberal democracy achieved? Clarifications: The liberal principle of democracy emphasizes the importance of protecting individual and minority rights against the tyranny of the state and the tyranny of the majority. The liberal model takes a "negative" view of political power insofar as it judges the quality of democracy by the limits placed on government. This is achieved by constitutionally protected civil liberties, strong rule of law, an independent judiciary, and effective checks and balances that, together, limit the exercise of executive power. To make this a measure of liberal democracy, the index also takes the level of electoral democracy into account.
PR electoral system DPI 2017 Candidates are elected based on the percent of votes received by their party.
Media independence V-Dem Dataset - Version 10 Do journalists, publishers, or broadcasters accept payments in exchange for altering news coverage? Responses: 0: The media are so closely directed by the government that any such payments would be either unnecessary to ensure pro-government coverage or ineffective in producing anti-government coverage. 1: Journalists, publishers, and broadcasters routinely alter news coverage in exchange for payments. 2: It is common, but not routine, for journalists, publishers, and broadcasters to alter news coverage in exchange for payments. 3: It is not normal for journalists, publishers, and broadcasters to alter news coverage in exchange for payments, but it happens occasionally, without anyone being punished. 4: Journalists, publishers, and broadcasters rarely alter news coverage in exchange for payments, and if it becomes known, someone is punished for it.
Oil rents (% of GDP) World Bank Indicators "populist" countries (=1) are those in which a leader is elected within a democratic setting (PolityIV>=6 in year of election) running a populist campaign. This exclude leaders that only become populist while in office. Autocrats that deploy populism to hold onto power are not included (eg Mugabe). All others coded 0, including NAs in original data. The measure we use from Kyle and Meyer (2020) focuses speci?cally on electoral populism and classi?es 17 states currently as having governments led by electoral populist parties, including a number of cases with signi?cant early deaths from Covid-19, including Italy, the US, Brazil, and Turkey.
Electoral populism Populism in Power Measure of oil rents as a share of GDP. Estimates based on sources and methods described in "The Changing Wealth of Nations: Measuring Sustainable Development in the New Millennium" ( World Bank, 2011 ). "NY.GDP.PETR.RT.ZS"
Women leaders Wikipedia list Woman head of government on 1 Jan 2020. Does not include heads of state or joint heads.
Electoral pressure IFES, IPU, Wikipedia list Time to next election captures the number of days to the next parliamentary, presidential or senate election counted from the day the WHO declared Covid-19 a pandemic (March 11, 2020). The time to next election is constructed by using next election dates obtained from the IEFS election guide, the IPU Parline data and complemented by the Wikipedia list of next general elections.
Party polarization V-Dem Dataset - Version 10 Societal polarization, defined as the reluctance of supporters of different parties to interact in a civil manner. Higher values denote a higher extent of polarization
Left-Right Government V-Dem Dataset - Version 10 The Left-Right position of the government. Computed based on country expert opinion regarding the extent to which the government promotes a socialist or communist ideology to justify its rule to the population. Higher values denote a more Left-leaning governing coalition.
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Social structures

X = social_vars
Xlab = social_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Share 65+, Respiratory
disease prevalence, Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Share 65+, Respiratory disease prevalence, Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "social_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Institutional trust WVS, LAPOP % of respondents who reported trusting the government "a great deal" or "quite a lot" obtained from waves 5 and 6 of the WVS (WVS 2018) and the 2018 wave of the Latin Barometer. Computed based on item E069_11, which asks respondents to self-rate their degree of confidence in the central government: 1=a great deal; 2=quite a lot; 3=not very much; 4=none at all. Measure includes only countries sampled since 2009.
Ethnic fractionalization Alesina et al. (QoG) The variables reflect the probability that two randomly selected people from a given country will not be from the same ethnic group; the higher the number, the greater the degree of fractionalization. The indicator comes originally from Alesina et al. (2003)
Religious fractionalization Alesina et al. (QoG) Same as directly above, but this is based on the Alesina et al. (2003) data, and refers to the probability that two randomly drawn individuals are from different religious groups
Income GINI SWIID v8.2 Index of disposable (after taxes and transfers) income inequality, based on SWIID 8.2 data. Ranges from 0 to 1, with higher values denoting more income inequality.
Interpersonal trust WVS, Afrobarometer % of respondents who believe that "most people can be trusted", when given the option between this and "you can’t be too careful". Measures are based on waves 5 and 6 of the World Values Surveys (WVS), and obtained from Our World in Data (Ortiz-Ospina and Roser 2020), as well as from wave 5 of the Afrobarometer. Measures include only countries sampled since 2009. Where a country was included in both OWiD and Afrobarometer data, the most recent survey was given priority.
Share foreign born United Nations Population Division, Trends in Total Migrant Stock: 2008 Revision via World Bank International migrant stock is the number of people born in a country other than that in which they live. It also includes refugees. The data used to estimate the international migrant stock at a particular time are obtained mainly from population censuses. The estimates are derived from the data on foreign-born population–people who have residence in one country but were born in another country. When data on the foreign-born population are not available, data on foreign population–that is, people who are citizens of a country other than the country in which they reside–are used as estimates. After the breakup of the Soviet Union in 1991 people living in one of the newly independent countries who were born in another were classified as international migrants. Estimates of migrant stock in the newly independent states from 1990 on are based on the 1989 census of the Soviet Union. For countries with information on the international migrant stock for at least two points in time, interpolation or extrapolation was used to estimate the international migrant stock on July 1 of the reference years. For countries with only one observation, estimates for the reference years were derived using rates of change in the migrant stock in the years preceding or following the single observation available. A model was used to estimate migrants for countries that had no data. 2015 data.
Prop. of marginalized groups EPR data Share of the population that is defined as "powerless" in the EPR. This refers to groups with political representatives that are excluded from national-level decision making, without being explicitly discriminated. It’s important to highlight that groups that hold power at the subnational level, but not at the national level, are still defined as "powerless".
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Global Linkages

X = econ_vars
Xlab = econ_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Share 65+, Respiratory
disease prevalence, Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Share 65+, Respiratory disease prevalence, Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "econ_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
GDP per capita (PPP) World Bank GDP per capita, PPP (constant 2011 international \() </td> </tr> <tr> <td style="text-align:left;"> Trade (share of GDP) </td> <td style="text-align:left;"> World Bank </td> <td style="text-align:left;"> Trade is the sum of exports and imports of goods and services measured as a share of gross domestic product. (NE.TRD.GNFS.ZS) </td> </tr> <tr> <td style="text-align:left;"> FDI (net inflows, USD) </td> <td style="text-align:left;"> World Bank </td> <td style="text-align:left;"> Foreign direct investment, net inflows (BoP, current US\)). BX.KLT.DINV.CD.WD
Air travel (passengers carried) World Bank Air passengers carried include both domestic and international aircraft passengers of air carriers registered in the country. (IS.AIR.PSGR) (logged)
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Environmental risks

X = phys_vars
Xlab = phys_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Share 65+, Respiratory
disease prevalence, Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Share 65+, Respiratory disease prevalence, Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "phys_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Population density (log) FAO and World Bank Population density (people per sq. km of land area)
Total population (logged) World Bank Total population is based on the de facto definition of population, which counts all residents regardless of legal status or citizenship. The values shown are midyear estimates. (In ’000,000)
Precipitation (mm/month) Climatic Research Unit, University of East Anglia Average cumulative precipitation starting from January 2020, in mm per month
Temperature (Celsius) Climatic Research Unit, University of East Anglia Average cumulative temperature starting from January 2020, in Celsius degrees
Urban popularion (percent) UB via World Bank Population in urban agglomerations of more than 1 million (% of total population) (EN.URB.MCTY.TL.ZS)
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Health risks

X = epi_vars
Xlab = epi_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Share 65+, Respiratory
disease prevalence, Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Share 65+, Respiratory disease prevalence, Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "epi_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Share 65+ World Bank World Bank staff estimates using the World Bank’s total population and age/sex distributions of the United Nations Population Division’s World Population Prospects: 2019 Revision. Based on measures SP.POP.65UP.MA.IN and SP.POP.65UP.FE.IN
Respiratory disease prevalence Institute for Health Metrics and Evaluation (IHME) Combined prevalance of upper and lower respiratory disease as a % of the total population in 2017.
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Health system

X = health_sys_vars
Xlab = health_sys_vars_labels

out <- results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = FALSE)

do_plots_report(out, xlab)
Controls: Share 65+, Respiratory
disease prevalence, Healthcare quality
index (GHSI), Healthcare
spending/capita, Health data quality

Controls: Share 65+, Respiratory disease prevalence, Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality

results_over_time(Y = Y, X =  X, Xlab = Xlab, XX=XX,
        bivariate = TRUE) %>% do_plots_report(xlab)
No controls

No controls

filter(measures, family == "health_sys_vars"  | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "Sources")
Sources
labels Source Definition
Share with health insurance ILO via Our World in Data Insurance coverage here includes affiliated members of health insurance, as well as the population having free access to healthcare services provided by the government.
Hospital beds / capita (GHSI) GHSI Hospital beds per capita.
Health data quality GHSI Index of early detection and reporting of epidemics with potential international concern.
Health sector robustness (GHSI) GHSI Index reporting on sufficient and robust health sector to treat the sick and protect health workers.
COVID-19 deaths ECDC Deaths per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero deaths remain in the data.
COVID-19 cases ECDC Cases per day: transformed to generate cumulative counts and logged counts. More precisely we transform the log counts according to f(x) = log(x+1) so that cases with zero cases remain in the data.
Stringency Index OxCGRT The Stringency Index is a nine-point aggregation of the eight containment and closure indicators as well as H1 (public information campaigns). It reports a number between 0 to 100 that reflects the overall stringency of the governments response. This is a measure of how many of the these nine indicators (mostly around social isolation) a government has acted upon, and to what degree.
Mobility Index Google The mobility index is an index of mobility trends constructed by aggregating the mobility trends for a subset of categories of places, on which the Google Mobility data reports. The index is constructed by averaging the mobility trends for the categories retail and recreation (1), groceries and pharmacies (2), parks (3), transit stations (4) and workplaces (5). The sixth Google category residential, which reports the mobility trends for places of residence is not included in the mobility index. The Google mobility trends shows how visits and length of stay at different places change compared to a baseline. Google calculates these changes using the same kind of aggregated and anonymized data used to show popular times for places in Google Maps. Changes for each day are compared to a baseline value for that day of the week, whereby the baseline is the median value, for the corresponding day of the week, during the 5-week period Jan 3 - Feb 6, 20

Technical notes

Time varying graphs show coefficients from linear regressions of outcomes on variables of interest with separate models for each day. Robust standard errors and confidence intervals are calculated using lm_robust. Headings report the N for the final day examined plus the partial adjusted \(R^2\) for the variable in question. Larger countries dropped because of missing data in controls: Puerto Rico, Palestinian Territories, Kosovo, Somalia, Syria.


Controls

As of 22 November, 2021, the five control variables account for 49.52% of the cross national variation in deaths.

The \(R^2\) in the figures below shows the share of the variation that is explained by each control variable on its own.

Bivariate relations between controls and deaths (logged)

Bivariate relations between controls and deaths (logged)

The \(R^2\) in the figures below shows the share of the residual variation that is explained by each control variable after taking account of the other control variables.

Relations between controls and deaths (logged), conditional on other controls

Relations between controls and deaths (logged), conditional on other controls

Overview plots

Cumulative deaths

Cumulative deaths, selected countries:

view_set <- c("CHN", "KOR","ITA", "ESP", "USA",
              "GBR", "DEU", "CHE", "IRN", "IND", "BRA")

df_full %>% filter(geoid2 %in% view_set & elapsed_rel > -5)  %>%
  group_by(geoid2) %>% 
  mutate(geoid2_lab = if_else(elapsed_rel == max(elapsed_rel), 
                              as.character(geoid2), NA_character_)) %>%
  ungroup() %>% 
  ggplot(aes(x=elapsed_rel, y=deaths_cum, color = geoid2)) + 
  geom_line() +
  xlab("Days since reported 10th case") +
  ylab("Deaths") +
  theme_bw() +
  theme(panel.grid.minor = element_blank()) +
  geom_text_repel(aes(label = geoid2_lab),
                   nudge_x = 1,
                   na.rm = TRUE,
                  min.segment.length = 2) +
  theme(legend.position = "none")

Cumulative deaths, countries with per capita income below $2000:

df_full %>% filter(gdp_pc < 2 & elapsed_rel > -5)  %>%
  group_by(geoid2) %>% 
  mutate(geoid2_lab = if_else(elapsed_rel == max(elapsed_rel), 
                              as.character(geoid2), NA_character_)) %>%
  ungroup() %>% 
  ggplot(aes(x=elapsed_rel, y=deaths_cum, color = geoid2)) + 
  geom_line() +
  xlab("Days since reported 10th case | Poorer countries (< USD 2 K)") +
  ylab("Deaths") +
  theme_bw() +
  theme(panel.grid.minor = element_blank()) +
  geom_text_repel(aes(label = geoid2_lab),
                   nudge_x = 2,
                   na.rm = TRUE,
                  min.segment.length = 2) +
  theme(legend.position = "none")

Cumulative deaths, selected countries, log scale.

df_full %>% filter(geoid2 %in% view_set & elapsed_rel > -5)  %>%
  group_by(geoid2) %>% 
  mutate(geoid2_lab = if_else(elapsed_rel == max(elapsed_rel), 
                              as.character(geoid2), NA_character_)) %>%
  ungroup() %>% 
  ggplot(aes(x=elapsed_rel, y=deaths_cum_log, color = geoid2)) + 
  geom_line() +
  xlab("Days since 10th reported case") +
  ylab("Deaths (logged)")  +
  theme_bw() +
  theme(panel.grid.minor = element_blank()) +
  geom_text_repel(aes(label = geoid2_lab),
                   nudge_x = 2,
                   na.rm = TRUE,
                  min.segment.length = 2) +
  theme(legend.position = "none")

Cumulative deaths per million population, log scale.

df_full %>% filter(geoid2 %in% view_set & elapsed_rel > -5)  %>%
  group_by(geoid2) %>% 
  mutate(geoid2_lab = if_else(elapsed_rel == max(elapsed_rel), 
                              as.character(geoid2), NA_character_)) %>%
  ungroup() %>% 
  ggplot(aes(x=elapsed_rel, y=deaths_cum_per_million, color = geoid2)) + 
  geom_line() +
  theme_bw() +
  theme(panel.grid.minor = element_blank()) +
  xlab("Days since 10th reported case") +
  ylab("Deaths per million") +
  geom_text_repel(aes(label = geoid2_lab),
                   nudge_x = 2,
                   na.rm = TRUE,
                  min.segment.length = 2) +  
  theme(legend.position = "none")  +
  scale_y_continuous(trans='log10') 

By region.

Total deaths

Distribution of deaths (Wealthier and less wealthy countries with >100 deaths)

Distribution of deaths (Wealthier and less wealthy countries with >100 deaths)

Distribution of deaths (regions)

Distribution of deaths (regions)

Growth rates deaths

7 day deaths growth rates, selected countries. Note log10 scale.

df_full %>% filter(geoid2 %in% c("IND", "ITA", "BRA", 
                                 "USA", "GBR", "DEU", 
                                 "IRN"))  %>%
  group_by(geoid2) %>% 
  mutate(geoid2_lab = if_else(elapsed_rel == max(elapsed_rel), 
                              as.character(geoid2), NA_character_)) %>%
  ungroup() %>% 
  ggplot(aes(x=as.Date(date), y=100*deaths_cum_g7, color = geoid2)) + 
  
  geom_line() +
  scale_y_continuous(trans='log10') +
  xlab("Date") +
  ylab("7 day growth in Deaths (percent; 100 = doubling)") +
  theme_bw() +
  theme(axis.text.x = element_text(angle = 90)) +
  theme(panel.grid.minor = element_blank()) +
  geom_text_repel(aes(label = geoid2_lab),
                  nudge_x = 2,
                  na.rm = TRUE,
                  min.segment.length = 2) + 
  theme(legend.position = "none")

There is a major reversal in relative growth rates. In early stages growth rates were low in Sub Saharan Africa and South Asia and high in Europe and North America, these rankings have since been reversed. Latin America stands out for sustained high growth rates.

Growth rates, regions (excl China))

Growth rates, regions (excl China))

Browse data