Commit df10f41b authored by Renaud Lancelot's avatar Renaud Lancelot 🌍
Browse files

Updated version of the European mortality report.

parent 42eba020
Pipeline #15559 passed with stage
in 3 minutes and 17 seconds
......@@ -46,10 +46,8 @@ citation_package:
csl: plos-one.csl
fontsize: 12pt
geometry: "margin=1in"
---
```{r config, eval = interactive(), cache = FALSE, include = FALSE}
## This chunk is only executed in interactive mode (i.e. not when compiled)
## and helps to debug the RMarkdown starting from a fresh session.
......@@ -90,14 +88,15 @@ pdf.options(family = "Palatino")
```{r load_targets}
loadd(
world_map,
geo_europe_light,
roi_europe_light,
eu28, efta, candi, noneu, enp,
europe, eu28, efta, candi, noneu,
sdt,
wgs84,
merc,
eust,
pop_countries_2019,
pop_countries_2020,
covid,
lockdown_dates,
lock
......@@ -105,35 +104,18 @@ loadd(
```
```{r lockdown}
## European countries
european_countries <- sort(c(eu28, efta, candi, noneu)) %>%
## # Exclude Liechtenstein because of small population size
## .[-which(. == "Liechtenstein")] %>%
standardise_country_names()
## lockdown
Lock <- do.call(
"rbind",
by(subset(lock, name %in% european_countries),
list(name = subset(lock, name %in% european_countries)$name),
by(subset(lock, name %in% europe),
list(name = subset(lock, name %in% europe)$name),
function(x){
smax <- max(x$stringency, na.rm = T)
x$T90 <- min(x$date[x$stringency >= .9 * smax], na.rm = T)
x$S90 <- unique(x$stringency[min(which(x$date == x$T90),
na.rm = T)])
return(x)
})
)
lockdown_dates_str <- unique(Lock[, c("name", "T90")])
names(lockdown_dates_str)[2] <- "lockdown"
lockdown_dates_web <- subset(lockdown_dates,
subset = !(name %in% lockdown_dates_str$name))
lockdown_dates_all <- rbind(lockdown_dates_str, lockdown_dates_web)
rownames(lockdown_dates_all) <- seq(nrow(lockdown_dates_all))
Lock$name <- factor(as.character(Lock$name))
Lock$name <- reorder(Lock$name, Lock$T90)
deaths_by_ctry_dt <- covid %>%
filter(deaths >= 0) %>%
group_by(date, name) %>%
......@@ -152,7 +134,7 @@ covid$name <- standardise_country_names(covid$name)
## and death rate.
country_data <-
map_dfr(
list("eu28", "efta", "candi", "noneu"),
list("europe"),
~tibble(
group = .,
name = get(.)
......@@ -164,7 +146,7 @@ country_data <-
by = "name"
) %>%
left_join(
pop_countries_2019,
pop_countries_2020,
by = "name"
) %>%
mutate_if(is.character, as.factor) %>%
......@@ -180,7 +162,7 @@ country_data <-
mutate(
## Cumulated number of deaths per 100 K hab.
## Note that pop is expressed in thousands.
death_rate = 100 * (cum_deaths / pop)
death_rate = 1e5 * (cum_deaths / pop)
) %>%
## Arrange rows by descending order of death rate
arrange(desc(death_rate))
......@@ -200,7 +182,7 @@ Dfr <- deaths_by_ctry_dt %>%
## Names of countries with less than 25 cumulated deaths
nam25 <- country_data %>%
filter(cum_deaths < 100) %>%
filter(cum_deaths < 25) %>%
pull(name)
## character string with the number of deaths by country
......@@ -218,7 +200,7 @@ ttnd <- sum(Dfr$deaths)
sttnd <- format(ttnd, big.mark = ",")
## overall population size (in thousands)
ttpop <- 1000 * sum(country_data$pop)
ttpop <- sum(country_data$pop)
## character string for overall pop size
sttpop <- format(round(ttpop, 0), big.mark=",")
......@@ -235,9 +217,6 @@ sttcdr <- format(ttcdr, digits = 3)
```{r spatdata}
## spatial data
covmap <- geo_europe_light
covmap$name <- as.character(covmap$name)
covmap$name <- standardise_country_names(covmap$name)
covmap2 <- spTransform(covmap, merc)
## change the extent (units in degrees)
......@@ -283,6 +262,7 @@ Dfr3 <- do.call(
x$day = as.numeric(x$date - min(x$date, na.rm = T))
x
}))
Dfr3$name <- factor(as.character(Dfr3$name),
levels = onam2)
......@@ -322,6 +302,7 @@ Dfr4$name <- factor(as.character(Dfr4$name),
```{r prepastats}
## table preparation
zmydat1 <- na.omit(fParam[order(as.character(fParam$name)),
match(c("name",
"d2peak", "maxdr",
......@@ -350,7 +331,7 @@ if(length(did_not_peak) == 0)
if(length(did_not_peak) > 0){
nopeak_statement <- paste(
"The mortality related to the COVID-19 epidemic",
"is low most countries.",
"is low in most countries.",
"However, the epidemiological status is still uncertain in",
collapse(did_not_peak, cnt=NA))
......@@ -367,56 +348,55 @@ persist <- rownames(mydat2)[which(is.na(mydat2$T50))]
## Goals{-}
The initial motivation of this work was to provide a near-real time visualization tool of the COVID-19 related mortality in Europe, highlighting the features of COVID-19 transmission dynamic, particular to help knowing whether a peak in daily mortality rate was reached, and whether mortality started decreasing.
The motivation of this work was to provide a near-real time
visualization tool of the COVID-19 related mortality in Europe,
highlighting the features of COVID-19 transmission dynamic, particular
to help knowing whether a peak in daily mortality rate was reached,
and whether mortality started decreasing.
In addition, we defined and estimated a set of indicators of the country-level daily mortality pattern, to enable further studies on the effect of lockdown measures, and their implementation (e.g., consequences of human mobility), on the course of this epidemic.
In addition, we defined and estimated a set of indicators of the
country-level daily mortality pattern, to enable further studies on
the effect of lockdown measures, and their implementation (e.g.,
consequences of human mobility), on the course of this epidemic.
These indicators were then used to identify clusters of countries sharing similar mortality patterns.
These indicators were then used to identify clusters of countries
sharing similar mortality patterns.
## Main results {-}
As per `r data_update_date`, in the `r length(european_countries)` countries
accounted for, the total number of deaths is now `r sttnd` for an
overall population size of `r sttpop`, representing a
As per `r data_update_date`, in the `r length(europe)` countries
accounted for, the total number of deaths is `r sttnd` for an overall
population size of `r round(ttpop/1e6)` millions representing a
cumulative death rate of `r sttcdr` deaths $10^{-5}$ inhabitants.
**The most affected countries are located in south-western Europe, at
the exception of Sweden**. Indeed, the cumulative death rate is
contrasted between these south-western European countries and the
others.
the exception of Sweden, Switzerland, and North Macedonia**. Indeed,
the cumulative death rate is contrasted between these south-western
European countries and the rest od Europe.
Low death rates are reported in Finland, the Baltic countries, Central
Europe, and south-eastern Europe. These countries are heterogeneous in
terms of socio-economic features. These differences are known to be
risk factors for the emergence of infectious diseases, e.g.,
tick-borne encephalitis. However, the effect seems to be reversed for
COVID-19, with higher risks in southwestern Europe. Other factors
related to sub-population connectiveness and vulnerability - with
respect to COVID-19, might be involved.
The highest values of mortality growth rate were met at the early
stage of the exponential growth of daily mortality rate. In Europe,
this coincided with the implementation of lockdown measures, with some
fluctuations around the lockdown date - probably depending on the
progressiveness of the preventive measures decided by the governments,
and their actual implementation by the populations.
terms of socio-economic features. For COVID-19, factors related to
sub-population connectiveness and vulnerability, might explain these
differences in disease incidence.
The lockdown dates represented pivotal times for the national daily
mortality trends, with the mortality growth rate decreasing
The highest mortality growth rates were met before the implementation
of lockdown measures, with some fluctuations around the lockdown
date - probably depending on the progressiveness of the preventive
measures decided by the governments, and their actual appropriation by
the populations. The mortality growth rate decreased
thereafter. Different situations were encountered after the first
mortality peak:
* **a continuous decrease in the mortality growth rate** after the
peak (Belgium, Italy, France, the Netherlands, Ireland,
Switzerland...): the daily mortality rate is continuously
decreasing, and now stands at a low level.
Switzerland...): the daily mortality rate continuously decreased,
and now stands at a low or very low level.
* the mortality growth rate increased again after the peak, and
eventually resulted in an increasing mortality rate before a rather
steep decrease. Spain and the UK met this situation, as well as
Portugal, Austria, and North Macedonia. A secondary peak was
observed in Bosnia and Herzegovina, where the daily mortality is now
low.
* the mortality growth rate increased again after the peak, possibly
resulting in secondary and further peaks: Spain, North Macedonia,
Portugal, Austria, Bosnia and Herzegovina, Turkey, Serbia, Kosovo,
Montenegro, Albania, Czech Republic, and Croatia.
Daily mortality rate has now reached a low level in most countries
(fig. \@ref(fig:decay)). However, it is sill at least 50% of the
......@@ -472,7 +452,6 @@ The geographical scope of the study is:
Liechtenstein was excluded from the study because of its small population size.
## Approach{-}
* Publicly available data sets (see section \@ref(data)) are used to
......@@ -486,7 +465,7 @@ Liechtenstein was excluded from the study because of its small population size.
## Cumulative death rate
In the `r length(european_countries)` countries accounted for^[List of countries (number of deaths in braces): `r collapse(nam = levels(Dfr$name), cnt = sond)`.],
In the `r length(europe)` countries accounted for^[List (number of deaths in braces): `r collapse(nam = levels(Dfr$name), cnt = sond)`.],
the total reported deaths is now `r sttnd` for an overall population size of
`r round(sum(country_data$pop)/1e3,0)` millions, thus representing a cumulative death rate of
`r round(100 * sum(Dfr$deaths) / sum(country_data$pop), 1)` deaths $10^{-5}$ inhabitants (inh.).
......@@ -498,6 +477,7 @@ study countries.
```{r cumul, include = T, fig.asp = 1.25, out.width="60%", fig.cap = cap}
cap <- paste("Cumulative apparent COVID-19 death rate (total",
"deaths in braces) from the start of the epidemic to",
data_update_date,
......@@ -545,7 +525,6 @@ dotplot( ~ rev(setNames(death_rate, name)),
### Spatial distribution{-}
```{r covmap, include=T, fig.height=7,fig.cap=cap}
cap <- paste0(
"Cumulative apparent mortality rate (deaths / 100,000 inh.) ",
"attributed to COVID-19 as reported by the national ",
......@@ -606,7 +585,6 @@ spplot(ocovmap2, zcol = "cumdr",
gp = gpar(cex = cex)),
data = list(oXY = oXY, num = num, cex = cex))
```
* **The most affected countries are located in south-western
......@@ -689,7 +667,6 @@ dmrplot(dmr = fTrend,
\newpage
```{r dmr2, include=T, fig.height=8,fig.cap=cap}
cap <- caps[2]
dmrplot(dmr = fTrend,
......@@ -715,6 +692,7 @@ H <- length(List[[4]])
\newpage
```{r dmr4, include=T, fig.height=H, fig.cap=cap}
cap <- caps[4]
dmrplot(dmr = fTrend,
cex = cex,
......@@ -776,18 +754,18 @@ dmrplot(dmr = fTrend,
## Time trends in daily mortality growth rate{-}
```{r rgr1, include=T, fig.height = 8, fig.cap=cap}
cap0 <- paste0(
```{r rgr1, include=T, fig.height = 9, fig.cap=cap}
cap <- paste0(
"Mortality growth rate related to COVID-19 in European countries ",
"totalling at least 25 deaths. ",
"The black, vertical line is drawn at the lockdown. ",
"The red, vertical lines are drawn at d 11, 19, and 46 ",
"after the lockdown, corresponding to early, ",
"median, and late time lag between infection and death. ",
"The blue, vertical line is drawn at the mortality peak. Countries: ")
"The black line is drawn at the lockdown. ",
"The pink bans spans over d 11 and 46 ",
"after the lockdown, corresponding to early ",
"and late time lag between infection and death. ",
"The blue line is drawn at the mortality peak.")
## number of rows /page
nbr <- 7
nbr <- 9
nc <- 4
asp <- "fill"
......@@ -806,7 +784,6 @@ grplot(gr = fTrend,
```
National trends in daily mortality growth rates are shown on
fig. \@ref(fig:rgr1). The (first) peak in daily mortality rate was
observed when the daily mortality growth rate curve crossed the line
......@@ -814,8 +791,9 @@ of equation $y=0$ (thereafter called "mortality threshold"). Negative
values of the growth rate correspond to decreasing mortality rates.
* In most cases, the daily mortality growth rate had started
decreasing *before* the lockdown was decided, suggesting either the
populations anticipated the official decisions, or the measures
decreasing *before* the lockdown could have ab effect on mortality
(i.e., before 11 days after the lockdown date), suggesting either
the populations anticipated the official decisions, or the measures
preceding the lockdown were efficient enough to start decreasing the
daily mortality growth rate. We arbitrarily set the growth-rate
reference on day 11 after the lockdown because this was the time
......@@ -892,13 +870,13 @@ labcol1 <- paste("`d2peak`: time lag (d) from the 1st death to the mortality pea
"growth rate on d 46 after the lockdown, reported to `gr11`")
capg <- paste(cap1, collapse(labcol1, NA), "")
mydat1$maxdr100k <- 1e5 * mydat1$maxdr
fdat1 <- subset(mydat1,
select = c("d2peak", "maxdr", "gr11", "rgr46"))
fdat1[ , 1] <- formatC(mydat1[,1], format = "f", digits = 0)
fdat1[ , 2] <- formatC(mydat1[,2], format = "f", digits = 2)
fdat1[ , 3] <- formatC(mydat1[,3], format = "f", digits = 2)
fdat1[ , 4] <- formatC(mydat1[,4], format = "f", digits = 2)
select = c("d2peak", "maxdr100k", "gr11", "rgr46"))
fdat1[ , 1] <- formatC(fdat1[,1], format = "f", digits = 0)
fdat1[ , 2] <- formatC(fdat1[,2], format = "f", digits = 2)
fdat1[ , 3] <- formatC(fdat1[,3], format = "f", digits = 2)
fdat1[ , 4] <- formatC(fdat1[,4], format = "f", digits = 2)
knitr::kable(fdat1,
format = "pandoc",
......@@ -913,7 +891,6 @@ knitr::kable(fdat1,
\newpage
```{r tabd, include = T}
cap2 <- paste("Indicators of the COVID-19 mortality pattern in Europe:",
"decay step.")
......@@ -933,7 +910,6 @@ knitr::kable(mydat2,
```{r fdecay, include = T, fig.height = 9, fig.cap = cap}
cap <- paste("Daily mortality decay after the daily mortality",
"peak in European countries. The red, dashed, horirontal",
"line is drawn at daily mortality decay = 50\\%",
......@@ -953,7 +929,7 @@ decayL <- decayL[order(decayL$name, decayL$time), ]
xyplot(decay ~ time | name, data = decayL,
scales = list(cex = .7, tck=.5),
layout = c(4, 7),
layout = c(4, 9),
ylim = c(105, -5),
as.table = T,
between = list(x = 1/4, y = 1/4),
......@@ -971,8 +947,8 @@ xyplot(decay ~ time | name, data = decayL,
```
* Daily mortality rate has now reached a low level in most countries
(fig. \@ref(fig:fdecay)). However, it is sill at least 50% of the
* Daily mortality rate has decreased to a low level in most countries
(fig. \@ref(fig:fdecay)). However, it is still at least 50% of the
national peak mortality rate in `r collapse(persist, NA)`.
......@@ -1001,7 +977,7 @@ panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...)
text(0.5, 0.5, txt, cex = cex.cor * r)
}
z1 <- mydat1
z1 <- mydat1[, -match("maxdr100k", names(mydat1))]
z2 <- base::subset(mydat2,
select = "T50")
......@@ -1081,7 +1057,7 @@ s.corcircle(pca$co)
title(main = "B", adj = 0)
## Choice of class number, and colours
k <- 5
k <- 7
cex <- .8
## dendrogram
......@@ -1090,15 +1066,6 @@ plot(h, hang = .5, xlab = "", sub = "", main = "", las = 1,
title(main = "C", adj = 0)
dli$Class <- cutree(h, k = k)
## Find the order in which the colour was attributed to classes: need
## to go back to the dendrogram
## tab <- table(dli$Class, h$order)
## idx <- apply(tab, 1, function(x) paste(x, collapse = ""))
## ## tab[order(idx, decreasing = T),]
## ord <- as.numeric(rownames(tab[order(idx), ]))
## tab[ord, ]
rect.hclust(h, k = k, border = 2)
zd <- as.data.frame(cbind(z, dli))
......@@ -1116,11 +1083,11 @@ interpretation of results to these two axes.
The correlation circle (\@ref(fig:pca)B) provides two keys for data
interpretation:
* The first (horizontal) axis is positively correlated (right side)
with high values of `rgr46` (relative mortality growth rate at 46 d
post-lockdown with respect to mortality growth rate on day 11 after
lockdown), as well as high values of `T50` (time to 50% daily
mortality decay after the mortality peak), and `gr11` (mortality
* The first (horizontal) axis is negatively correlated (left side)
with high values of `rgr46` (relative mortality growth rate on day
46 after the lockdown with respect to mortality growth rate on day
11 after the lockdown), as well as high values of `T50` (time to 50%
decay of daily mortality after the peak), and `gr11` (mortality
growth rate on day 11 after lockdown). It is also negatively
correlated with high values of `d2peak` and `maxdr` (left side).
......@@ -1128,13 +1095,17 @@ interpretation:
`maxdr`, the mortality rate at the peak, and `d2peak`, the time lag
between the first reported death and the mortality peak.
* The two groups of variables at the basis of axes interpetation
(`T50`, `gr11`, and `rgr46` for axis 1, vs. `maxdr` and `d2peak` for
axi2) are approximately othogonal, i.e., they are weakly correlated.
* The projection of country scores on the plane made of axes 1 and 2
allows discriminating countries with unfavorable patterns - located
in the top part of the plane, from the others. The left part of the
plane encompasses countries with high daily mortality rate at the
peak (`maxdr`), and late mortality peak (`d2peak`). The right part
of the plane gather countries with persisting daily mortality rate
after the peak: high values of `T50`, ``gr11`, and `rgr46`.
in the **bottom part of the plane**, from the others. The right part
of the plane encompasses countries with high daily mortality rate at
the peak (`maxdr`), and late mortality peak (`d2peak`). The left
part of the plane gather countries with persisting daily mortality
rate after the peak: high values of `T50`, ``gr11`, and `rgr46`.
* On the basis of the variance shut down according to the partition
level, we select a partition of the countries into `r k` classes:
......@@ -1145,14 +1116,18 @@ interpretation:
cap <- paste("Distribution of the European countries according to their",
"scores on the PCA axes.")
zd$Class <- as.numeric(factor(as.character(zd$Class),
levels = as.character(c(2:5, 1))))
myList <- by(zd, zd$Class, function(x) x$name)
levels <- c(3, 6, 5, 4, 7, 1, 2)
zd$Class <- as.numeric(factor(as.character(zd$Class), levels = levels))
## colors for the scatterplot
colop <- colorRampPalette(RColorBrewer::brewer.pal(n = k, "Spectral")[-ceiling(k/2)])(k)
colop <- rev(cols(k))
## same colors with transparency
coltr <- scales::alpha(colop, alpha = .5)
## vectors of colors for the data
zd$colop <- colop[zd$Class]
zd$coltr <- coltr[zd$Class]
......@@ -1168,16 +1143,18 @@ xyplot(Axis2 ~ Axis1, data = zd,
xim = xlim,
xlab = list("Country score on 1st axis", cex = cex),
ylab = list("Country score on 2nd axis", cex = cex),
key = list(corner = c(1, 0),
x = .995, y = .005,
background = grey(.8, alpha = 0.8),
key = list(corner = c(0, 0),
x = .005, y = .005,
## background = "light blue",
title = "Country\ncategory",
cex.title = cex,
text = list(paste("Class", 1:k), cex = cex),
points = list(pch = 19, col = coltr)),
pch = 19, col = zd$coltr,
scales = list(cex = cex, tck = .5)) +
## latticeExtra::layer(panel.grid(), under = T) +
text = list(paste("Class", 1:k),
col = colop, cex = cex)),
## points = list(pch = 19, col = coltr)),
## pch = 19, col = zd$coltr[levels],
scales = list(cex = cex, tck = .5), type = "n") +
latticeExtra::layer(grid.rect(gp=gpar(fill="purple", alpha=.55)), under = T) +
latticeExtra::layer(panel.abline(h = 0, v = 0, lty = 4, col = 1)) +
latticeExtra::layer(maptools::panel.pointLabel(x, y,
label = as.character(zd$name),
......@@ -1192,17 +1169,19 @@ xyplot(Axis2 ~ Axis1, data = zd,
The scatter plot of countries according to their PCA scores reveals
contrasted patterns (fig. \@ref(fig:geoclass)). The first axis
discriminates countries with slow mortality decay on the right (e.g.,
Bosnia and Herzegovina), versus others on the left (e.g.,
discriminates countries with slow mortality decay on the left (e.g.,
Bosnia and Herzegovina), versus others on the right (e.g.,
Ireland). Countries are ordered along the second (vertical) axis,
according to their daily death rate at the peak (highest rate at the
top: e.g., Belgium, lowest rate at the bottom, e.g., Greece). Greece
top: e.g., Belgium, lowest rate at the bottom, e.g., Montenegro). Greece
seems to be in the most favorable situation, with low death rate at
the peak, and fast mortality decay after the peak.
the peak, and fast mortality decay after the peak. However, it is
bordered by countries with a persisting virus transmission, like
Bulgaria, North Macedonia, or even Turkey. Therefore, even in the case
of Greece, the epidemiological situation should be closely monitored.
```{r geoclass, include=T, fig.height=7, fig.cap = cap}
cap <- paste0("Distribution of mortality-pattern categories in European ",
"countries reporting more than 25 deaths on ",
sdt,
......@@ -1210,13 +1189,13 @@ cap <- paste0("Distribution of mortality-pattern categories in European ",
ocovmap3 <- ocovmap2[ocovmap2$name %in% onam3, ]
ocovmap3$class <- NA
for(i in seq_along(ocovmap3@data$class)){
o <- which(zd$name == ocovmap3$name[i])
xclass <- zd$Class[o]
ocovmap3$class[i] <- xclass
for(i in 1:k){
ocovmap3$class[ocovmap3$name %in% zd$name[zd$Class == i]] <- i
}
ocovmap3$class <- factor(ocovmap3$class)
num <- sprintf(seq(length(onam3)), fmt = "%02d")
labs <- paste0(num, " ", onam3)
......@@ -1237,10 +1216,10 @@ n <- length(onam3)
kex <- 1.1
spplot(ocovmap3, zcol = "class",
col.regions = colop,
col.regions = rev(cols(k)),
xlim = e[1:2], ylim = e[3:4] + c(8e5, 0),
scales = list(draw = F),
key = list(corner = c(1, 1),
key = list(space = "right",
background = "transparent",
x=.995, y = .995,
text = list(labs, cex = cex-.15)),
......@@ -1249,7 +1228,7 @@ spplot(ocovmap3, zcol = "class",
at = (1:(k+1)) -.5,
labels = list(
at = 1:k,
labels = 1:5)),
labels = 1:k)),
sub = list("Mortality pattern category",
cex = cex, font = 1),
lwd = 1/4, col = grey(.5)) +
......@@ -1276,28 +1255,16 @@ spplot(ocovmap3, zcol = "class",
```
The median value of the items used to define the categories are shown
in table \@ref(tab:tabf). We can order the five country categories
in table \@ref(tab:tabf). We can order the `r k` country categories
according to their decreasing severity regarding COVID-19 incidence
(axis 1: decreasing from bottom to top) and persistence (axis 2,
(axis 1: decreasing from top to bottom) and persistence (axis 2,
decreasing from right to left).
* most countries of western and southern Europe (class 1):
`r collapse(sort(zd$name[zd$Class == "1"]), cnt = NA)`;
* a less severely hit country category (class 2), with unstable epidemiological
situation: `r collapse(sort(zd$name[zd$Class == "2"]), cnt = NA)`;
* an intermediate country category (class 3) with milder severity
(lower incidence, lower persistence):
`r collapse(sort(zd$name[zd$Class == "3"]), cnt = NA)`;
* countries with lower incidence, but longer persistence (class 4):
`r collapse(sort(zd$name[zd$Class == "4"]), cnt = NA)`;
```{r country_class, include=T}
by(zd, list(zd$Class), function(x) collapse(x$name, cnt=NA))
```
* countries with lower incidence and shorter persistence (class 5):
`r collapse(sort(zd$name[zd$Class == "5"]), cnt = NA)`.
These conclusions should be modulated by the recent evolution of the
daily mortality rates, and daily mortality growth rates described
above, showing that even the countries in the most favorable
......@@ -1420,11 +1387,12 @@ Geonetwork](http://www.fao.org/geonetwork/srv/en/metadata.show?id=12691).
authoritative national sources and cannot be distributed to the
general public.
2. **Population data** are freely available from the United Nations’[World
Population Prospects 2019](https://population.un.org/wpp/) as a
`csv` file. We used the 2019 estimates.
2. **Population predictions for 2020** were retrieved from the WorlPop
database [@WoldPop2015, @Tatem2017]. This dataset is licenses under
the [Creative Common Attribution 4.0 International
License (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/).
3. **Mortality data** are freely available form the European Center
3. **Mortality data** are available form the European Center
for Disease Prevention and Control
[ECDC](https://www.ecdc.europa.eu/en/geographical-distribution-2019-ncov-cases)
website which provides daily updates of the situation of
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment