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:
A small set of simple controls—total population (logged), healthcare quality index (GHSI), healthcare spending/capita, health data quality, and NA—explain 64% of the cross national variation in deaths (logged). We used a Lasso procedure to chose the controls that perform best at predicting Covid-19 mortality (see paper for more details).
Given these controls:
These patterns may change as the pandemic evolves.
See our paper discussing the literature and logics behind these analyses.
See this paper for even more discussion as well as supplementary analysis on policy outcome measures.
All data preparation code and sources available here. And merged complete data here.
Notes / warnings:
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.
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.
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.
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"
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "state_cap_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "pol_account_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "econ_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "phys_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "epi_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "health_sys_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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.
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.
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"
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "state_cap_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "pol_account_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "econ_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "phys_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "epi_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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)
results_over_time(Y = Y, X = X, Xlab = Xlab, XX=XX,
bivariate = TRUE) %>% do_plots_report(xlab)
filter(measures, family == "health_sys_vars" | family == "outcome") %>% select(labels, Source, Definition) %>% kable(caption = "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 | 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.
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.
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.
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.
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.
Social structures
Controls: Total population (logged), Healthcare quality index (GHSI), Healthcare spending/capita, Health data quality
No controls
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 theN
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.