The maps and analyses in this section are based on a corpus of 79,040 studies in the published scientific literature. The corpus is shared between chapter 3 and 4 of the values assessment. For more information about the corpus see IPBES VA Chapter 3. Systematic review on Method Families (https://doi.org/10.5281/zenodo.4404436) and IPBES VA Chapter 4. Systematic review on valuation uptake (https://doi.org/10.5281/zenodo.4391335).
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
To identify country names in the corpus of literature a two step approach was used. First, we wanted to understand where studies were conducted and searched the title, abstract, and keywords of each paper for country names. Second, to understand where the funding organizations were located we searched the affiliations, acknowledgments, and funding text for country names.
The input data we used are the following:
Bib file downloaded from Web of Science
ISO 3166-1 alpha-3 country (includes some territories) codes (https://www.iso.org/iso-3166-country-codes.html)
IPBES regional and subregional area dataset (https://doi.org/10.5281/zenodo.3923633)
The python code used to georeference the corpus can be found here. An overview of the pipeline is provided in the following schematic and described below.
knitr::include_graphics("pilot2.svg")
Overview of the process of Georeferencing the corpus of valuation studies
Step 1: Extract country names from text Country names were extracted from the title, abstract, and keywords of each paper with a regular expression and the associated ISO code was added into a a column in the dataset. The same regular expression was also used to search the affiliations, acknowledgments, and funding text of the same paper and placed into a second column.
Step 2 and 3: Bundle countries in regions and subregions The IPBES Regions and Subregions datatset was then used to add additional region and subregion attributes to the dataset by matching the ISO3 code.
Step 4: Find TS accordingly We used a set of files to add additional attributes to the dataset that identified the topics. The set of files contained identifying information for papers derived from sets of web of science searches targeting particular topics. This identifying information was then matched to the corpus, and the topic extracted. For more details on topic identification please see chapter 4 systematic review on valuation uptake (https://doi.org/10.5281/zenodo.4391335).
Finally, the complete corpus with the added attributes of country ISO codes of both funding organizations and research locations, and topic identification were used as the basis of the rest of the research project. The complete corpus can be found on Zenodo here: [https://doi.org/[INSERT](https://doi.org/%5BINSERT DOI]
The complete georeferenced valuation corpus was used to understand the location of valuation studies throughout the world and the location of the organizations conducting those studies.
We counted the number of times a country or territory was listed in the corpus from the column of country or territory names obtained from the title, abstract, and keywords search as a proxy for the density of valuation studies.
Separately, we counted the number of times a country or territory was listed in the corpus from the column of country or territory names obtained from the affiliations acknowledgments, and funding text as a proxy for the density of organizations.
data <- readxl::read_excel("Data/IPBES_VA_Uptake_Corpus_06May20_GEONames_TS_16June20.xlsx", sheet = 1)
n <- nrow(data)
t <- data %>%
mutate(x = strsplit(as.character(CountryName_TI_AB_DE_ID), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE)
studies_na <- t %>%
filter(is.na(x))
t_names2 <- data %>%
mutate(x = strsplit(as.character(CountryName_CI_FU_FX), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE)
names2_na <- t_names2 %>%
filter(is.na(x))
cat("Out of", n,"total studies,", studies_na$n, "studies did not identify a country or territory within their title, abstract, or keywords. ", "While", names2_na$n, "studies did not identify a country within their affiliations, acknowledgments, and funding text.")
Out of 79040 total studies, 30259 studies did not identify a country or territory within their title, abstract, or keywords. While 345 studies did not identify a country within their affiliations, acknowledgments, and funding text.
We will now present the results from the analysis through a series of maps showing both the raw country or territory results and summarized by IPBES regions and subregions. No data is always displayed in grey. The darker green values represent a higher density of studies, while the darker blue values represent a higher density of organizations.
# Declare Functions
countFunction <- function(data, x) {
data %>%
mutate(x = strsplit(as.character(x), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE) %>%
drop_na() %>%
mutate(n_log = log(n))
}
# Necessary datasets for the upcoming maps
harmonized_data <- read.csv("Outputs/Corpus/harmonized_data.csv")
indicators <- read.csv("Outputs/indicators_compiled.csv")
column_names <- readxl::read_excel("Data/names_of_columns.xlsx")
countries <- read_sf("Data/gadm36_levels_shp/gadm36_0.shp") %>%
rename(ISO_Alpha_3 = GID_0)
# Combine and project data
colnames(indicators)[2:25] <- column_names$Short_Name
df <- left_join(harmonized_data, indicators, by = "ISO_Alpha_3")
df <- left_join(countries, df, by = "ISO_Alpha_3")
# Project data
robin_crs <- "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m"
poly <- st_transform(df, robin_crs)
# Load Shapefiles for updated borders
grey_areas <- read_sf("Data/Data_Final/grey_areas.shp") # area grey, no outlines
grey_areas <- st_transform(st_wrap_dateline(grey_areas), robin_crs)
solid_borders <- read_sf("Data/Data_Final/solid_borders.shp") # solid lines, color X
solid_borders <- st_transform(st_wrap_dateline(solid_borders), robin_crs)
dashed_borders <- read_sf("Data/Data_Final/dashed_borders.shp") # dashed lines, color X
dashed_borders <- st_transform(st_wrap_dateline(dashed_borders), robin_crs)
dotted_borders <- read_sf("Data/Data_Final/dotted_borders.shp") # dotted lines, color X
dotted_borders <- st_transform(st_wrap_dateline(dotted_borders), robin_crs)
major_lakes <- read_sf("Data/Data_Final/Major_Lakes.shp") # dotted lines, color X
major_lakes <- st_transform(st_wrap_dateline(major_lakes), robin_crs)
# Preparing Data
# all
percentage_VS_all <- st_drop_geometry(df) %>%
select(NAME_0, ISO_Alpha_3, Names1, Names2) %>%
mutate(Names1_percent = (Names1/sum(df$Names1, na.rm = T))) %>%
mutate(Names2_percent = (Names2/sum(df$Names2, na.rm = T))) %>%
arrange(desc(Names1_percent))
# Before 2010
## Create dataset
corpus_b2010 <- data %>%
filter(PY < 2010)
n1 <- corpus_b2010 %>%
countFunction(x = corpus_b2010$CountryName_TI_AB_DE_ID) %>%
rename("ISO_Alpha_3" = x, "Names1" = n, "Names1_log" = n_log)
n2 <- corpus_b2010 %>%
countFunction(x = corpus_b2010$CountryName_CI_FU_FX) %>%
rename("ISO_Alpha_3" = x, "Names2" = n, "Names2_log" = n_log)
df_b2010 <- full_join(n1, n2, by = "ISO_Alpha_3")
df_b2010_t <- left_join(countries, df_b2010, by = "ISO_Alpha_3")
## Project data
robin_crs <- "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m"
poly_b2010 <- st_transform(df_b2010_t, robin_crs)
percentage_VS_b2010 <- st_drop_geometry(df_b2010_t) %>%
select(NAME_0, ISO_Alpha_3, Names1, Names2) %>%
mutate(Names1_percent = (Names1/sum(df_b2010_t$Names1, na.rm = T))) %>%
mutate(Names2_percent = (Names2/sum(df_b2010_t$Names2, na.rm = T))) %>%
arrange(desc(Names1_percent))
# After 2010
data_2010 <- read.csv("Outputs/Corpus_2010/harmonized_data.csv")
df_2010 <- left_join(countries, data_2010, by = "ISO_Alpha_3")
robin_crs <- "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m"
poly_2010 <- st_transform(df_2010, robin_crs)
percentage_VS_a2010 <- st_drop_geometry(df_2010) %>%
select(NAME_0, ISO_Alpha_3, Names1, Names2) %>%
mutate(Names1_percent = (Names1/sum(df_2010$Names1, na.rm = T))) %>%
mutate(Names2_percent = (Names2/sum(df_2010$Names2, na.rm = T))) %>%
arrange(desc(Names1_percent))
# For plots
grid <- st_graticule(lat = seq(-90, 90, by = 30), # the graticules
lon = seq(-180, 180, by = 60)) %>%
st_transform("+proj=robin +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m") %>%
st_geometry
Showcases the number of valuation studies conducted within each country or territory for the entire dataset. Please note that the scales are not consistent between maps.
china_b2010 <- percentage_VS_b2010 %>% filter(NAME_0 == "China")
china_a2010 <- percentage_VS_a2010 %>% filter(NAME_0 == "China")
cat("There were",
sum(t$n) - studies_na$n,
"identifications of a country or territory from the title, abstract, or keywords, consisting of",
nrow(t) - nrow(studies_na),
"countries or territories identified.\n\n",
"\nThe United States has disproportionately higher valuation studies than other countries.", " In descending order,",
paste(percentage_VS_all$NAME_0[1]),
paste("(",round(percentage_VS_all$Names1_percent[1]*100, 2), "%),", sep = ""),
paste(percentage_VS_all$NAME_0[2]),
paste("(",round(percentage_VS_all$Names1_percent[2]*100, 2), "%),", sep = ""),
paste(percentage_VS_all$NAME_0[3]),
paste("(",round(percentage_VS_all$Names1_percent[3]*100, 2), "%),", sep = ""),
paste(percentage_VS_all$NAME_0[4]),
paste("(",round(percentage_VS_all$Names1_percent[4]*100, 2), "%) and", sep = ""),
paste(percentage_VS_all$NAME_0[5]),
paste("(",round(percentage_VS_all$Names1_percent[5]*100, 2), "%)", sep = ""),
"have the highest valuation studies in total and for studies post 2010.\n\n",
"\nThere was a large relative increase of valuation studies conducted in China before 2010 and after 2010. Before 2010, China comprised of",
paste0(round(china_b2010[,5]*100, 2),"%"),
"of the valuation studies, but after 2010 China comprised",
paste0(round(china_a2010[,5]*100, 2),"%"),
"of the valuation studies."
)
There were 64688 identifications of a country or territory from the title, abstract, or keywords, consisting of 217 countries or territories identified.
The United States has disproportionately higher valuation studies than other countries. In descending order, United States (10.96%), China (6.66%), Australia (5.36%), Brazil (4.66%) and India (3.74%) have the highest valuation studies in total and for studies post 2010.
There was a large relative increase of valuation studies conducted in China before 2010 and after 2010. Before 2010, China comprised of 2.8% of the valuation studies, but after 2010 China comprised 8.04% of the valuation studies.
plot1 <- ggplot(poly) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_colour_manual(values = NA) +
guides(colour = guide_legend("No data", override.aes = list(colour = "grey", fill = "grey")))+
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom") +
scale_fill_gradient(
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies")
# Names 1 Log
plot1_log <- ggplot(poly) + # Names 2 log all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1_log), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies (log)") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
plot_grid(plot1, plot1_log, labels = "auto", ncol = 1)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
Showcases the number of valuation studies conducted within each country or territory in the dataset before 2010. Please note that the scales are not consistent between maps.
cat("Before 2010, the countries with the highest valuation studies conducted were the",
paste(percentage_VS_b2010$NAME_0[1]),
paste("(",round(percentage_VS_b2010$Names1_percent[1]*100, 2), "%),", sep = ""),
paste(percentage_VS_b2010$NAME_0[2]),
paste("(",round(percentage_VS_b2010$Names1_percent[2]*100, 2), "%),", sep = ""),
paste(percentage_VS_b2010$NAME_0[3]),
paste("(",round(percentage_VS_b2010$Names1_percent[3]*100, 2), "%),", sep = ""),
paste(percentage_VS_b2010$NAME_0[4]),
paste("(",round(percentage_VS_b2010$Names1_percent[4]*100, 2), "%) and", sep = ""),
paste(percentage_VS_b2010$NAME_0[5]),
paste("(",round(percentage_VS_b2010$Names1_percent[5]*100, 2), "%).", sep = "")
)
Before 2010, the countries with the highest valuation studies conducted were the United States (12.21%), Australia (6.37%), United Kingdom (5.17%), India (3.61%) and Canada (3.32%).
# Plotting Names 1
plotC <- ggplot(poly_b2010) + # Names 1 all studies before 2010
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_colour_manual(values = NA) +
guides(colour = guide_legend("No data", override.aes = list(colour = "grey", fill = "grey")))+
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom") +
scale_fill_gradient(
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies")
# Plotting Names 1 log
plotC_log <- ggplot(poly_b2010) + # Names 2 log all studies before 2010
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1_log), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies (log)") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
plot_grid(plotC, plotC_log, labels = "auto", ncol = 1)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
Showcases the number of valuation studies conducted within each country or territory in the dataset from 2010. Please note that the scales are not consistent between maps.
cat("In descending order, the",
paste(percentage_VS_a2010$NAME_0[1]),
paste("(",round(percentage_VS_a2010$Names1_percent[1]*100, 2), "%),", sep = ""),
paste(percentage_VS_a2010$NAME_0[2]),
paste("(",round(percentage_VS_a2010$Names1_percent[2]*100, 2), "%),", sep = ""),
paste(percentage_VS_a2010$NAME_0[3]),
paste("(",round(percentage_VS_a2010$Names1_percent[3]*100, 2), "%),", sep = ""),
paste(percentage_VS_a2010$NAME_0[4]),
paste("(",round(percentage_VS_a2010$Names1_percent[4]*100, 2), "%) and", sep = ""),
paste(percentage_VS_a2010$NAME_0[5]),
paste("(",round(percentage_VS_a2010$Names1_percent[5]*100, 2), "%)", sep = ""),
"have the highest valuation studies in total and for studies post 2010."
)
In descending order, the United States (10.49%), China (8.04%), Brazil (5.18%), Australia (5.01%) and India (3.8%) have the highest valuation studies in total and for studies post 2010.
# Plotting Names 1
plotA <- ggplot(poly_2010) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_colour_manual(values = NA) +
guides(colour = guide_legend("No data", override.aes = list(colour = "grey", fill = "grey")))+
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom") +
scale_fill_gradient(
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies")
# Plotting Names 1 log
plotA_log <- ggplot(poly_2010) + # Names 2 log all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1_log), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies (log)") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
ggsave(file = "Outputs/Figures/Density_of_studies_after_2010_log.pdf", plot = plotA_log, width = 7, height = 5)
ggsave(file = "Outputs/Figures/Density_of_studies_after_2010_log.png", plot = plotA_log, width = 7, height = 5, dpi = 600)
plot_grid(plotA, plotA_log, labels = "auto", ncol = 1)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
Showcases the number of studies which reference the particular country within the affiliations, acknowledgments, or funding text for the entire dataset as a proxy for organizations which are conducing the research. Please note that the scales are not consistent between maps.
percentage_VS_all <- percentage_VS_all %>%
arrange(desc(Names2_percent))
cat("There were",
sum(t_names2$n) - names2_na$n,
"identifications of a country or territory from the affiliations, acknowledgments, or funding text, consisting of",
nrow(t_names2) - nrow(names2_na),
"countries or territories.\n\n",
"\nThe United States and the United Kingdom (UK) have disproportionately higher density of organizations than other countries. In descending order, the",
paste(percentage_VS_all$NAME_0[1]),
paste("(",round(percentage_VS_all$Names2_percent[1]*100, 2), "%),", sep = ""),
paste(percentage_VS_all$NAME_0[2]),
paste("(",round(percentage_VS_all$Names2_percent[2]*100, 2), "%),", sep = ""),
paste(percentage_VS_all$NAME_0[3]),
paste("(",round(percentage_VS_all$Names2_percent[3]*100, 2), "%),", sep = ""),
paste(percentage_VS_all$NAME_0[4]),
paste("(",round(percentage_VS_all$Names2_percent[4]*100, 2), "%) and", sep = ""),
paste(percentage_VS_all$NAME_0[5]),
paste("(",round(percentage_VS_all$Names2_percent[5]*100, 2), "%)", sep = ""),
"have the highest density of organizations."
)
There were 140188 identifications of a country or territory from the affiliations, acknowledgments, or funding text, consisting of 210 countries or territories.
The United States and the United Kingdom (UK) have disproportionately higher density of organizations than other countries. In descending order, the United States (17.89%), United Kingdom (7.36%), Germany (5.19%), Australia (4.9%) and China (4.64%) have the highest density of organizations.
plot2 <- ggplot(poly) + # Names 2 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names2), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
# Names 2 Log
plot2_log <- ggplot(poly) + # Names 2 log all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names2_log), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations (log)") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
plot_grid(plot2, plot2_log, labels = "auto", ncol = 1)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
Showcases the number of studies which reference the particular country within the affiliations, acknowledgments, or funding text for the studies in the dataset before 2010 as a proxy for organizations which are conducing the research in this time period. Please note that the scales are not consistent between maps.
percentage_VS_b2010 <- percentage_VS_b2010 %>%
arrange(desc(Names2_percent))
cat("Before 2010, in descending order, the",
paste(percentage_VS_b2010$NAME_0[1]),
paste("(",round(percentage_VS_b2010$Names2_percent[1]*100, 2), "%),", sep = ""),
paste(percentage_VS_b2010$NAME_0[2]),
paste("(",round(percentage_VS_b2010$Names2_percent[2]*100, 2), "%),", sep = ""),
paste(percentage_VS_b2010$NAME_0[3]),
paste("(",round(percentage_VS_b2010$Names2_percent[3]*100, 2), "%),", sep = ""),
paste(percentage_VS_b2010$NAME_0[4]),
paste("(",round(percentage_VS_b2010$Names2_percent[4]*100, 2), "%) and", sep = ""),
paste(percentage_VS_b2010$NAME_0[5]),
paste("(",round(percentage_VS_b2010$Names2_percent[5]*100, 2), "%)", sep = ""),
"have the highest density of organizations."
)
Before 2010, in descending order, the United States (25.28%), United Kingdom (9.52%), Canada (5.23%), Australia (5.03%) and Germany (4.83%) have the highest density of organizations.
# Plotting Names 2
plotD <- ggplot(poly_b2010) + # Names 2 all studies before 2010
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names2), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
# Plotting Names 2 log
plotD_log <- ggplot(poly_b2010) + # Names 2 log all studies before 2010
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names2_log), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations (log)") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
plot_grid(plotD, plotD_log, labels = "auto", ncol = 1)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
Showcases the number of studies which reference the particular country or territory within the affiliations, acknowledgments, or funding text for the studies in the dataset from 2010 as a proxy for organizations which are conducing the research in this time period. Please note that the scales are not consistent between maps.
percentage_VS_a2010 <- percentage_VS_a2010 %>%
arrange(desc(Names2_percent))
cat("After 2010, in descending order, the",
paste(percentage_VS_a2010$NAME_0[1]),
paste("(",round(percentage_VS_a2010$Names2_percent[1]*100, 2), "%),", sep = ""),
paste(percentage_VS_a2010$NAME_0[2]),
paste("(",round(percentage_VS_a2010$Names2_percent[2]*100, 2), "%),", sep = ""),
paste(percentage_VS_a2010$NAME_0[3]),
paste("(",round(percentage_VS_a2010$Names2_percent[3]*100, 2), "%),", sep = ""),
paste(percentage_VS_a2010$NAME_0[4]),
paste("(",round(percentage_VS_a2010$Names2_percent[4]*100, 2), "%) and", sep = ""),
paste(percentage_VS_a2010$NAME_0[5]),
paste("(",round(percentage_VS_a2010$Names2_percent[5]*100, 2), "%)", sep = ""),
"have the highest density of organizations."
)
After 2010, in descending order, the United States (15.81%), United Kingdom (6.75%), China (5.39%), Germany (5.29%) and Australia (4.87%) have the highest density of organizations.
plotB <- ggplot(poly_2010) + # Names 2 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names2), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
# Plotting Names 2 log
plotB_log <- ggplot(poly_2010) + # Names 2 log all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names2_log), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 5,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations (log)") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
plot_grid(plotB, plotB_log, labels = "auto", ncol = 1)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
Europe and Central Asia region has the highest density of organizations, but comes in third for the highest density of studies. In contrast, the Americas region comes in first for the highest density of studies and second for organizations.
Besides Antarctica, Africa has the lowest density of studies and organizations.
# Load needed data
#regions <- st_read("Data/ipbes_regions_subregions/IPBES_regions_Subregions2.shp") %>%
# st_wrap_dateline() %>%
# st_transform(robin_crs)
# Dissolve data by ipbes region
#data_region <- regions %>% # this dissolves the data by region
# mutate(n = 1) %>%
# dplyr::group_by(Region) %>%
# dplyr::summarise(count_n = sum(n)) %>%
# sf::st_cast()
#st_write(data_region, "Data/ipbes_regions_subregions/region.shp", append = FALSE)
data_region <- st_read("Data/ipbes_regions_subregions/region.shp", quiet = T)
# Count number of times per region (NAMES 1)
names1_region_counts <- data %>%
mutate(x = strsplit(as.character(Region_TI_AB_DE_ID), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE) %>%
rename("Region" = "x")
n1_region_poly <- left_join(data_region, names1_region_counts, by = "Region")
n1_region_poly$n <- as.factor(n1_region_poly$n)
ggplot(n1_region_poly) +
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = n), colour = "gray40") +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_manual(values = c("#F7FCB9", "#ADDD8E", "#41AB5D", "#006837", "grey")) +
# geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
region1_counts_s <- data %>%
mutate(x = strsplit(as.character(Region_TI_AB_DE_ID), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE)
region1_na_s <- region1_counts_s %>%
filter(is.na(x))
cat("* ",region1_na_s$n, "studies did not have a region identified for the density of studies.")
names2_region_counts <- data %>%
mutate(x = strsplit(as.character(Region_CI_FU_FX), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE) %>%
rename("Region" = "x")
n2_region_poly <- left_join(data_region, names2_region_counts, by = "Region")
n2_region_poly$n <- as.factor(n2_region_poly$n)
ggplot(n2_region_poly) +
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = n), colour = "gray40") +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_manual(values = c("#DEEBF7", "#9ECAE1", "#4292C6", "#08519C", "grey")) +
# geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
region1_counts_i <- data %>%
mutate(x = strsplit(as.character(Region_CI_FU_FX), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE)
region1_na_i <- region1_counts_i %>%
filter(is.na(x))
cat("* ",region1_na_i$n, "studies did not have a region identified for the density of studies.")
Europe and North America disproportionately have the highest density of studies and organizations between subregions, while Central Asia have the lowest density for both categories.
##### Prepare data by subregion #####
# Dissolve data by ipbes subregion
#data_subregion <- regions %>% # this dissolves the data by subregion
# mutate(n = 1) %>%
# dplyr::group_by(Sub_Region) %>%
# dplyr::summarise(count_n = sum(n)) %>%
# sf::st_cast()
#st_write(data_subregion, "Data/ipbes_regions_subregions/subregion.shp", append = FALSE)
data_subregion <- st_read("Data/ipbes_regions_subregions/subregion.shp", quiet = T)
# Count number of times per sub region (NAMES 1)
names1_subregion_counts <- data %>%
mutate(x = strsplit(as.character(Subregion_TI_AB_DE_ID), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE) %>%
rename("Sub_Region" = "x")
fix <- names1_subregion_counts %>% # Within the data western and central europe are separated, I added them together to match the regions within the polygon data
filter(Sub_Region == "Western Europe" | Sub_Region == "Central Europe")
fix <- sum(fix$n)
names1_subregion_counts <- names1_subregion_counts %>%
add_row(tibble_row(Sub_Region = "Central and Western Europe", n = fix))
# final join
n1_subregion_poly <- left_join(data_subregion, names1_subregion_counts, by = "Sub_Region")
n1_subregion_poly_plot <- ggplot(n1_subregion_poly) +
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = n), colour = "gray40") +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 4,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
# geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
n1_subregion_poly_plot
ggsave(file = "Outputs/Figures/Density_of_studies_subregion.pdf", plot = n1_subregion_poly_plot, width = 7, height = 5)
subregion1_counts_s <- data %>%
mutate(x = strsplit(as.character(Subregion_TI_AB_DE_ID), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE)
subregion1_na_s <- subregion1_counts_s %>%
filter(is.na(x))
cat("* ",subregion1_na_s$n, "studies did not have a subregion identified for the density of studies.")
# Count number of times per subregion (NAMES 2)
names2_subregion_counts <- data %>%
mutate(x = strsplit(as.character(Subregion_CI_FU_FX), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE) %>%
rename("Sub_Region" = "x")
# Within the data western and central europe are separated, I added them together to match the regions within the polygon data
fix <- names2_subregion_counts %>%
filter(Sub_Region == "Western Europe" | Sub_Region == "Central Europe")
fix <- sum(fix$n)
names2_subregion_counts <- names2_subregion_counts %>%
add_row(tibble_row(Sub_Region = "Central and Western Europe", n = fix))
# final join
n2_subregion_poly <- left_join(data_subregion, names2_subregion_counts, by = "Sub_Region")
ggplot(n2_subregion_poly) +
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = n), colour = "gray40") +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 4,
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
# geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
subregion1_counts_i <- data %>%
mutate(x = strsplit(as.character(Subregion_CI_FU_FX), ", ")) %>%
unnest(x) %>%
count(x, sort = TRUE)
subregion1_na_i <- subregion1_counts_i %>%
filter(is.na(x))
cat("* ",subregion1_na_i$n, "studies did not have a region identified for the density of studies.")
OECD member countries and middle-income countries broadly had relatively more studies in their countries relative to research and funding affiliations; also Greenland, the Antarctic, some Latin American and Asian, most African countries had relatively more research and funding affiliations compared to the number of studies in their countries. Countries mostly in the southern hemisphere had a disproportionate number of researchers engaged in ecosystem services/NCP assessment studies, relative to the number of studies carried out in their country, in comparison to Northern hemisphere countries. Because these are ratios, it is better to consider them in the light of country/population size. From a Southern-country perspective, this could indicate: (i) high frequency of collaboration outside their own countries of researchers from countries in the South, and (ii) underfunding of domestic valuation studies in countries of the South relative to the number of domestic researchers and funding agencies. From the perspective of countries in the North this could indicate (i) relatively limited research collaboration outside their country for researchers from the North, and (ii) well-funded ecosystem services/NCP research relative to number of researchers and funding affiliations. From both these perspectives the narrative is of a relative export of ecosystem services/NCP research capacity from Southern countries to other countries. The data may also simply show a relative deficit of ecosystem services/NCP study applications in the South relative to the North. No data was found on cross-border flows of funding or researchers to make any further interpretation. This is a potential knowledge gap. More analysis is needed on whether there are patterns in relation to ecosystem assessment method families, and whether the patterns have changed over time. There are many exceptions to the broad global pattern which merit country-specific studies of the institutional context of ecosystem assessment to identify barriers and successful leverage points.
plot_1and2_ratio <- ggplot(poly) + # Names 2 log all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1/Names2), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
low = "#F7FCB9",
high = "#FB8C00",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
n.breaks = 6,
breaks = c(1,3,5,7,9,11),
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Ratio of studies and organizations") +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom")
plot_1and2_ratio
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
It is clear that there is a significant positive linear relationship between the density of studies and organizations. It is important to note that there were many more identified countries for organizations than location of studies.
harmonized_data %>%
ggplot(aes(x = Names1, y = Names2)) +
geom_point() +
labs(x = "Density of Studies", y = "Density of Organizations") +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
mapping = aes(label = sprintf('r^2~"="~%.3f~~italic(P)~"="~%.2g',
after_stat(r.squared), after_stat(p.value))),
parse = TRUE,
label.x = "right", label.y = "bottom") +
theme_bw()
Density of studies vs density of organizations
The timeline for the study application in the georeferenced countries shows a relatively uniform distribution of scientific literature in English across IPBES regions in the decade of the 1990s. The decade of the Millennium Ecosystem Assessment (2005-2015) saw a relative concentration of ecosystem services/NCP studies in a few countries (US, Brazil, India, UK). The decade including studies produced by The Economics of Ecosystems and Biodiversity - TEEB study (2008-2018) saw further concentration on those countries, and some diversification to EU countries, African countries and China. A hypothesis arising from this descriptive data is ‘first starter advantage’ in generating valuation capacity with the Millennium Ecosystem Assessment, with notable exceptions such as China and South Africa.
Finally, there has been an exponential increase in valuation studies from the 1980’s to the present as pictured in the graph below.
last_year <- max(data$PY, na.rm = T)
names1_timeline <- data %>%
mutate(n = 1) %>%
group_by(PY) %>%
summarise(year_count = sum(n)) %>%
filter(PY != last_year)
ggplot(names1_timeline, aes(x = PY, y = year_count)) +
geom_line(color = "blue") +
geom_point(size = 2) +
theme_bw() +
labs(x = "Year", y = "Count of valuation studies")
cat("\n* ",
data %>% filter(is.na(PY)) %>% nrow(),
"studies did not have a year identified.\n\n",
"* ",
"Data from",
last_year,
"was removed due to incomplete sampling.")
569 studies did not have a year identified.
Data from 2020 was removed due to incomplete sampling.
Additionally, we explored how the density of valuation studies has changed throughout the last four decades. No data is displayed in grey.
# Prepare data
corpus <- data
# NAMES 1
# Group data temporally
b1990 <- corpus %>%
filter(PY < 1990) %>%
countFunction(.$CountryName_TI_AB_DE_ID) %>%
rename("ISO_Alpha_3" = x, "Names1" = n)
b2000 <- corpus %>%
filter(PY >= 1990 & PY < 2000) %>%
countFunction(.$CountryName_TI_AB_DE_ID) %>%
rename("ISO_Alpha_3" = x, "Names1" = n)
b2010 <- corpus %>%
filter(PY >= 2000 & PY < 2010) %>%
countFunction(.$CountryName_TI_AB_DE_ID) %>%
rename("ISO_Alpha_3" = x, "Names1" = n)
b2020 <- corpus %>%
filter(PY >= 2010) %>%
countFunction(.$CountryName_TI_AB_DE_ID) %>%
rename("ISO_Alpha_3" = x, "Names1" = n)
# Combine and project data
robin_crs <- "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m"
poly_1990 <- left_join(countries, b1990, by = "ISO_Alpha_3") %>%
st_transform(robin_crs)
poly_2000 <- left_join(countries, b2000, by = "ISO_Alpha_3") %>%
st_transform(robin_crs)
poly_2010 <- left_join(countries, b2010, by = "ISO_Alpha_3") %>%
st_transform(robin_crs)
poly_2020 <- left_join(countries, b2020, by = "ISO_Alpha_3") %>%
st_transform(robin_crs)
cat("Pre 1990 within the corpus, there are",
nrow(b1990),
"countries or territories represented with a total of",
sum(b1990$Names1),
"identifications of a country or terriotry.",
"The",
b1990$ISO_Alpha_3[1],
"had the most identifications with",
paste0(b1990$Names1[1], ".")
)
Pre 1990 within the corpus, there are 4 countries or territories represented with a total of 5 identifications of a country or terriotry. The USA had the most identifications with 2.
plot1990 <- ggplot(poly_1990) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
limits = c(0, 5000),
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
breaks = c(1000,2000,3000,4000,5000),
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies", title = "Pre 1990")
plot1990
ggsave(file = "Outputs/Figures/Density_of_studies_pre1990.png", plot = plot1990, width = 7, height = 5, dpi = 600)
ggsave(file = "Outputs/Figures/Density_of_studies_pre1990.pdf", plot = plot1990, width = 7, height = 5)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
cat("Between 1990 and 2000 within the corpus, there are",
nrow(b2000),
"countries or territories represented with a total of",
sum(b2000$Names1),
"identifications,",
floor(sum(b2000$Names1)/sum(b1990$Names1)),
"times larger than the number of identifications before 1990."
)
Between 1990 and 2000 within the corpus, there are 153 countries or territories represented with a total of 2704 identifications, 540 times larger than the number of identifications before 1990.
plot2000 <- ggplot(poly_2000) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
limits = c(0, 5000),
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
breaks = c(1000,2000,3000,4000,5000),
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies", title = "1990 - 2000")
plot2000
ggsave(file = "Outputs/Figures/Density_of_studies_1990-2000.png", plot = plot2000, width = 7, height = 5, dpi = 600)
ggsave(file = "Outputs/Figures/Density_of_studies_1990-2000.pdf", plot = plot2000, width = 7, height = 5)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
cat("Between 2000 and 2010 within the corpus, there are",
nrow(b2010),
"countries or territories represented with a total of",
sum(b2010$Names1),
"identifications,",
floor(sum(b2010$Names1)/sum(b2000$Names1)),
"times larger than the number of identifications before 2000."
)
Between 2000 and 2010 within the corpus, there are 200 countries or territories represented with a total of 14644 identifications, 5 times larger than the number of identifications before 2000.
plot2010 <- ggplot(poly_2010) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
limits = c(0, 5000),
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
breaks = c(1000,2000,3000,4000,5000),
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies", title = "2000 - 2010")
plot2010
ggsave(file = "Outputs/Figures/Density_of_studies_2000-2010.png", plot = plot2010, width = 7, height = 5, dpi = 600)
ggsave(file = "Outputs/Figures/Density_of_studies_2000-2010.pdf", plot = plot2010, width = 7, height = 5)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
cat("From 2010 and later within the corpus, there are",
nrow(b2020),
"countries or territories represented with a total of",
sum(b2020$Names1),
"identifications,",
floor(sum(b2020$Names1)/sum(b2010$Names1)),
"times larger than the number of identifications before 2010."
)
From 2010 and later within the corpus, there are 214 countries or territories represented with a total of 46918 identifications, 3 times larger than the number of identifications before 2010.
plot2020 <- ggplot(poly_2020) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
limits = c(0, 5000),
low = "#F7FCB9",
high = "#006837",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
breaks = c(1000,2000,3000,4000,5000),
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Studies", title = "Post 2010")
plot2020
ggsave(file = "Outputs/Figures/Density_of_studies_2010-2020.png", plot = plot2020, width = 7, height = 5, dpi = 600)
ggsave(file = "Outputs/Figures/Density_of_studies_2010-2020.pdf", plot = plot2020, width = 7, height = 5)
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
Additionally, we explored how the density of valuation organizations has changed through time throughout the last four decades. No data is displayed in gray.
# Names 2
# Group data temporally
b1990 <- corpus %>%
filter(PY < 1990) %>%
countFunction(.$CountryName_CI_FU_FX) %>%
rename("ISO_Alpha_3" = x, "Names1" = n)
b2000 <- corpus %>%
filter(PY >= 1990 & PY < 2000) %>%
countFunction(.$CountryName_CI_FU_FX) %>%
rename("ISO_Alpha_3" = x, "Names1" = n)
b2010 <- corpus %>%
filter(PY >= 2000 & PY < 2010) %>%
countFunction(.$CountryName_CI_FU_FX) %>%
rename("ISO_Alpha_3" = x, "Names1" = n)
b2020 <- corpus %>%
filter(PY >= 2010) %>%
countFunction(.$CountryName_CI_FU_FX) %>%
rename("ISO_Alpha_3" = x, "Names1" = n)
# Combine and project data
robin_crs <- "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m"
poly_1990 <- left_join(countries, b1990, by = "ISO_Alpha_3") %>%
st_transform(robin_crs)
poly_2000 <- left_join(countries, b2000, by = "ISO_Alpha_3") %>%
st_transform(robin_crs)
poly_2010 <- left_join(countries, b2010, by = "ISO_Alpha_3") %>%
st_transform(robin_crs)
poly_2020 <- left_join(countries, b2020, by = "ISO_Alpha_3") %>%
st_transform(robin_crs)
b1990 <- left_join(b1990, st_drop_geometry(countries), by = "ISO_Alpha_3")
cat("Pre 1990 within the corpus, there are",
nrow(b1990),
"countries or territories represented with a total of",
sum(b1990$Names1),
"identifications of a country or territory. The",
b1990$NAME_0[1],
"had the most with",
b1990$Names1[1], "identifications,",
b1990$NAME_0[2], "had", b1990$Names1[2], "identifications,",
"and",
b1990$NAME_0[3], "had", b1990$Names1[3], "identifications."
)
Pre 1990 within the corpus, there are 8 countries or territories represented with a total of 24 identifications of a country or territory. The United States had the most with 14 identifications, Canada had 3 identifications, and Norway had 2 identifications.
ggplot(poly_1990) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
limits = c(0, 17091),
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
breaks = c(4000,8000,12000,16000),
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations", title = "Pre 1990")
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
cat("Between 1990 and 2000 within the corpus, there are",
nrow(b2000),
"countries or territories represented with a total of",
sum(b2000$Names1),
"identifications,",
floor(sum(b2000$Names1)/sum(b1990$Names1)),
"times larger than the number of identifications before 1990."
)
Between 1990 and 2000 within the corpus, there are 110 countries or territories represented with a total of 4461 identifications, 185 times larger than the number of identifications before 1990.
ggplot(poly_2000) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
limits = c(0, 17091),
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
breaks = c(4000,8000,12000,16000),
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations", title = "1990 - 2000")
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
cat("Between 2000 and 2010 within the corpus, there are",
nrow(b2010),
"countries or territories represented with a total of",
sum(b2010$Names1),
"identifications,",
floor(sum(b2010$Names1)/sum(b2000$Names1)),
"times larger than the number of identifications before 2000."
)
Between 2000 and 2010 within the corpus, there are 179 countries or territories represented with a total of 26476 identifications, 5 times larger than the number of identifications before 2000.
ggplot(poly_2010) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
limits = c(0, 17091),
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
breaks = c(4000,8000,12000,16000),
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations", title = "2000 - 2010")
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
cat("2010 and later within the corpus, there are",
nrow(b2020),
"countries or territories represented with a total of",
sum(b2020$Names1),
"identifications,",
floor(sum(b2020$Names1)/sum(b2010$Names1)),
"times larger than the number of identifications before 2010."
)
2010 and later within the corpus, there are 207 countries or territories represented with a total of 108101 identifications, 4 times larger than the number of identifications before 2010.
ggplot(poly_2020) + # Names 1 all studies
geom_sf(data = grid,
colour = "gray60",
linetype = "dashed") +
geom_sf(aes(fill = Names1), colour = NA) +
annotate("text", x = -18000000, y = 0, label = "0°", size = 3) +
annotate("text", x = -18000000, y = 3200000, label = "30°N", size = 3) +
annotate("text", x = -15500000, y = 6200000, label = "60°N", size = 3) +
annotate("text", x = -18000000, y = -3200000, label = "30°S", size = 3) +
annotate("text", x = -15500000, y = -6200000, label = "60°S", size = 3) +
annotate("text", x = 0, y = 9500000, label = "0°", size = 3) +
annotate("text", x = -3000000, y = 9500000, label = "60°W", size = 3) +
annotate("text", x = 3000000, y = 9500000, label = "60°E", size = 3) +
annotate("text", x = -8000000, y = 9500000, label = "180°W", size = 3) +
annotate("text", x = 8000000, y = 9500000, label = "180°E", size = 3) +
scale_fill_gradient(
limits = c(0, 17091),
low = "#DEEBF7",
high = "#08519C",
space = "Lab",
na.value = "grey",
aesthetics = "fill",
breaks = c(4000,8000,12000,16000),
guide = guide_colorbar(title.position = "top",
title.hjust = .5,
barwidth = 10,
barheight = 0.5
)) +
theme(panel.background = element_blank(),
axis.text.x = element_text(size = 12),
axis.title = element_blank(),
legend.position = "bottom",
plot.title = element_text(hjust = 0.5, face = "bold")) +
geom_sf(data = grey_areas, fill = "grey", colour = NA) +
geom_sf(data = solid_borders, fill= NA, colour = "gray40")+
geom_sf(data = dashed_borders, fill = NA, colour = "gray40", linetype = "dashed") +
geom_sf(data = dotted_borders, fill = NA, colour = "gray40", linetype = "dotted") +
geom_sf(data = major_lakes, fill = "white", colour = "gray40") +
labs(fill = "Density of Organizations", title = "Post 2010")
The designations employed and the presentation of material on the maps shown here do not imply the expression of any opinion whatsoever on the part of the IPBES concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries.
The IPBES Core Indicators were used alongside a chosen set of other relevant indicators to understand geographic trends between density of valuation studies and how they relate to biological and socioeconomic indicators.
We used all of the IPBES Core Indicators available within the country dataset except for two indicators, Countries/Regions with Active NBSAP and Category 1 nations in CTIES, as these are binary in the dataset and would not be compatible with the following analysis. We selected a specific category from the indicators with multiple categories and the most recent year available within the dataset. For example, for the indicator “Area of forest production under FSC and PEFC certification” we chose the FSC certification area and not the PEFC certification area for 2016.
A set of other indicators were included in the analysis to expand the coverage of socioeconomic variables. We included the human development index (HDI), average harmonized learning outcomes score, gross domestic product (GDP), corruption perception index (CPI), and population.
These datasets were downloaded, cleaned, and had ISO3 codes added to easily merge them into the analysis. The latest data available was used for each indicator.
Here is the table of all of the indicators used, the category selected, the year the data is from, and the number assigned to them.
Name | Category | Year |
---|---|---|
Forest Area Under FSC and PEFC Certification | FSC_area | 2016 |
Biodiversity Habitat Index | Average | 2014 |
Biodiversity Intactness Index | Value | 2005 |
Biocapacity Per Capita | Value - Total | 2012 |
Ecological Footprint Per Capita | Value - Total | 2012 |
Forest Area | Forest area (1000ha) | 2015 |
Water Footprint | Water Footprint - Total (Mm3/y) | 2013 |
Inland Fishery Production | Capture | 2015 |
Region-based Marine Trophic Index | 1950 | 2014 |
Nitrogen + Phosphate Fertilizers | N total nutrients - Consumption in nutrients | 2014 |
Percent Nitrogen Use Efficiency | Nitrogen Use Efficiency (%) | 2009 |
Percentage and Total Area Covered by Protected Areas | Terrestrial - Protected Area (%) | 2017 |
Percentage of Undernourished People | Prevalence of undernourishment (%) (3-year average) | 2015 |
Proportion of Local Breeds Classified as Being At Risk, Not-at-risk or Unknown Level of Risk of Extinction | At Risk of Extinction | 2016 |
Percentage of Key Biodiverisy Areas Protected | Estimate | 2016 |
Protected Area Management Effectiveness | PA Assessed on Management Effectiveness (%) | 2015 |
Protected Area Connectedness Index | Protected Area Connectedness Index | 2012 |
Species Habitat Index | Species Habitat Index | 2014 |
Species Protection Index (%) | Species Protection Index (%) | 2014 |
Species Status Information Index | Value | 2014 |
Total Wood Removals (roundwood, m3) | Total | 2014 |
Trends in Forest Extent (Tree Cover) | Percentage of Tree Cover Loss | 2015 |
Nitrogen Deposition Trends (kg N/ha/yr) | Nitrogen Deposition Trends (kg N/ha/yr) | 2030 |
Trends in Pesticides Use | Use of pesticides (3-year average) | 2013 |
Human Development Index | NA | 2018 |
Average Harmonized Learning Outcomes Score | NA | 2015 |
Gross Domestic Product (GDP) | NA | 2019 |
Corruption Perception Index | NA | 2020 |
Population | NA | 2018 |
There were a few instances of duplicated values which were double checked with the original dataset and the erroneous value removed. Examples include having two values for USA due to the separation of Hawaii in the original dataset. In these cases Hawaii was removed and the value referring to the rest of the states of the country was used instead. Additionally, Indicator 9, Region-based Marine Trophic Index, the mean of the regions was calculated per country, as countries such as Germany have multiple regions with distinct values.
To understand how valuation is spread across geographies, we counted the number of times each country’s or territories’ ISO code appeared in the corpus for both geography columns added in step 2. The result is the density of studies per country or territory and the density of funding organizations per country or territory for the entire corpus.
The external indicators were also joined onto the dataset to analyze the relationships between these socioeconomic indicators and the density of studies and funding organizations.
This process was also repeated with an additional filter that excluded any studies published before 2010.
To investigate the relationships between indicators and the number of valuation studies, we ran a pearson correlation analysis. The statistical analysis calculated the trends between the number of studies in each country or territory (Density of studies) and the number of studies funded in each country or territory (Density of organizations) and each of the indicators. The results are shown below.
Insignificant relationships are blank, significant relationships (P < 0.01) are shown with circles. The strength of the correlation corresponds to the size of the circle and the color represents positive (blue) or negative (red) trends.
Description of results
There is a very strong positive relationship between GDP and the density of both studies and organizations. GDP per capita does not exhibit the same strong correlation.
Density of studies is also strongly positively correlated to total wood removals, trends in pesticide use, population, nitrogen fertilizers, and water footprint index.
Density of organizations is also strongly positively correlated with total wood removals, and nitrogen fertilizers.
While most significant relationships are positive, there are two negative relationships present. Biodiversity intactness index is negatively correlated with both the density of studies and organizations, and protected area management effectiveness is slightly negative correlated with the density of organizations.
#### Load Packages ####
library(corrplot)
library(Hmisc)
library(readxl)
#### Load Data ####
corpus <- read.csv("Outputs/Corpus/harmonized_data.csv") %>%
mutate(GDP_per_capita = GDP_2019/Pop_2018) %>%
select(-Names1_log, -Names2_log)
corpus_2010 <- read.csv("Outputs/Corpus_2010/harmonized_data.csv") %>%
select(ISO_Alpha_3, Names1, Names2)
indicators <- read.csv("Outputs/Indicators_compiled.csv")
column_names <- read_excel("Data/names_of_columns.xlsx")
#### Clean and Join Data together ####
colnames(indicators) <- c("ISO_Alpha_3", column_names$Short_Name)
colnames(corpus_2010)[2:3] <- paste(colnames(corpus)[2:3], "> 2010")
df <- full_join(corpus_2010, corpus, by = "ISO_Alpha_3")
df <- full_join(df, indicators, by = "ISO_Alpha_3")
df$remove <- df %>% select(`Names1 > 2010`:Names2) %>% rowSums(na.rm=TRUE) # removing rows where there is no Names1 information
df <- df %>%
filter(df$remove != 0) %>%
select(-remove, -ISO_Alpha_3) %>%
select(Names1, `Names1 > 2010`, Names2, `Names2 > 2010`, hdi_2018:`Trends in Pesticides Use`) %>%
rename("Density of ES/NCP study location" = "Names1",
"Density of ES/NCP study location post 2010" = "Names1 > 2010",
"Density of research organization location" = "Names2",
"Density of research organization location post 2010" = "Names2 > 2010",
"Human Development Index" = "hdi_2018",
"Learning Outcomes" = "Learning_outcomes_2015",
"Gross Domestic Product" = "GDP_2019",
"Corruption Perception Index" = "CPI_2020",
"Population" = "Pop_2018",
"Gross Domestic Prodct Per Capita" = "GDP_per_capita",
"Forest Area Under FSC Cetrification" = "Forest Area under FSC certification",
"Biocapacity Per Capita" = "Biocapacity per capita",
"Forest Area" = "Forest area",
"Region-based Marine Trophic Index" = "Marine Trophic Index (1950)",
"Percent Nitrogen Use Efficiency" = "Nitrogen Use Efficiency (%)",
"Percentage Protected" = "Percentage protected",
"Percentage of Undernourished People" = "Percentage of undernourished people",
"Local Breeds at Risk of Extinction" = "Local Breeds at risk of extinction",
"Percentage of Key Biodiversity Areas Protected" = "PA of Key Biodiversity Areas Coverage (%)",
"Protected Area Management Effectiveness" = "Protected area management effectiveness",
"Species Protection Index" = "Species Protection Index (%)",
"Trends in Forest Extent" = "Trends in forest extent")
#### Correlation Analysis ####
# calculate correlations
res1 <- rcorr(as.matrix(df), type = "pearson") # Only linear relationships
#### Formatting Data and Export ####
# Selecting the correlation coefficients
data_r <- res1$r %>%
as.data.frame() %>%
select(1:4)
data_r <- data_r[-c(1:4), ]
# Selecting the significance levels
data_p <- res1$P %>%
as.data.frame() %>%
select(1:4)
data_p <- data_p[-c(1:4), ]
# Selecting the number of observations that went into the calculation
data_n <- res1$n %>%
as.data.frame() %>%
select(1:4)
data_n <- data_n[-c(1:4), ]
# plot rectangular correlation plot
scalebluered <- colorRampPalette(c("#67001F", "#B2182B", "#D6604D",
"#F4A582", "#FDDBC7", "#FFFFFF", "#D1E5F0", "#92C5DE",
"#4393C3", "#2166AC", "#053061"))(200)
corrplot(as.matrix(data_r), is.corr = TRUE, cl.pos = 'n', tl.col="black", tl.srt = 45,
p.mat = as.matrix(data_p), sig.level = 0.01, insig = "blank") # Insignificant correlation are blank
colorlegend(scalebluered , c(seq(-1,1,len = 11)), align = 'l', vertical = TRUE, addlabels = TRUE, xlim=c(12,14), ylim=c(5,26))
text(c(12.5),c(28),labels="Legend", font = 2, cex = 1.1)
Pearson correlations of geographic valuation studies and indicators
The same pearson correlation analysis with the indicators was conducted on the log of the number of studies in each country or territory and the log of the number of studies funded from each country.
Description of results
Generally, the log density of studies and organizations show stronger and more correlations with the indicators. Within the log relationship, the protected area management effectiveness becomes significantly negatively correlated with both the density of studies and organizations. The biodiversity intactness index also follows the same pattern.
For the log density of studies compared to the non-transformed density of studies, GDP becomes less strongly correlated, local breeds at risk of extinction becomes positively correlated, protected area connectedness index becomes strongly positively correlated, species protection index becomes positively correlated, as well as trends in forest extent, and nitrogen deposition trends.
For the log density of organizations compared to the non-transformed density of organizations, the human development index, average harmonized learning outcomes, corruption perception index, population, and local breeds at risk of extinction all become more strongly positively correlated, while the GDP becomes slightly less positively correlated. Additionally, the percentage of undernourished people becomes negatively correlated with the log density of studies, the species protection index and the species status information index become positively correlated, and finally the relationship to trends in pesticide use is no longer significant.
For both the log density of studies and organizations, the protected area connected index becomes strongly positively corrrelated.
#### Load Data ####
corpus <- read.csv("Outputs/Corpus/harmonized_data.csv") %>%
mutate(GDP_per_capita = GDP_2019/Pop_2018) %>%
select(-Names1, -Names2)
corpus_2010 <- read.csv("Outputs/Corpus_2010/harmonized_data.csv") %>%
select(ISO_Alpha_3, Names1_log, Names2_log)
indicators <- read.csv("Outputs/Indicators_compiled.csv")
column_names <- read_excel("Data/names_of_columns.xlsx")
#### Clean and Join Data together ####
colnames(indicators) <- c("ISO_Alpha_3", column_names$Short_Name)
colnames(corpus_2010)[2:3] <- paste(colnames(corpus)[2:3], "> 2010")
df <- full_join(corpus_2010, corpus, by = "ISO_Alpha_3")
df <- full_join(df, indicators, by = "ISO_Alpha_3")
df$remove <- df %>% select(`Names1_log > 2010`:Names2_log) %>% rowSums(na.rm=TRUE) # removing rows where there is no Names1 information
df <- df %>%
filter(df$remove != 0) %>%
select(-remove, -ISO_Alpha_3) %>%
select(Names1_log, `Names1_log > 2010`, Names2_log, `Names2_log > 2010`, hdi_2018:`Trends in Pesticides Use`) %>%
rename("Log density of ES/NCP study location" = "Names1_log",
"Log density of ES/NCP study location post 2010" = "Names1_log > 2010",
"Log density of research organization location" = "Names2_log",
"Log density of research organization location post 2010" = "Names2_log > 2010",
"Human Development Index" = "hdi_2018",
"Learning Outcomes" = "Learning_outcomes_2015",
"Gross Domestic Product" = "GDP_2019",
"Corruption Perception Index" = "CPI_2020",
"Population" = "Pop_2018",
"Gross Domestic Prodct Per Capita" = "GDP_per_capita",
"Forest Area Under FSC Cetrification" = "Forest Area under FSC certification",
"Biocapacity Per Capita" = "Biocapacity per capita",
"Forest Area" = "Forest area",
"Region-based Marine Trophic Index" = "Marine Trophic Index (1950)",
"Percent Nitrogen Use Efficiency" = "Nitrogen Use Efficiency (%)",
"Percentage Protected" = "Percentage protected",
"Percentage of Undernourished People" = "Percentage of undernourished people",
"Local Breeds at Risk of Extinction" = "Local Breeds at risk of extinction",
"Percentage of Key Biodiversity Areas Protected" = "PA of Key Biodiversity Areas Coverage (%)",
"Protected Area Management Effectiveness" = "Protected area management effectiveness",
"Species Protection Index" = "Species Protection Index (%)",
"Trends in Forest Extent" = "Trends in forest extent")
#### Correlation Analysis ####
# calculate correlations
res1 <- rcorr(as.matrix(df), type = "pearson") # Only linear relationships
#### Formatting Data and Export ####
# Selecting the correlation coefficients
data_r <- res1$r %>%
as.data.frame() %>%
select(1:4)
data_r <- data_r[-c(1:4), ]
# Selecting the significance levels
data_p <- res1$P %>%
as.data.frame() %>%
select(1:4)
data_p <- data_p[-c(1:4), ]
# Selecting the number of observations that went into the calculation
data_n <- res1$n %>%
as.data.frame() %>%
select(1:4)
data_n <- data_n[-c(1:4), ]
# plot rectangular correlation plot
scalebluered <- colorRampPalette(c("#67001F", "#B2182B", "#D6604D",
"#F4A582", "#FDDBC7", "#FFFFFF", "#D1E5F0", "#92C5DE",
"#4393C3", "#2166AC", "#053061"))(200)
corrplot(as.matrix(data_r), is.corr = TRUE, cl.pos = 'n', tl.col="black", tl.srt = 45,
p.mat = as.matrix(data_p), sig.level = 0.01, insig = "blank") # Insignificant correlation are blank
colorlegend(scalebluered , c(seq(-1,1,len = 11)), align = 'l', vertical = TRUE, addlabels = TRUE, xlim=c(12,14), ylim=c(5,26))
text(c(12.5),c(28),labels="Legend", font = 2, cex = 1.1)
Pearson correlations of geographic valuation studies and indicators
The individual trends between each indicator, and the number of studies and number of funding organizations are shown here for the entire corpus. For each indicator, there are two four panel figures with the top figure showing the trends with the raw values, and the bottom figure displaying the trends with log transformed x-axis values.
The dots represent countries within the dataset that have values for both the indicator and valuation atlas. The associated p value of the linear trend model is shown in the corner of the image in red. The trend line is shown in blue and the associated standard error in grey. Please note that the y axis is not necessarily consistent between the four boxes and may include values that aren’t actually found in the data to showcase the full extent of the standard error of the trend line.
There are some broad narratives emerge from this analysis:
Fewer studies are being carried out in countries with extreme poverty.
More ecosystem service/NCP assessment studies are being carried out where biodiversity and environmental degradation is higher and protection lower.
More studies are being carried out where natural capital is the highest and the conservation discourse is more advanced.
Some contradictions between these single variable narratives exist, such as more ecosystem services/NCP assessments carried out in countries with a lower protected area effectiveness index, and in countries with a higher species protection index, while these are significantly negatively correlated across countries. There is a knowledge gap and no robust understanding can be concluded on this.
For each figure the panels are arranged as follows:
Density of studies (top-left) is the number of valuation studies for each country or territory in the corpus
Density of studies from 2010 (top-right) is the number of valuation studies for each country or territory in the corpus from 2010 to 2020
Density of organizations (bottom-left) is the number of valuation studies funded from each country or territory in the corpus
Density of organizations from 2010 (bottom-right) is the number of valuation studies funded from each country or territory in the corpus from 2010 to 2020
# Prepare data
# Corpus
harmonized_data <- read.csv("Outputs/Corpus/harmonized_data.csv") # full corpus
harmonized_data_2010 <- read.csv("Outputs/Corpus_2010/harmonized_data.csv") %>% # corpus from 2010
select(ISO_Alpha_3, Names1, Names1_log, Names2, Names2_log)
# indicators
column_names <- read_excel("Data/names_of_columns.xlsx")
indicators <- read.csv("Outputs/Indicators_compiled.csv")
# Fix column names
colnames(indicators) <- c("ISO_Alpha_3", column_names$Short_Name) # add names to columns
colnames(harmonized_data_2010)[2:5] <- paste(colnames(harmonized_data_2010)[2:5], "> 2010")
#### Combine Data ####
all_data <- full_join(harmonized_data, harmonized_data_2010, by = "ISO_Alpha_3") %>%
select(ISO_Alpha_3:Names2_log, `Names1 > 2010`:`Names2_log > 2010`, hdi_2018:Pop_2018)
all_data <- full_join(all_data, indicators, by = "ISO_Alpha_3")
# Plot Functions
#### Plot Function ####
Plot_function <- function(plot_data, yvar, yname) {
plot1 <- plot_data %>%
ggplot(aes(x = Names1, y = yvar)) +
geom_point() +
labs(x = "Density of Studies", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "bottom") +
theme_bw()
plot2 <- plot_data %>%
ggplot(aes(x = `Names1 > 2010`, y = yvar)) +
geom_point() +
labs(x = "Density of Studies from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "bottom") +
theme_bw()
plot3 <- plot_data %>%
ggplot(aes(x = Names2, y = yvar)) +
geom_point() +
labs(x = "Density of Organizations", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "bottom") +
theme_bw()
plot4 <- plot_data %>%
ggplot(aes(x = `Names2 > 2010`, y = yvar)) +
geom_point() +
labs(x = "Density of Organizations from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "bottom") +
theme_bw()
plot_all <- plot_grid(plot1, plot2, plot3, plot4)
return(plot_all)
}
Plot_function_topright <- function(plot_data, yvar, yname) {
plot1 <- plot_data %>%
ggplot(aes(x = Names1, y = yvar)) +
geom_point() +
labs(x = "Density of Studies", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "top") +
theme_bw()
plot2 <- plot_data %>%
ggplot(aes(x = `Names1 > 2010`, y = yvar)) +
geom_point() +
labs(x = "Density of Studies from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "top") +
theme_bw()
plot3 <- plot_data %>%
ggplot(aes(x = Names2, y = yvar)) +
geom_point() +
labs(x = "Density of Organizations", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "top") +
theme_bw()
plot4 <- plot_data %>%
ggplot(aes(x = `Names2 > 2010`, y = yvar)) +
geom_point() +
labs(x = "Density of Organizations from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "top") +
theme_bw()
plot_all <- plot_grid(plot1, plot2, plot3, plot4)
return(plot_all)
}
Plot_function_log <- function(plot_data, yvar, yname) {
plot1 <- plot_data %>%
ggplot(aes(x = Names1_log, y = yvar)) +
geom_point() +
labs(x = "Log Density of Studies", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "left", label.y = "top") +
theme_bw()
plot2 <- plot_data %>%
ggplot(aes(x = `Names1_log > 2010`, y = yvar)) +
geom_point() +
labs(x = "Log Density of Studies from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "left", label.y = "top") +
theme_bw()
plot3 <- plot_data %>%
ggplot(aes(x = Names2_log, y = yvar)) +
geom_point() +
labs(x = "Log Density of Organizations", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "left", label.y = "top") +
theme_bw()
plot4 <- plot_data %>%
ggplot(aes(x = `Names2_log > 2010`, y = yvar)) +
geom_point() +
labs(x = "Log Density of Organizations from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "left", label.y = "top") +
theme_bw()
plot_all <- plot_grid(plot1, plot2, plot3, plot4)
return(plot_all)
}
Plot_function_log_topright <- function(plot_data, yvar, yname) {
plot1 <- plot_data %>%
ggplot(aes(x = Names1_log, y = yvar)) +
geom_point() +
labs(x = "Log Density of Studies", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "top") +
theme_bw()
plot2 <- plot_data %>%
ggplot(aes(x = `Names1_log > 2010`, y = yvar)) +
geom_point() +
labs(x = "Log Density of Studies from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "top") +
theme_bw()
plot3 <- plot_data %>%
ggplot(aes(x = Names2_log, y = yvar)) +
geom_point() +
labs(x = "Log Density of Organizations", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "top") +
theme_bw()
plot4 <- plot_data %>%
ggplot(aes(x = `Names2_log > 2010`, y = yvar)) +
geom_point() +
labs(x = "Log Density of Organizations from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "top") +
theme_bw()
plot_all <- plot_grid(plot1, plot2, plot3, plot4)
return(plot_all)
}
Plot_function_log_bottomright <- function(plot_data, yvar, yname) {
plot1 <- plot_data %>%
ggplot(aes(x = Names1_log, y = yvar)) +
geom_point() +
labs(x = "Log Density of Studies", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "bottom") +
theme_bw()
plot2 <- plot_data %>%
ggplot(aes(x = `Names1_log > 2010`, y = yvar)) +
geom_point() +
labs(x = "Log Density of Studies from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "bottom") +
theme_bw()
plot3 <- plot_data %>%
ggplot(aes(x = Names2_log, y = yvar)) +
geom_point() +
labs(x = "Log Density of Organizations", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "bottom") +
theme_bw()
plot4 <- plot_data %>%
ggplot(aes(x = `Names2_log > 2010`, y = yvar)) +
geom_point() +
labs(x = "Log Density of Organizations from 2010", y = yname) +
geom_smooth(method = "lm") +
ggpmisc::stat_fit_glance(method = 'lm',
color = "red3",
aes(label = paste("P-value = ", signif(..p.value.., digits = 3), sep = "")),
label.x = "right", label.y = "bottom") +
theme_bw()
plot_all <- plot_grid(plot1, plot2, plot3, plot4)
return(plot_all)
}
Plot_function(all_data, all_data$hdi_2018, "Human Development Index (2018)")
Relationships between density of valuation studies and associated organizations, and the human development index
Log relationship graphs:
Plot_function_log_bottomright(all_data, all_data$hdi_2018, "Human Development Index (2018)")
Log relationships between density of valuation studies and associated organizations, and the human development index
Plot_function(all_data, all_data$Learning_outcomes_2015, "Learning Oucomes (2015)")
Relationships between density of valuation studies and associated organizations, and learning outcomes
Log relationship graphs:
Plot_function_log(all_data, all_data$Learning_outcomes_2015, "Learning Oucomes (2015)")
Log relationships between density of valuation studies and associated organizations, and learning outcomes
Plot_function(all_data, all_data$GDP_2019, "GDP (2019)")
Relationships between density of valuation studies and associated organizations, and GDP
Log relationship graphs:
Plot_function_log(all_data, all_data$GDP_2019, "GDP (2019)")
Log relationships between density of valuation studies and associated organizations, and GDP
Plot_function(all_data, all_data$CPI_2020, "Corruption Perception Index (2020)")
Relationships between density of valuation studies and associated organizations, and the corruption perception index
Log relationship graphs:
Plot_function_log(all_data, all_data$CPI_2020, "Corruption Perception Index (2020)")
Log relationships between density of valuation studies and associated organizations, and the corruption perception index
Plot_function(all_data, all_data$Pop_2018, "Population in Millions (2018)")
Relationships between density of valuation studies and associated organizations, and population
Log relationship graphs:
Plot_function_log(all_data, all_data$Pop_2018, "Population in Millions (2018)")
Log relationships between density of valuation studies and associated organizations, and population
d <- all_data %>%
mutate(GDP_per_capita = GDP_2019/Pop_2018)
Plot_function_topright(d, d$GDP_per_capita, "GDP per Capita")
Relationships between density of valuation studies and associated organizations, and GDP per capita
Log relationship graphs:
Plot_function_log_topright(d, d$GDP_per_capita, "GDP per Capita")
Log relationships between density of valuation studies and associated organizations, and GDP per capita
Plot_function(all_data, all_data$`Forest Area under FSC certification`, "Forest area under FSC certification")
Relationships between density of valuation studies and associated organizations, and forest area under FSC certification
Log relationship graphs:
Plot_function_log(all_data, all_data$`Forest Area under FSC certification`, "Forest area under FSC certification")
Log relationships between density of valuation studies and associated organizations, and forest area under FSC certification
Plot_function_topright(all_data, all_data$`Biodiversity Habitat Index`, "Biodiversity Habitat Index")
Relationships between density of valuation studies and associated organizations, and the biodiversity habitat index
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Biodiversity Habitat Index`, "Biodiversity Habitat Index")
Log relationships between density of valuation studies and associated organizations, and the biodiversity habitat index
Plot_function_topright(all_data, all_data$`Biodiversity Intactness Index`, "Biodiversity Intactness Index")
Relationships between density of valuation studies and associated organizations, and the biodiversity intactness index
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Biodiversity Intactness Index`, "Biodiversity Intactness Index")
Log relationships between density of valuation studies and associated organizations, and the biodiversity intactness index
Plot_function_topright(all_data, all_data$`Biocapacity per capita`, "Biocapacity per Capita")
Relationships between density of valuation studies and associated organizations, and the biocapacity per capita
Log relationship graphs:
Plot_function_log(all_data, all_data$`Biocapacity per capita`, "Biocapacity per Capita")
Log relationships between density of valuation studies and associated organizations, and the biocapacity per capita
Plot_function(all_data, all_data$`Ecological Footprint per capita`, "Ecological Footprint per Capita")
Relationships between density of valuation studies and associated organizations, and the ecological footprint per capita
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Ecological Footprint per capita`, "Ecological Footprint per Capita")
Log relationships between density of valuation studies and associated organizations, and the ecological footprint per capita
Plot_function(all_data, all_data$`Forest area`, "Forest Area")
Relationships between density of valuation studies and associated organizations, and forest area
Log relationship graphs:
Plot_function_log(all_data, all_data$`Forest area`, "Forest Area")
Log relationships between density of valuation studies and associated organizations, and forest area
Plot_function(all_data, all_data$`Water Footprint`, "Water Footprint")
Relationships between density of valuation studies and associated organizations, and the water footprint
Log relationship graphs:
Plot_function_log(all_data, all_data$`Water Footprint`, "Water Footprint")
Log relationships between density of valuation studies and associated organizations, and the water footprint
Plot_function(all_data, all_data$`Inland Fishery Production`, "Inland Fishery Production")
Relationships between density of valuation studies and associated organizations, and inland fishery production
Log relationship graphs:
Plot_function_log(all_data, all_data$`Inland Fishery Production`, "Inland Fishery Production")
Log relationships between density of valuation studies and associated organizations, and inland fishery production
Plot_function(all_data, all_data$`Marine Trophic Index (1950)`, "Marine Trophic Index in reference to 1950")
Relationships between density of valuation studies and associated organizations, and the region-based marine trophic index
Log relationship graphs:
Plot_function_log_bottomright(all_data, all_data$`Marine Trophic Index (1950)`, "Marine Trophic Index in reference to 1950")
Log relationships between density of valuation studies and associated organizations, and the region-based marine trophic index
Plot_function(all_data, all_data$`Nitrogen Fertilizers`, "Nitrogen Fertilizers")
Relationships between density of valuation studies and associated organizations, and nitrogen fertization
Log relationship graphs:
Plot_function_log(all_data, all_data$`Nitrogen Fertilizers`, "Nitrogen Fertilizers")
Log relationships between density of valuation studies and associated organizations, and nitrogen fertization
Plot_function(all_data, all_data$`Nitrogen Use Efficiency (%)`, "Nitrogen Use Efficiency (%)")
Relationships between density of valuation studies and associated organizations, and nitrogen use efficiency
Log relationship graphs:
Plot_function_log(all_data, all_data$`Nitrogen Use Efficiency (%)`, "Nitrogen Use Efficiency (%)")
Log relationships between density of valuation studies and associated organizations, and nitrogen use efficiency
Plot_function_topright(all_data, all_data$`Percentage protected`, "Percentage of Area Covered by PAs")
Relationships between density of valuation studies and associated organizations, and percentage of area covered by protected areas
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Percentage protected`, "Percentage of Area Covered by PAs")
Log relationships between density of valuation studies and associated organizations, and percentage of area covered by protected areas
Plot_function_topright(all_data, all_data$`Percentage of undernourished people`, "Percentage of Undernourished People")
Relationships between density of valuation studies and associated organizations, and percentage of undernourished people
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Percentage of undernourished people`, "Percentage of Undernourished People")
Log relationships between density of valuation studies and associated organizations, and percentage of undernourished people
Plot_function_topright(all_data, all_data$`Local Breeds at risk of extinction`, "Local Breeds At Risk of Extinction")
Relationships between density of valuation studies and associated organizations, and local breeds at risk of extinction
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Local Breeds at risk of extinction`, "Local Breeds At Risk of Extinction")
Log relationships between density of valuation studies and associated organizations, and local breeds at risk of extinction
Plot_function_topright(all_data, all_data$`PA of Key Biodiversity Areas Coverage (%)`, "Percentage of KBA covered by PAs")
Relationships between density of valuation studies and associated organizations, and PA of key biodiverisy area coverage
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`PA of Key Biodiversity Areas Coverage (%)`, "Percentage of KBA covered by PAs")
Log relationships between density of valuation studies and associated organizations, and PA of key biodiverisy area coverage
Plot_function_topright(all_data, all_data$`Protected area management effectiveness`, "PA Assessed on Management Effectiveness (%)")
Relationships between density of valuation studies and associated organizations, and protected area management effectiveness
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Protected area management effectiveness`, "PA Assessed on Management Effectiveness (%)")
Log relationships between density of valuation studies and associated organizations, and protected area management effectiveness
Plot_function(all_data, all_data$`Protected Area Connectedness Index`, "PA Connectedness Index")
Relationships between density of valuation studies and associated organizations, and the protected area connectedness index
Log relationship graphs:
Plot_function_log(all_data, all_data$`Protected Area Connectedness Index`, "PA Connectedness Index")
Log relationships between density of valuation studies and associated organizations, and the protected area connectedness index
Plot_function(all_data, all_data$`Species Habitat Index`, "Species Habitat Index")
Relationships between density of valuation studies and associated organizations, and the species habitat index
Log relationship graphs:
Plot_function_log_bottomright(all_data, all_data$`Species Habitat Index`, "Species Habitat Index")
Log relationships between density of valuation studies and associated organizations, and the species habitat index
Plot_function(all_data, all_data$`Species Protection Index (%)`, "Species Protection Index (%)")
Relationships between density of valuation studies and associated organizations, and the species protection index
Log relationship graphs:
Plot_function_log_bottomright(all_data, all_data$`Species Protection Index (%)`, "Species Protection Index (%)")
Log relationships between density of valuation studies and associated organizations, and the species protection index
Plot_function_topright(all_data, all_data$`Species Status Information Index`, "Species Status Information Index")
Relationships between density of valuation studies and associated organizations, and the species status information index
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Species Status Information Index`, "Species Status Information Index")
Log relationships between density of valuation studies and associated organizations, and the species status information index
Plot_function(all_data, all_data$`Total Wood Removals`, "Total wood removals (roundwood, m3")
Relationships between density of valuation studies and associated organizations, and total wood removals
Log relationship graphs:
Plot_function_log(all_data, all_data$`Total Wood Removals`, "Total wood removals (roundwood, m3")
Log relationships between density of valuation studies and associated organizations, and total wood removals
Plot_function_topright(all_data, all_data$`Trends in forest extent`, "Trends in forest extent")
Relationships between density of valuation studies and associated organizations, and trends in forest extent
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Trends in forest extent`, "Trends in forest extent")
Log relationships between density of valuation studies and associated organizations, and trends in forest extent
Plot_function(all_data, all_data$`Nitrogen Deposition Trends`, "Nitrogen Deposition Trends (kg N/ha/yr)")
Relationships between density of valuation studies and associated organizations, and nitrogen deposition trends
Log relationship graphs:
Plot_function_log_topright(all_data, all_data$`Nitrogen Deposition Trends`, "Nitrogen Deposition Trends (kg N/ha/yr)")
Log relationships between density of valuation studies and associated organizations, and nitrogen deposition trends
Plot_function(all_data, all_data$`Trends in Pesticides Use`, "Trends in Pesticides Use")
Relationships between density of valuation studies and associated organizations, and trends in pesticides use
Log relationship graphs:
Plot_function_log(all_data, all_data$`Trends in Pesticides Use`, "Trends in Pesticides Use")
Log relationships between density of valuation studies and associated organizations, and trends in pesticides use
Datasets
Altinok, N., N. Angrist and H.A. Patrinos. 2018. “Global data set on education quality (1965-2015).” World Bank Policy Research Working Paper No. 8314. Washington, DC. https://ourworldindata.org/grapher/learning-outcomes-vs-gdp-per-capita
Corruption Perception Index (2020) by Transparency International is licensed under CC-BY-ND 4.0 https://www.transparency.org/en/cpi/2020/index/
FAO. FAOSTAT. Annual Population. Latest update: 16/12/2019. (Accessed 24/03/2021). http://www.fao.org/faostat/en/#data/OA
FAO. FAOSTAT. Macro Indicators: Gross Domestic Product - Values US$. Latest update: 27/04/2021. (Accessed 02/09/2021). http://www.fao.org/faostat/en/#data/MK
Global Administrative Areas (version 3.6). University of California, Berkeley. Available online: https://gadm.org/
IPBES task force on knowledge and data (2020) IPBES Core Indicators - Harmonized Dataset, technical support unit on knowledge and data, Frankfurt, Germany. DOI: 10.5281/zenodo.4439411
IPBES Technical Support Unit on Knowledge and Data. (2020). IPBES regions and sub-regions (1.1) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.3928281
ISO 3166-1:2020, Codes for the representation of names of countries and their subdivisions — Part 1: Country codes
United Nations Development Programme. Human Development Reports. Human Development Index (HDI). (Accessed 24/03/2021). http://hdr.undp.org/en/indicators/137506#
R packages
Claus O. Wilke (2019). cowplot: Streamlined Plot Theme and Plot Annotations for ‘ggplot2’. R package version 1.0.0. https://CRAN.R-project.org/package=cowplot
Frank E Harrell, et al. (2020). Hmisc: Harrell Miscellaneous. R package version 4.4-1. https://CRAN.R-project.org/package=Hmisc
Hadley Wickham and Jennifer Bryan (2019). readxl: Read Excel Files. R package version 1.3.1. https://CRAN.R-project.org/package=readxl
Michael C. J. Kao, Markus Gesmann and Filippo Gheri (2020). FAOSTAT: Download Data from the FAOSTAT Database. R package version 2.2.1. https://CRAN.R-project.org/package=FAOSTAT
Pebesma, E., 2018. Simple Features for R: Standardized Support for Spatial Vector Data. The R Journal 10 (1), 439-446, https://doi.org/10.32614/RJ-2018-009
Wei T, Simko V (2021). R package ‘corrplot’: Visualization of a Correlation Matrix. (Version 0.90), https://github.com/taiyun/corrplot.
Wickham et al., (2019). Welcome to the tidyverse. Journal of Open Source Software, 4(43), 1686, https://doi.org/10.21105/joss.01686