Teodoro D’Agostino(tedagar@alumni.uv.es)
Jorge González(jorgonan@alumni.uv.es)
Aurora Lloret(aullohe@alumni.uv.es).
Universitat de ValènciaTrabajo elaborado para la asignatura “Programación y manejo de datos en la era del Big Data” de la Universitat de València durante el curso 2021-2022. El repo del trabajo está aquí.
La página web de la asignatura y los trabajos de mis compañeros pueden verse aquí.
En este trabajo trataremos de extraer algunas conclusiones y ayudar al lector a comprender algunos datos sobre la piratería marítima en el mundo actual. Nuestro dataset se basa en el que se puede encontrar aquí. La referencia completa es esta (Benden and Dalla Riva 2021).
A pesar de que la mención de piratas evoca en la mente de la mayoría de nosotros nociones de rudos aventureros delinquiendo por sus vidas en las aguas turquesas de algún paraíso tropical siglos atrás, la pitarería marina es un problema actual con serias implicaciones sociales y económicas, que ha ganado terreno en el discurso mediático y la investigación académica a partir de casos trágicos como el secuestro de un barco ruso en la costa somalí en septiembre de 2008, u otro evento similar siete meses después con el carguero Maersk Alabama, que fue resuelto con el rescate por parte del ejército norteamericano de los rehenes tomados (Haywood and Spivak 2013).
No existe una única definición clara de qué constituye un ataque pirata, lo cual dificulta su estudio y la formulación de políticas adecuadas para su resolución (Dillon and Dillon 2005). Resulta útil, por tanto, atender a los detalles de cada evento susceptible de ser clasificado como acto de piratería y ajustar la respuesta institucional al problema a los distintos tipos de ataques que pueden producirse. Este dataset resulta de utilidad justamente por permitir diferenciar entre distintas variedades de ataque. Lo que une todos ellos viene recogido por la definición que proporciona el diccionario de Oxford del término piracy (“Piracy” 2021):
The action of committing robbery, kidnap, or violence at sea or from the sea without lawful authority, especially by one vessel against another; an instance of this.
La piratería en el mundo actual es una lacra para el desarrollo, con un coste económico estimado entre los 7 y 12 mil millones de dólares americanos al año, o incluso más (Bowden et al. 2010). Sin embargo, es probable que las peores consecuancias sean las humanitarias, que se dejan sentir especialmente en aquellos paíse subsdesarrollados en cuyas aguas se emplazan la mayoría de ataques. Es importante considerar que la mayoría de actos de piratería suceden en un contexto mayor de violencia y desorden que casi siempre va de la mano de altos niveles de corrupción y llega a incluir guerras civiles, y que como mínimo condiciona la vida de la población local a causa de las distorsiones que genera en los sectores pesquero y de explotación minera y petrolífera, a menudo principales fuentes de riqueza de las comunidades costeras de estos países (Nincic 2009)(Fu, Ng, and Lau 2010).
Nuestro análisis va a permitir identificar algunas de las tendencias que han definido la evolución de la piratería en estos últimos años, especialmente en lo referente a prevalencia de los tipos de ataques y movimiento de las “zonas calientes” de la piratería internacional. También vamos a contextualizar esta información con datos de carácter económico, social y político.
Vamos a analizar un dataset que contiene información sobre 7511 ataques pirata ocurridos entre 1993 y 2020. Esta tabla permite apreciar el tipo de datos que tenemos:
library(DT)
datatable(pirate_attacks, rownames = FALSE, filter="top", options = list(pageLength = 10, scrollX=T))
Aquí mostraremos como hemos tratado los datos para poder llevar a cabo nuestros análisis. Para ello hemos unido dos de los datasets que teníamos y hemos tratado de limpiar los datos. Las principales labores han consistido en corregir inconsistencias en los nombres de tipos de ataques, barcos… además de cuestiones algo más técnicas de manipulación de la expresión de fecha y tipo de variable cuando lo hemos requerido.
#Ahora mostramos el código
# DATA SOURCE: Benden, P., Feng, A., Howell, C. and Dalla Riva, G.V., 2021. Crime at Sea: A Global Database of Maritime Pirate Attacks (1993–2020). Journal of Open Humanities Data, 7, p.19. DOI: http://doi.org/10.5334/johd.39
country_codes <- read_csv("datos/country_codes.csv")
country_indicators <- read_csv("datos/country_indicators.csv")
pirate_attacks <- read_csv("datos/pirate_attacks.csv")
country_data <- full_join(country_codes, country_indicators, by = c("country" = "country"))
pirate_attacks <- pirate_attacks %>% mutate(year = year(date))
pirate_attacks <- pirate_attacks %>% mutate(attack_type = case_when(
attack_type == "Boarding" ~ "Boarded",
TRUE ~ attack_type))
pirate_attacks <- pirate_attacks %>% mutate(vessel_status = case_when(
vessel_status == "steaming" ~ "Steaming",
TRUE ~ vessel_status))
pirate_attacks <- pirate_attacks %>% mutate(vessel_type = case_when(
vessel_type == "BULK CARRIER" ~ "Bulk Carrier",
TRUE ~ vessel_type))
pirate_attacks <- pirate_attacks %>% mutate(vessel_type = case_when(
vessel_type == "CONTAINER" ~ "Container",
TRUE ~ vessel_type))
pirate_attacks <- pirate_attacks %>% mutate(vessel_type = case_when(
vessel_type == "PRODUCT TANKER" ~ "Product Tanker",
TRUE ~ vessel_type))
pirate_attacks <- pirate_attacks %>% mutate(vessel_type = case_when(
vessel_type == "Offshore Supply ship" ~ "Offshore Supply Ship",
TRUE ~ vessel_type))
pirate_attacks <- pirate_attacks %>% mutate(vessel_type = case_when(
vessel_type == "OFFSHORE SUPPLY SHIP" ~ "Offshore Supply Ship",
TRUE ~ vessel_type))
pirate_attacks <- pirate_attacks %>% mutate(vessel_type = case_when(
vessel_type == "Offshore Supply" ~ "Offshore Supply Ship",
TRUE ~ vessel_type))
rm(country_codes, country_indicators)
pirate_attacks <- pirate_attacks %>% mutate(year = as.integer(year))
full_by_nearest <- full_join(pirate_attacks, country_data, by = c("nearest_country" = "country", "year" = "year"))|> filter(!is.na(longitude))
Para que sirva de primera aproximación, en este globo terráqueo se pueden explorar los ataques registrados, el país más cercano a donde se produjeron y su año.
library("covid19.analytics")
library("plotly")
df2 <- full_by_nearest |> separate(date, c("year", "month", "day"), "-" ) |> dplyr::select("year","longitude","latitude","country_name") |> mutate(year = as.numeric(year)) |> rename(Province = year) |> rename(Country = country_name)|> rename(Long = longitude)|> rename(Lat = latitude) |> dplyr::select(4,1,2,3) |> as.data.frame()
globemap <- live.map(data = df2, select.projctn = FALSE, title = "", no.legend = TRUE)
globemap <- globemap %>% layout(title = "")
htmltools::div(globemap, align = "center" )
library(ggplot2)
library(png)
library(dplyr)
library(grid)
#barco <- readPNG("imagenes/barco.png")
#Ataques totales a lo largo de los años
at_totales <- pirate_attacks %>% group_by(year) %>% summarise(total= n())
#representamos
p1 <- ggplot(data = at_totales, aes(year, total)) + geom_line(color="darkblue") + geom_point(color="darkblue") + theme_minimal() + geom_text(aes(y = total, ymax = total, label = total), position = position_dodge(width = 0.9), size=3, vjust=-0.8, hjust=0.8 ,col="black") + theme_classic() + labs(title = "Total de ataques",
subtitle = "(1993-2020)",
x = "Años",
y = "Nº de ataques") + theme(plot.title = element_text(size = 20, face = "bold", hjust = 0.5),plot.subtitle = element_text(size = 20, hjust = 0.5))
#Añadimos una imagen
img <- readPNG("imagenes/barco.png", FALSE)
marca <- rasterGrob(img, interpolate=F,height=unit(3, "cm"),hjust=-1.30, vjust=-0.5)
p1 + annotation_custom(marca,xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf)
marca
#> rastergrob[GRID.rastergrob.11]
year_at_max <- at_totales |> select(year) %>% slice_max(order_by= year, n = 1) |> as.integer()
at_max <- at_totales |> select(total) %>% slice_max(order_by= total, n = 1) |> as.integer()
Podemos ver como han ido evolucionando los ataques totales a lo largo de los años. Su máximo fue en el año 2020 con un total de 469 ataques. En la actualidad se han reducido debido a 190 ataques. Los ataques a los barcos ponen en peligro la vida de la tripulación, además afectan al comercio internacional. A lo largo del tiempo la preoucupación ha crecido debido a que los asaltantes cada vez hacen más uso de las armas. Debido a esto la pirateria marina ha pasado por distintas fases de regulación en el Derecho Internacional. Acciones como el uso de patrulleras han ayudado en la disminución de los ataques.
#intento de mapa
library(mapdata)
library(ggplot2)
library(maps)
library(ggrepel)
library(gganimate)
library(plotly)
# Guardamos la información en un nuevo dataframe llamado mapa_mundo
at_mapa <- pirate_attacks %>% select(longitude, latitude, attack_type, year)
mapa_mundo <- map_data("world")
p <- mapa_mundo %>%
ggplot() +
geom_polygon(aes( x= long, y = lat, group = group),
fill = "white",
color = "black") +
theme_minimal() +
theme(
axis.line = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
panel.background = element_rect(colour= "black", size= 1)) +
geom_point(data=at_mapa, aes(longitude, latitude),
color= "darkgoldenrod1", size=2) +
labs(title = "Concentración de los ataques",
subtitle = "(1993-2020)") + theme(plot.title = element_text(size = 20, face = "bold", hjust = 0.5),plot.subtitle = element_text(size = 20, hjust = 0.5)) +
coord_fixed (xlim= c(-200,200),
ylim= c(-58,90),
ratio = 1.3) + transition_time(year) + labs(caption = "Year: {frame_time}") + theme(panel.background = element_rect(fill = "lightblue2"))
animate(p, width = 700, height = 432, fps = 1, duration = 15, rewind = FALSE)
Los ataques se han concentrado sobre todo en el Sudeste asiático y el subcontinente indio, África y América del Sur, Central y las Aguas del Caribe. Podemos ver que durante los primeros años (1993-2008) hay una mayor concentración de los ataques en el estrecho de Malasia, sin embargo comienzan a reducirse debido al aumento de la vigilancia maritima. En Indonesia la Policía Marina de Indondesia(IMP) actúa para evitar más ataques patrullando cerca de las costas, por lo que ha establecido ciertos puntos de mayor protección.
En cuanto a África podemos ver que en el golfo de Guinea aproximadamente desde 1999 ha habido una gran concentración de ataques. En Nigeria los piratas son violentos y van armados. Estas aguas se consideran de alto riesgo. Debido a la guerra civil en Yemén en esta zona se suelen concentrar ataques a barcos que no tienen porque estar directamente relacionados con la piratería. Por último, en la actualidad se concentran menos ataques en Kenia, Tanzania, Océano Índico…, sin embargo como se puede ver, en el pasado se concentraron la mayoría de los ataques.
Finalmente, América del Sur también ha sido una zona de concentración de ataques, aunque con menor relevancia que los comentados anteriormente. Muchas de estas conclusiones se ven reflejadas, quizás con mayor claridad, en la siguiente gráfica dinámica:
full_by_nearest <- full_join(pirate_attacks, country_data, by = c("nearest_country" = "country", "year" = "year"))|> filter(!is.na(longitude))
df <- full_by_nearest |> drop_na(region) |> dplyr::select(year, region) |> unite("id", c(1:2), sep = "_", remove = TRUE)|> group_by(id) |> mutate(nattacks = n()) |> ungroup() |> distinct() |> separate(id, c("year", "region"), "_" ) |> mutate(year = as.numeric(year)) %>% mutate(region = case_when(
region == "East Asia & Pacific" ~ "Asia del Este & Pacífico",
region == "Latin America & Caribbean" ~ "Latino América & Caribe",
region == "South Asia" ~ "Sur de Asia",
region == "Sub-Saharan Africa" ~ "África Sub-Sahariana",
TRUE ~ region))
accumulate_by <- function(dat, var) {
var <- lazyeval::f_eval(var, dat)
lvls <- plotly:::getLevels(var)
dats <- lapply(seq_along(lvls), function(x) {
cbind(dat[var %in% lvls[seq(1, x)], ], frame = lvls[[x]])
})
dplyr::bind_rows(dats)
}
fig <- df
fig <- fig %>% accumulate_by(~year)
fig <- fig %>%
plot_ly(
x = ~year,
y = ~nattacks,
split = ~region,
frame = ~frame,
type = 'scatter',
mode = 'lines',
fill = 'tozeroy',
line = list(simplyfy = F)
)
fig <- fig %>% layout(
xaxis = list(
title = "Año",
zeroline = F
),
yaxis = list(
title = "Número de ataques",
zeroline = F
)
)
fig <- fig %>% animation_opts(
frame = 100,
transition = 0,
redraw = FALSE
)
fig <- fig %>% animation_slider(
currentvalue = list(
prefix = "Año "
)
)
htmltools::div(fig, align = "center" )
Existen diferentes tipos de ataques como por ejemplo los abordajes, secuestros, explosiones… vamos a ver cuáles son más frecuentes. Para este análisis hemos excluido los ataques de los cuales no hay información en está categoría (120 ataques).
#Ataques según tipo: cantidad total de los ataques según el tipo entre 1993 y 2020 (en el grafico poner los numeros en las barras)
library(ggthemes)
a <- pirate_attacks %>% select(year, attack_type) %>% group_by(year) %>% count(attack_type) %>% filter(year < 2000) %>% group_by(attack_type) %>% summarise(n = sum(n)) %>% drop_na()
period <- c("1993-1999","1993-1999","1993-1999","1993-1999")
a <- data.frame(period, a)
b <- pirate_attacks %>% select(year, attack_type) %>% group_by(year) %>% count(attack_type) %>% filter(year > 1999 & year < 2007, !attack_type == "Detained") %>% group_by(attack_type) %>% summarise(n = sum(n)) %>% drop_na()
period <- c("2000-2006","2000-2006","2000-2006",
"2000-2006")
b <- data.frame(period, b)
c <- pirate_attacks %>% select(year, attack_type) %>% group_by(year) %>% count(attack_type) %>% filter(year > 2006 & year < 2014) %>% group_by(attack_type) %>% summarise(n = sum(n)) %>% drop_na()
period <- c("2007-2013","2007-2013","2007-2013","2007-2013")
c <- data.frame(period, c)
d <- pirate_attacks %>% select(year, attack_type) %>% group_by(year) %>% count(attack_type) %>% filter(year > 2013) %>% group_by(attack_type) %>% summarise(n = sum(n)) %>% drop_na()
period <- c("2014-2020","2014-2020","2014-2020","2014-2020",
"2014-2020")
d <- data.frame(period, d)
at <- rbind(a,b,c,d) %>% mutate(attack_type = forcats::as_factor(attack_type)) %>% mutate(attack_type = forcats::fct_reorder(attack_type, n, .desc = TRUE))
ggplot(data=at, aes(attack_type, n)) +
geom_bar(stat="identity", fill="MediumSlateBlue") +
theme_classic() +
geom_text(aes(y = n, label = n),
position = position_dodge(width = 0.9), size=3,
vjust=-0.1, hjust=0.5 ,col="black", fontface = "bold") +
labs(title = "Tipos de ataques",
subtitle = "(1993-2020)",
x = "Tipos de ataques",
y = "Número de ataques") +
theme(plot.title = element_text(size = 20, face = "bold",
hjust = 0.5),
plot.subtitle = element_text(size = 20, hjust = 0.5)) +
facet_wrap(vars(period)) +
scale_x_discrete(labels=c("Abordaje","Intento","Secuestro",
"Duda", "Explosión", "Disparos")) +
scale_y_continuous(limits = c(0, 1700))
Los ataques más frecuentes son los abordajes, los piratas suelen atacar los barcos mientras navegan o están anclados, además se hace especial advertencia a la noche, que es cuando más posibilidades de ser atacado hay. Por lo tanto, los barcos deben prestar vigilancia en todo momento. En menor medida pero también relevantes son los secuestros, en el pasado se llevaron a cabo varios secuestros de camiones cisterna de productos pequeños en la zona del Mar de China Meridional.Los secuestros que se empezaron a observar en 2014 no duraron más de un año. Con éxito las autoridades consiguieron atrapar a varios de los secuestradores. En la zona de África muchos de los secuestros los utilizaban para pedir rescate. A partir de ahora centraremos el análisis en los tipos más comunes: abordaje, intento y secuestro.
Si centramos el foco en estos tres tipos de ataque y los representamos sobre el mapa, comenzamos a identificar alguna de las tendencias más importantes que vienen reflejadas en la literatura sobre piratería. Principalmente, observamos que los secuestros tienen mucha mayor importancia en el Índico occidental que en ninguna otra área. También comenzamos a observar que los ataques de secuestro e intentos fallidos son mucho más frecuentes a mayor distancia de la costa.
library(tmap)
library(ggplot2)
library(maps)
library(ggthemes)
data(World)
world <- World |> filter(continent != "Antarctica") ; rm(World)
df <- pirate_attacks |> filter(attack_type == "Boarded" | attack_type == "Hijacked" | attack_type == "Attempted" )
map_by_type <- ggplot() +
geom_sf(data = world, color = "grey", fill = "grey", lwd = 0.2, aes(geometry = geometry)) +
geom_point(data = df, aes(x = longitude, y = latitude, color = attack_type), size = 0.5, alpha = 0.3) +
scale_color_discrete(labels = c("Intento", "Abordaje", "Secuestro")) +
theme(plot.title = element_text(hjust = 0.5),
axis.ticks = element_line(linetype = "blank"),
panel.grid.major = element_line(linetype = "blank"),
panel.grid.minor = element_line(linetype = "blank"),
legend.title = element_text(face = "bold"),
panel.background = element_rect(fill = NA),
legend.key = element_rect(fill = NA),
legend.background = element_rect(fill = NA),
legend.position = "bottom", legend.direction = "horizontal") +labs(title = "Ataques de los tipos más frecuentes", x = NULL,
y = NULL, colour = "Tipo de ataque")+ theme(axis.text = element_text(face = "bold",
colour = NA, hjust = 0, vjust = 0), legend.background = element_rect(fill = "white"),
legend.position = c(0.1, 0.3), legend.direction = "vertical")
map_by_type
El siguiente gráfico, con la distancia media a la costa de cada tipo de ataque, confirma esta intuición:
df <- pirate_attacks |> filter(attack_type == "Boarded" | attack_type == "Hijacked" | attack_type == "Attempted" ) |> group_by(attack_type) |> summarise(n = mean(shore_distance)) |> mutate(attack_type = forcats::as_factor(attack_type)) |> mutate(attack_type = forcats::fct_reorder(attack_type, n, .desc = TRUE))
ggplot(data = df) + geom_bar(mapping = aes(x = attack_type, y = n), stat = "identity", fill=c("PowderBlue", "MistyRose", "LightSteelBlue")) + theme(panel.grid.major = element_line(linetype = "blank"),
panel.grid.minor = element_line(linetype = "blank"),
panel.background = element_rect(fill = NA)) +
labs(title = "Distancia media a la costa por tipo de ataque",
x = "Tipos de ataques",
y = "Distancia media a la costa") + theme(plot.title = element_text(size = 20, face = "bold", hjust = 0.5), plot.subtitle = element_text(size = 20, hjust = 0.5)) + scale_x_discrete(labels=c("Intento","Secuestro","Abordaje"))
Finalmente, un vistazo a este gráfico tridimensional también permite apreciar las tendencias en la distancia a la costa según el tipo de ataque descritas previamente, además de evidenciar la concentración de los ataques en la franja tropical y en las costas de las masas continentales. De hecho, cuando se posiciona el punto de vista perpendicularmente al plano (x,y), es posible apreciar cómo los puntos perfilan el contorno de África y América del Sur.
library(plotly)
df <- full_by_nearest |> filter(attack_type == "Boarded" | attack_type == "Hijacked" | attack_type == "Attempted" ) %>%
mutate(attack_type = case_when(
attack_type == "Boarded" ~ "Abordaje",
attack_type == "Hijacked" ~ "Secuestro",
attack_type == "Attempted" ~ "Intento",
TRUE ~ attack_type
))
fig3d <- plot_ly(df, x = ~longitude, y = ~latitude, z = ~shore_distance, color = ~attack_type, size = 0.2, alpha = 1)
fig3d <- fig3d %>% add_markers()
fig3d <- fig3d %>% layout(scene = list(xaxis = list(title = 'Longitud'),
yaxis = list(title = 'Latitud'),
zaxis = list(title = 'Distancia a la costa')))
fig3d
at_estado <- pirate_attacks %>% select(year, vessel_status) %>% group_by(year) %>% count(vessel_status) %>% filter(!is.na(vessel_status)) %>% slice_max(order_by = n, n=7) %>% group_by(vessel_status) %>% summarise(h=sum(n)) %>% slice_max(order_by = h, n=11) %>%
mutate(vessel_status = case_when(
vessel_status == "Anchored" ~ "Anclado",
vessel_status == "Steaming" ~ "Navegando",
vessel_status == "Berthed" ~ "Atracado",
vessel_status == "Underway" ~ "En marcha",
vessel_status == "Stationary" ~ "Estacionado",
vessel_status == "Drifting" ~ "A la deriva",
vessel_status == "Moored" ~ "Amarrado",
vessel_status == "Bunkering operations" ~ "Repostando",
vessel_status == "Fishing" ~ "Pescando",
vessel_status == "Grounded" ~ "En tierra",
vessel_status == "Towed" ~ "Remolcado",
)) %>%
mutate(vessel_status = forcats::as_factor(vessel_status)) %>% mutate(vessel_status = forcats::fct_reorder(vessel_status, h, .desc = FALSE))
ggplot(data=at_estado, aes(vessel_status, h)) + geom_col(fill="Thistle") +
coord_flip() +
theme_minimal() +
labs(title = "Estado de las embarcaciones",
x = "Estado de la embarcación",
y = "Número de embarcaciones") +
theme(plot.title = element_text(size = 20, face = "bold", hjust = 0), plot.subtitle = element_text(size = 20, hjust = 0.5),
axis.title.x = element_text(size = 13, hjust = 1, vjust = 0),
axis.title.y = element_text(size = 13, hjust = 1, vjust = 1))
La mayoría de las embarcaciones cuando fueron atracadas se encontraban ancladas, navegando o atracadas. Los piratas suelen huir cuando suenan las alarmas de los barcos sin dar tiempo a ser atrapados, por lo que muchos de los incidentes resultan no denunciarse. Las autoridades ponen a disposición Imb Piracy Reporting Centre donde pueden reportar todos los incidentes que se produzcan.
Si centramos el foco del análisis sobre el tipo de barco atacado, para los cinco tipos más frecuentes, no podemos extraer ninguna conclusión tan clara:
df <- pirate_attacks |> filter(vessel_type %in% c(
"Bulk Carrier",
"Product Tanker",
"Container",
"General Cargo",
"Chemical Tanker"))
data(World)
world <- World |> filter(continent != "Antarctica") ; rm(World)
map_by_type2 <- ggplot() +
geom_sf(data = world, color = "grey", fill = "grey", lwd = 0.2, aes(geometry = geometry)) +
geom_point(data = df, aes(x = longitude, y = latitude, color = vessel_type), size = 0.5, alpha = 0.3) + theme(axis.ticks = element_line(linetype = "blank"),
panel.grid.major = element_line(linetype = "blank"),
panel.grid.minor = element_line(linetype = "blank"),
legend.title = element_text(face = "bold"),
panel.background = element_rect(fill = NA),
legend.key = element_rect(fill = NA),
legend.background = element_rect(fill = NA),
legend.position = "bottom", legend.direction = "horizontal") +
labs(title = "Ataques de los tipos de barco más frecuentes",
x = NULL,
y = NULL,
colour = "Tipo de barco")+
scale_color_discrete(labels = c("Granelero", "Buque cisterna\nquímico", "Contenedor", "Carguero", "Buque de\nproductos")) +
theme(plot.title = element_text(hjust = 0.5),
axis.text = element_text(face = "bold",
colour = NA, hjust = 0, vjust = 0),
legend.background = element_rect(fill = "transparent"),
legend.position = c(0.1, 0.3),
legend.direction = "vertical",
legend.title = element_text(hjust = 0.5))
map_by_type2
nom_barc <- pirate_attacks %>% select(year, vessel_name) %>% group_by(year) %>% count(vessel_name) %>% filter(!is.na(vessel_name)) %>% filter(!vessel_name %in% c("Unspecified","Name Withheld")) %>% group_by(vessel_name) %>% summarise(h=sum(n)) %>% slice_max(order_by = h, n=5) %>% mutate(vessel_name = forcats::as_factor(vessel_name)) %>% mutate(vessel_name = forcats::fct_reorder(vessel_name, h, .desc = TRUE))
library(plotly)
p1 <- ggplot(data=nom_barc, aes(vessel_name, h )) + geom_col(fill="PaleVioletRed") + theme_minimal() +
labs(title = "Nombres de las embarcaciones más atacadas",
x = "Nombre del barco",
y = "Número de ataques") + theme(plot.title = element_text(size = 20, face = "bold", hjust = 0), plot.subtitle = element_text(size = 20, hjust = 0.5),
axis.title.x = element_text(size = 13, hjust = 1, vjust = 0),
axis.title.y = element_text(size = 13, hjust = 1, vjust = 1))
s <- ggplotly(p1)
htmltools::div(s, align = "center" )
Como hemos comentado antes, el Maersk Alamaba fue secuestrado allá por el 2009, cuatro piratas somalís tomaron posesión del barco. Fue un acontecimineto importante ya que era el primer asalto que se realizaba con éxito desde el Siglo XIX a un buque portador de la bandera estadounidense. En este secuestro los piratas tuvieron vigilada a la tripulación a punta de pistola. Finalmente la armada de EE.UU abatió a tres de los secuestradores.
Otro ejemplo curioso es el del Thor Falcon, que sufrió 6 ataques en el 2003 seis días seguidos. Este barco fue abordado cerca de Bangladesh las 6 veces mientras se encontraba atracado.
El siguiente dataset con el que vamos a trabajar contiene datos de una serie de indicadores para la mayoría de países del mundo. Estos países vienen agrupados en regiones, las cuales no coinciden necesariamente con los continentes. Por este motivo, resulta interesante realizar un primer análisis exploratorio de los principales indicadores del dataset por regiones, para después centrarnos más de cerca en aquellos países más relevantes
datatable(paises, rownames = FALSE, filter="top", options = list(pageLength = 10, scrollX=T))
Para comenzar, realizaremos un análisis exploratorio de los principales datos de este dataset por regiones. En el mapa que se muestra a continuación se representan las distintas regiones en las que vienen agrupados los países. Cabe destacar casos como el de México. País que, aun estando en Norte América, viene recogido por la región de América latina y el Caribe.
media_regiones <- paises %>%
select(region, country_name, total_military) %>%
group_by(region, country_name) %>%
summarise(media_militar = mean(total_military, na.rm = TRUE)) %>%
ungroup() %>% group_by(region) %>%
mutate(media_militar = mean(media_militar, na.rm = TRUE)) %>%
mutate(iso2 = countrycode::countrycode(
sourcevar = country_name, origin = "country.name",
destination = "iso2c", warn = FALSE), .after = country_name)
mapa_mundo <- map_data("world") %>%
mutate(iso2 = countrycode::countrycode(
sourcevar = region, origin = "country.name",
destination = "iso2c", warn = FALSE), .after = region)
paises_mapa <- full_join(mapa_mundo, media_regiones,
by= c("iso2"="iso2"))
t <- paises_mapa %>%
ggplot() +
geom_polygon(aes(x= long, y = lat, group = group, fill = region.y),
color = "black") +
labs(
title = "Representación de los\npaíses de cada región",
fill = "Regiones"
) +
scale_fill_discrete(breaks = c("East Asia & Pacific",
"Europe & Central Asia",
"Latin America & Caribbean",
"Middle East & North Africa",
"North America", "South Asia",
"Sub-Saharan Africa"),
labels = c("Asia del Este\n& Pacífico",
"Europa\n& Asia Central",
"Latino América\n& Caribe",
"Oriente Medio\n& Norte de Africa",
"América\ndel Norte",
"Sur\nde Asia",
"África\nSub-Sahariana")) +
theme_minimal() +
theme(plot.title = element_text(
size = 15, face = "bold", hjust = 0.5),
axis.line = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
panel.background = element_rect(colour= "black",
size= 1,
fill = "lightblue2"),
legend.title = element_text(face= "bold"),
legend.position = "bottom",
legend.direction = "horizontal") +
coord_fixed (xlim= c(-200,200),
ylim= c(-58,90),
ratio = 1.3)
t
El índice de corrupción es un indicador que mide la percepción de corrupción en cada uno de los países. Es un indicador publicado por Transparencia Internacional desde 1995, siendo 100 un nivel de corrupción nulo y 0 un nivel de corrupción muy elevado.
Es importante destacar que hasta el año 2012, el índice de corrupción venía recogido en una escala del 0 al 10. Sin embargo, en 2012 la escala fue cambiada de 0 a 100. Por este motivo, hemos realizado un cambio de escala para los años anteriores a 2012, obteniendo de este modo valores entre 0 y 100 para todo el periodo analizado.
A continuación podemos observar la evolución del índice de corrupción desde 1995 hasta 2019, a excepción del año 1999 en el cual no existen datos. La región mejor considerada es América del Norte, mientras que África Sub-Sahariana es la región con la peor calificación en este apartado.
Otro hecho relevante es la disminución de este índice tras la crisis financiera del 2008 y su posterior recaída en 2014 en las regiones más ricas. Este hecho puede deberse a la naturaleza de este indicador, puesto que se obtiene a través de encuestas de opinión a la ciudadanía y evaluaciones de expertos.
media_regiones <- paises %>%
group_by(region, year) %>%
summarise(media_corrupción = mean(corruption_index, na.rm = TRUE),
media_homicidios = mean(homicide_rate, na.rm = TRUE),
media_militar = mean(total_military, na.rm = TRUE),
media_gasto = mean(totalgr, na.rm= TRUE)) %>%
ungroup() %>% mutate(year = as.numeric(year)) %>%
mutate(media_corrupción = ifelse(
year<2012, media_corrupción *10, media_corrupción)) %>%
filter(year >= 1995) %>%
mutate(media_regiones= is.numeric(media_regiones))
zz <- media_regiones %>%
ggplot(aes(x = region,
y = media_corrupción,
fill= region )) +
geom_bar(stat= "identity",
color = "white",
show.legend = FALSE) +
geom_text(aes(label = round(media_corrupción, digits = 2)),
position = position_dodge(0.9),
vjust= 1.2,
size = 5,
color = "white")+
scale_x_discrete(labels = c("Asia del Este\n& Pacífico",
"Europa\n& Asia Central",
"Latino América\n& Caribe",
"Oriente Medio\n& Norte de Africa",
"América\ndel Norte",
"Sur\nde Asia",
"África\nSub-Sahariana")) +
scale_y_continuous(labels = scales::comma) +
theme_minimal()+
enter_appear() +
transition_states(year,
transition_length = 1.5,
state_length = 2) +
labs(title = " Evolución del índice de corrupción por regiones \n Año: {closest_state}",
subtitle = "Evolución por regiones",
y = "",
x = "") +
theme(panel.grid.major.x = element_blank(),
plot.title = element_text(size = 18,
face = "bold",
hjust = 0.5),
plot.subtitle = element_text(size=14,
face = "plain",
hjust = 0.5))
animate(zz, width = 700, height = 700, fps = 2,
duration = 30, rewind = FALSE)
media_regiones %>% #gtTable
select(region, year, media_corrupción) %>%
filter(!year %in% c(1993, 1994,1999, NA)) %>%
pivot_wider(names_from = "region",
values_from = "media_corrupción") %>%
gt(rowname_col = "year") %>%
tab_header(title = md("Índice de corrupción por regiones"),
subtitle = md("De 1995 a 2019")) %>%
tab_options(heading.background.color = "midnightblue") %>%
tab_options(heading.title.font.size = 25,
heading.subtitle.font.size = 20,
column_labels.font.weight = "bold",
heading.align = "center") %>%
tab_options(table.align = "center") %>%
cols_align(align = "center") %>%
cols_label(`East Asia & Pacific` = "Asia del Este & Pacífico",
`Europe & Central Asia` = "Europa & Asia Central",
`Latin America & Caribbean` = "Latino América & Caribe",
`Middle East & North Africa` =
"Oriente Medio & Norte de Africa",
`North America` = "América del Norte",
`South Asia` = "Sur de Asia",
`Sub-Saharan Africa` = "África Sub-Sahariana") %>%
fmt_number(columns= 2:8,
decimals = 2,
dec_mark = ",")
Índice de corrupción por regiones | |||||||
---|---|---|---|---|---|---|---|
De 1995 a 2019 | |||||||
Asia del Este & Pacífico | Europa & Asia Central | Latino América & Caribe | Oriente Medio & Norte de Africa | América del Norte | Sur de Asia | África Sub-Sahariana | |
1995 | 55,16 | 69,33 | 41,93 | NaN | 83,30 | 25,15 | 56,20 |
1996 | 56,66 | 67,40 | 35,36 | 51,47 | 83,10 | 19,73 | 27,50 |
1997 | 53,67 | 67,75 | 36,36 | 79,70 | 83,55 | 26,40 | 33,55 |
1998 | 53,83 | 61,87 | 34,00 | 46,80 | 83,50 | 28,00 | 35,60 |
2000 | 52,50 | 55,21 | 39,27 | 48,40 | 85,00 | 28,00 | 32,37 |
2001 | 54,50 | 56,81 | 37,22 | 53,50 | 82,50 | 18,00 | 31,47 |
2002 | 54,75 | 54,85 | 34,48 | 47,40 | 83,50 | 25,50 | 31,50 |
2003 | 49,57 | 50,80 | 34,36 | 41,05 | 81,00 | 25,00 | 29,24 |
2004 | 49,07 | 50,70 | 36,56 | 41,15 | 73,50 | 25,40 | 28,81 |
2005 | 65,94 | 51,38 | 61,35 | 42,30 | 80,00 | 24,83 | 27,95 |
2006 | 46,89 | 52,17 | 34,96 | 41,89 | 79,00 | 33,20 | 27,81 |
2007 | 42,29 | 52,04 | 37,93 | 38,30 | 79,50 | 29,62 | 28,04 |
2008 | 42,25 | 51,81 | 39,33 | 39,25 | 80,00 | 29,25 | 28,15 |
2009 | 43,04 | 51,60 | 39,62 | 38,85 | 81,00 | 28,00 | 28,40 |
2010 | 43,32 | 51,15 | 37,58 | 39,90 | 80,00 | 28,50 | 28,55 |
2011 | 42,23 | 51,02 | 39,67 | 39,25 | 79,00 | 29,38 | 29,19 |
2012 | 45,30 | 53,91 | 43,40 | 40,65 | 78,50 | 32,43 | 33,30 |
2013 | 45,70 | 53,89 | 42,73 | 39,20 | 77,00 | 32,86 | 32,43 |
2014 | 45,05 | 54,76 | 43,37 | 40,15 | 77,50 | 33,71 | 32,70 |
2015 | 44,95 | 55,49 | 37,04 | 40,75 | 79,50 | 33,29 | 32,26 |
2016 | 46,48 | 55,20 | 41,83 | 38,00 | 78,00 | 34,88 | 31,49 |
2017 | 46,77 | 54,52 | 41,90 | 38,45 | 78,50 | 35,50 | 32,04 |
2018 | 46,77 | 54,60 | 41,57 | 38,95 | 76,00 | 35,50 | 32,27 |
2019 | 47,36 | 54,56 | 41,40 | 39,30 | 73,00 | 35,50 | 32,29 |
La tasa de homicidios mide el número de muertes a causa de la acción de otra persona (de manera voluntaria o no) por cada 100.000 habitantes. Este indicador nos ayuda a medir el índice de violencia de un país. Por ello, cobra especial importancia en nuestro estudio, debido a que la piratería marítima se lleva a cabo a través de actos violentos como son secuestros, robos o extorsiones. Así pues, es posible que exista una fuerte correlación entre este indicador y los ataques de piratas.
media_regiones <- paises %>% group_by(region, year) %>%
summarise(media_corrupción = mean(corruption_index, na.rm = TRUE),
media_homicidios = mean(homicide_rate, na.rm = TRUE),
media_militar = mean(total_military, na.rm = TRUE),
media_gasto = mean(totalgr, na.rm= TRUE)) %>%
ungroup() %>% mutate(year = as.numeric(year))
bb <- media_regiones %>%
filter(!year %in% c(2019, NA)) %>%
ggplot(aes(x= year, y= media_homicidios)) +
labs(title = "Evolución tasa de homicidios\npor regiones",
x= "Año",
y= "Índice de homicidios medio",
color = "Regiones") +
geom_point(aes(color= region), size= 3) +
geom_line(aes(color= region), size= 1.5) +
scale_color_manual(values= c("red", "blue", "green", "black",
"yellow", "orange", "midnightblue"),
labels = c("Asia del Este\n&\nPacífico",
"Europa\n&\nAsia Central",
"Latino América\n&\nCaribe",
"Oriente Medio\n&\nNorte de Africa",
"América\ndel\nNorte",
"Sur\nde\nAsia",
"África\nSub-Sahariana"))+
theme_minimal() +
theme(plot.title = element_text(size = 20, face = "bold",
hjust = 0.5),
axis.title.x = element_text(size = 13, hjust = 1,
vjust = 0),
axis.title.y = element_text(size = 13, hjust = 1, vjust = 1),
legend.title = element_text(face = "bold")) +
transition_reveal(year) +
view_follow()
bb #gganimate
El uso de gráficos de líneas animados es una buena herramienta para analizar la evolución de una variable de forma dinámica y sencilla. Para la tasa de homicidios, extraemos que para todo el periodo la región con la mayor tasa ha sido Latino América y el Caribe y África Sub-Sahariana. Sin embargo, en el caso de este último, este índice se ha ido reduciendo año tras año.
En lo que respecta al resto de regiones, han mantenido su nivel constante a lo largo del periodo. Destaca el caso de Oriente Medio y el Norte de África, cuyo índice ha sido y es el menor. Resulta sorprendente ya que esta región la forman países que durante el periodo han estado en guerra, como es el caso de Libia. Detrás de este fenómeno es posible que exista una incorrecta medición o la falta de datos que realmente describan la situación de estos países.
media_regiones %>% #gtTable
select(region, year, media_homicidios) %>%
filter(!year %in% c(2019, NA)) %>%
pivot_wider(names_from = "region", values_from = "media_homicidios") %>%
gt(rowname_col = "year") %>%
tab_header(title = md("Índice de homicidios por regiones"),
subtitle = md("De 1993 a 2018")) %>%
tab_options(heading.background.color = "seagreen") %>%
tab_options(heading.title.font.size = 25,
heading.subtitle.font.size = 20,
column_labels.font.weight = "bold",
heading.align = "center") %>%
tab_options(table.align = "center") %>%
cols_align(align = "center") %>%
cols_label(`East Asia & Pacific` = "Asia del Este & Pacífico",
`Europe & Central Asia` = "Europa & Asia Central",
`Latin America & Caribbean` = "Latino América & Caribe",
`Middle East & North Africa` =
"Oriente Medio & Norte de Africa",
`North America` = "América del Norte",
`South Asia` = "Sur de Asia",
`Sub-Saharan Africa` = "África Sub-Sahariana") %>%
fmt_number(columns= 2:8,
decimals = 2,
dec_mark = ",")
Índice de homicidios por regiones | |||||||
---|---|---|---|---|---|---|---|
De 1993 a 2018 | |||||||
Asia del Este & Pacífico | Europa & Asia Central | Latino América & Caribe | Oriente Medio & Norte de Africa | América del Norte | Sur de Asia | África Sub-Sahariana | |
1993 | 3,22 | 6,57 | 16,67 | 2,33 | 5,49 | 4,37 | 14,58 |
1994 | 3,04 | 5,40 | 22,55 | 2,36 | 6,86 | 4,39 | 23,75 |
1995 | 2,22 | 5,22 | 20,80 | 1,24 | 5,08 | 4,36 | 20,90 |
1996 | 2,35 | 4,71 | 20,63 | 1,97 | 5,27 | 5,94 | 19,94 |
1997 | 2,42 | 5,56 | 20,98 | 1,81 | 3,94 | 4,66 | 18,77 |
1998 | 3,24 | 4,68 | 19,78 | 1,94 | 2,68 | 4,30 | 21,69 |
1999 | 3,16 | 4,78 | 17,26 | 2,26 | 3,50 | 5,31 | 19,14 |
2000 | 2,71 | 4,52 | 18,25 | 1,71 | 2,44 | 3,83 | 14,37 |
2001 | 3,10 | 4,55 | 17,62 | 1,73 | 4,38 | 3,80 | 14,44 |
2002 | 3,14 | 4,37 | 19,94 | 1,75 | 3,02 | 3,74 | 12,55 |
2003 | 3,49 | 3,90 | 19,49 | 1,72 | 3,51 | 3,52 | 9,47 |
2004 | 2,87 | 3,81 | 21,27 | 1,75 | 3,01 | 4,37 | 9,32 |
2005 | 3,65 | 3,51 | 19,88 | 1,69 | 3,60 | 3,99 | 8,79 |
2006 | 3,53 | 3,14 | 20,27 | 1,73 | 4,10 | 4,50 | 8,04 |
2007 | 2,80 | 2,88 | 20,44 | 1,67 | 4,04 | 3,17 | 9,19 |
2008 | 2,78 | 2,95 | 22,05 | 2,72 | 5,00 | 4,46 | 9,35 |
2009 | 2,99 | 2,73 | 25,13 | 2,20 | 5,39 | 3,78 | 9,82 |
2010 | 3,32 | 2,91 | 24,28 | 2,18 | 5,78 | 3,49 | 8,89 |
2011 | 3,15 | 2,24 | 24,34 | 2,15 | 6,35 | 3,70 | 8,78 |
2012 | 3,27 | 2,51 | 22,64 | 2,39 | 5,27 | 4,13 | 8,35 |
2013 | 2,34 | 2,12 | 18,70 | 2,54 | 4,64 | 3,30 | 10,15 |
2014 | 2,38 | 2,24 | 19,38 | 1,33 | 4,11 | 3,62 | 8,12 |
2015 | 3,47 | 1,99 | 21,30 | 1,38 | 4,36 | 4,08 | 8,13 |
2016 | 2,19 | 1,86 | 21,52 | 1,31 | 6,68 | 3,18 | 10,76 |
2017 | 1,64 | 1,93 | 22,29 | 1,51 | 5,09 | 3,34 | 7,32 |
2018 | 2,72 | 1,73 | 19,74 | 1,19 | 3,36 | 3,27 | 6,29 |
El siguiente indicador que trabajaremos es la media de ingresos públicos por región. Este indicador es un buena aproximación del gasto de estos países, puesto que mayores ingresos suele ir acompañado de mayor gasto. Además, frecuentemente los países más seguros son aquellos en los que la presión fiscal es más alta. Esto se debe, entre otros factores, a una mejor dotación de medios para los cuerpos de seguridad.
A la hora de describir la evolución de una variable es habitual el uso de gráficos de líneas. No obstante, existen otras formas muy útiles de representar la variación de un indicador a lo largo del tiempo. En este caso, hemos hecho uso de un boxplot. En él, podemos obsercar la media de los ingresos públicos por cada región, además del primer y tercer cuartil. Finalmente, también observamos cada una de las observaciones para cada año.
media_regiones <- paises %>% group_by(region, year) %>%
summarise(media_corrupción = mean(corruption_index, na.rm = TRUE),
media_homicidios = mean(homicide_rate, na.rm = TRUE),
media_militar = mean(total_military, na.rm = TRUE),
media_gasto = mean(totalgr, na.rm= TRUE)) %>%
ungroup() %>% mutate(year = as.numeric(year))
media_regiones %>%
select(region, year, media_gasto) %>%
filter(!year == is.na(year)) %>%
mutate(year = as.character(year)) %>%
ggplot(aes(x= region, y= media_gasto)) +
geom_boxplot() +
geom_jitter(aes(color= year), size= 2) +
scale_x_discrete(labels = c("Asia del Este\n&\nPacífico",
"Europa\n&\nAsia Central",
"Latino América\n&\nCaribe",
"Oriente Medio\n&\nNorte de Africa",
"América\ndel\nNorte",
"Sur\nde\nAsia",
"África\nSub-Sahariana")) +
scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
labs(title = "Porcentaje ingresos públicos por región",
subtitle = "De 1993 a 2019",
x= "Región",
y= "Ingresos públicos (%PIB)",
color = "Año") +
theme_ipsum() +
theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
axis.title.x = element_text(size = 12, face = "bold"),
axis.title.y = element_text(size = 12, face = "bold"),
legend.title = element_text(face = "bold", hjust = 0.5))
Cabe destacar las grandes diferencias que existen entre las regiones en lo referente a sus políticas fiscales. Mientras en los países europeos existe una importante presión fiscal, en regiones como el sur de Asía esta presión fiscal se reduce prácticamente a la mitad.
Por otro lado, otro aspecto a destacar es la dispersión de esta variable a lo largo de los años. Curiosamente, esta dispersión es menor para las regiones cuya presión fiscal es muy alta o muy baja. Y es mayor para las regiones cuyo nivel medio se encuentra entre ambos extremos.
Terminando con esta sección, la principal conclusión obtenida es la importante relación que existe entre ingresos públicos y riqueza. Puesto que podemos observar, son las regiones más ricas las que obtienen mayores ingresos públicos. Mientras que en la otra cara de la moneda, aquellas regiones más pobres son las que presentan un menor nivel.
media_regiones %>% #gtTable
select(region, year, media_gasto) %>%
filter(!year %in% c(2019, NA)) %>%
pivot_wider(names_from = "region", values_from = "media_gasto") %>%
gt(rowname_col = "year") %>%
tab_header(title = md("Gasto público por regiones"),
subtitle = md("De 1993 a 2018")) %>%
tab_options(heading.background.color = "sienna") %>%
tab_options(heading.title.font.size = 25,
heading.subtitle.font.size = 20,
column_labels.font.weight = "bold",
heading.align = "center") %>%
tab_options(table.align = "center") %>%
cols_align(align = "center") %>%
cols_label(`East Asia & Pacific` = "Asia del Este & Pacífico",
`Europe & Central Asia` = "Europa & Asia Central",
`Latin America & Caribbean` = "Latino América & Caribe",
`Middle East & North Africa` =
"Oriente Medio & Norte de Africa",
`North America` = "América del Norte",
`South Asia` = "Sur de Asia",
`Sub-Saharan Africa` = "África Sub-Sahariana") %>%
fmt_percent(columns= 2:8,
decimals = 2)
Gasto público por regiones | |||||||
---|---|---|---|---|---|---|---|
De 1993 a 2018 | |||||||
Asia del Este & Pacífico | Europa & Asia Central | Latino América & Caribe | Oriente Medio & Norte de Africa | América del Norte | Sur de Asia | África Sub-Sahariana | |
1993 | 32.53% | 38.08% | 18.94% | 28.79% | 37.86% | 21.40% | 20.33% |
1994 | 31.23% | 38.03% | 18.74% | 28.05% | 37.79% | 21.50% | 18.33% |
1995 | 35.25% | 38.58% | 19.44% | 29.61% | 38.03% | 21.87% | 18.85% |
1996 | 30.05% | 38.22% | 20.21% | 30.83% | 38.55% | 22.10% | 18.46% |
1997 | 29.91% | 37.77% | 20.29% | 31.83% | 39.01% | 20.69% | 19.20% |
1998 | 29.74% | 38.07% | 20.49% | 30.40% | 39.21% | 19.51% | 17.91% |
1999 | 27.31% | 38.15% | 20.57% | 29.38% | 39.15% | 20.99% | 19.21% |
2000 | 27.17% | 37.85% | 20.77% | 33.91% | 39.25% | 21.53% | 19.38% |
2001 | 26.29% | 36.99% | 21.14% | 33.98% | 38.06% | 19.60% | 19.45% |
2002 | 24.25% | 37.58% | 20.43% | 31.91% | 36.18% | 17.92% | 18.88% |
2003 | 25.75% | 37.65% | 21.14% | 32.35% | 35.89% | 16.78% | 18.95% |
2004 | 30.54% | 37.37% | 21.42% | 34.78% | 35.91% | 18.27% | 20.05% |
2005 | 30.32% | 37.98% | 22.34% | 36.10% | 36.71% | 19.31% | 21.91% |
2006 | 32.14% | 38.53% | 23.10% | 37.33% | 37.32% | 20.17% | 23.97% |
2007 | 33.50% | 38.98% | 23.35% | 36.18% | 37.30% | 20.77% | 25.83% |
2008 | 33.73% | 39.39% | 24.02% | 36.49% | 36.11% | 19.47% | 23.07% |
2009 | 33.10% | 38.18% | 22.79% | 35.43% | 35.27% | 19.14% | 21.53% |
2010 | 33.17% | 38.30% | 23.33% | 36.07% | 34.95% | 20.50% | 21.45% |
2011 | 32.79% | 38.54% | 23.87% | 36.32% | 35.06% | 20.06% | 22.19% |
2012 | 34.72% | 39.07% | 23.66% | 38.68% | 35.10% | 18.91% | 22.33% |
2013 | 36.20% | 39.46% | 23.88% | 36.76% | 36.23% | 20.49% | 21.92% |
2014 | 39.20% | 39.67% | 24.03% | 36.43% | 36.24% | 20.63% | 21.80% |
2015 | 35.12% | 39.04% | 24.10% | 33.05% | 37.05% | 20.64% | 21.43% |
2016 | 34.34% | 38.87% | 24.60% | 29.28% | 36.99% | 22.84% | 20.94% |
2017 | 35.69% | 38.66% | 25.15% | 30.90% | 37.46% | 21.11% | 21.05% |
2018 | 35.84% | 39.48% | 26.55% | 31.71% | 36.33% | 20.86% | 21.69% |
Para terminar con el análisis por regiones, nos fijaremos en la dimensión de los ejércitos que conforman los diferentes países de cada región. Para ello, obtendremos el número total de militares de cada región y lo representaremos en el mapa que se muestra a continuación.
media_regiones <- paises %>%
select(region, country_name, total_military) %>%
group_by(region, country_name) %>%
summarise(media_militar = mean(total_military, na.rm = TRUE)) %>%
ungroup() %>% group_by(region) %>%
mutate(media_militar = mean(media_militar, na.rm = TRUE)) %>%
mutate(iso2 = countrycode::countrycode(
sourcevar = country_name, origin = "country.name",
destination = "iso2c", warn = FALSE), .after = country_name)
mapa_mundo <- map_data("world") %>%
mutate(iso2 = countrycode::countrycode(
sourcevar = region, origin = "country.name",
destination = "iso2c", warn = FALSE), .after = region)
paises_mapa <- full_join(mapa_mundo, media_regiones,
by= c("iso2"="iso2"))
a <- paises_mapa %>%
ggplot() +
geom_polygon(aes( x= long, y = lat, group = group,
fill = region.y), color = "black") +
labs(title = "Número total de militares por región",
fill = "Regiones") +
scale_fill_discrete(breaks = c("East Asia & Pacific",
"Europe & Central Asia",
"Latin America & Caribbean",
"Middle East & North Africa",
"North America", "South Asia",
"Sub-Saharan Africa"),
labels = c("Asia del Este\n& Pacífico",
"Europa\n& Asia Central",
"Latino América\n& Caribe",
"Oriente Medio\n& Norte de Africa",
"América\ndel Norte",
"Sur\nde Asia",
"África\nSub-Sahariana")) +
theme_minimal() +
theme(plot.title = element_text(size = 15, face = "bold",
hjust = 0.5),
axis.line = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
panel.background = element_rect(colour= "black", size= 1,
fill = "lightblue2"),
legend.title = element_text(face= "bold"),
legend.position = "bottom",
legend.direction = "horizontal") +
annotate("text", x= 95, y= 62, label = "123.550", size= 6,
fontface=2, color= "brown") +
annotate("text", x= 180, y= 10, label = "421.262", size= 6,
fontface=2, color= "red") +
annotate("text", x= -110, y= -10, label = "80.469", size= 6,
fontface=2, color = "seagreen") +
annotate("text", x= 72, y= -5, label = "516.730", size= 5,
fontface=2, color = "purple") +
annotate("text", x= -45, y= 30, label = "178.468", size= 5,
fontface=2, color = "turquoise4") +
annotate("text", x= -170, y= 40, label = "792.325", size= 6,
fontface=2, color = "blue") +
annotate("text", x= 20, y= -40, label = "38.301", size= 6,
fontface=2, color = "magenta") +
coord_fixed (xlim= c(-200,200),
ylim= c(-58,90),
ratio = 1.3)
a
Sin embargo, la obtención de este dato nos crea la duda de conocer la dimensión de los ejércitos de cada país. Puesto que al agregar el número total de militares de cada país por región, perdemos la información sobre qué países realizan una mayor inversión en personal militar frente al resto. Además, para conocer si un país se encuentra fuertemente militarizado hemos de tener en cuenta su población. Por ello, la proporción de militares respecto a la población total nos ayudará más adelante a conocer la dimensión relativa de los ejércitos.
paises %>% select(region, country_name, total_military) %>%
group_by(region, country_name) %>%
summarise(media_militar = mean(total_military, na.rm = TRUE)) %>%
ungroup() %>% group_by(region) %>%
summarise(media_militar = mean(media_militar, na.rm = TRUE)) %>%
ungroup() %>% mutate(region = case_when(
region == "East Asia & Pacific" ~ "Asia del Este & Pacífico",
region == "Europe & Central Asia" ~ "Europa & Asia Central",
region == "Latin America & Caribbean" ~ "Latino América & Caribe",
region == "Middle East & North Africa" ~
"Oriente Medio & Norte de Africa",
region == "North America" ~ "América del Norte",
region == "South Asia" ~ "Sur de Asia",
region == "Sub-Saharan Africa" ~ "África Sub-Sahariana")) %>%
gt(rowname_col = "region") %>%
tab_header(title = md("Media de militares por región"),
subtitle = md("De 1993 a 2019")) %>%
tab_options(heading.background.color = "orange") %>%
tab_options(heading.title.font.size = 25,
heading.subtitle.font.size = 20,
column_labels.font.weight = "bold",
heading.align = "center") %>%
tab_options(table.align = "center") %>%
cols_align(align = "center") %>%
cols_label(`media_militar` = "Media número de militares") %>%
fmt_number(columns= 2,
decimals = 0,
sep_mark = ".")
Media de militares por región | |
---|---|
De 1993 a 2019 | |
Media número de militares | |
Asia del Este & Pacífico | 421.262 |
Europa & Asia Central | 123.550 |
Latino América & Caribe | 80.469 |
Oriente Medio & Norte de Africa | 178.468 |
América del Norte | 792.325 |
Sur de Asia | 516.730 |
África Sub-Sahariana | 38.301 |
A la hora de realizar un análisis por países hemos de ser conscientes del gran número de observaciones de las que disponemos. Existen alrededor de 200 países en el mundo. Por lo que la visualización de los datos de cada uno de estos países en un mismo gráfico se puede tornar un problema a la hora de representarlos. Por ello, en esta sección se mostraran los los países más relevantes par cada indicador en cuestión, o en otras palabras, nos centraremos en aquellos países que mejor nos ayuden a entender la información del dataset.
Comenzaremos donde lo dejamos antes. Para conocer qué países tienen un mayor número de militares respecto a su población, dividimos el número total de militares para cada país en cada año y calculamos su media. El resultado lo podemos mostrar en el siguiente mapa.
#cuartiles <- descr(ejercito$mili_pc)
ejercito <- paises %>%
select(country_name, year, total_military, population) %>%
drop_na(total_military, population) %>%
mutate(mili_pc = total_military/population) %>%
group_by(country_name) %>% mutate(mili_pc = mean(mili_pc)) %>%
mutate(mili_pc = case_when(
mili_pc <= 0.0025272261 ~ 1,
mili_pc > 0.0025272261 & mili_pc < 0.0049017440 ~ 2,
mili_pc > 0.0049017440 & mili_pc < 0.0084707455 ~ 3,
mili_pc >= 0.0084707455 ~ 4,
is.na(mili_pc) ~ 0)) %>%
mutate(country_name = ifelse(
country_name == "São Tomé and Principe",
"São Tomé and Principe", country_name)) %>%
mutate(iso2 = countrycode::countrycode(
sourcevar = country_name, origin = "country.name",
destination = "iso2c", warn = FALSE), .after = country_name) %>%
mutate(mili_pc = as.character(mili_pc))
mapa_mundo <- map_data("world") %>%
mutate(iso2 = countrycode::countrycode(
sourcevar = region, origin = "country.name",
destination = "iso2c", warn = FALSE), .after = region)
paises_mapa2 <- full_join(mapa_mundo, ejercito, by= c("iso2"="iso2"))
l <- paises_mapa2 %>%
ggplot() +
geom_polygon(aes( x= long, y = lat, group = group, fill = mili_pc),
color = "black") +
scale_fill_discrete(breaks = c(4, 3, 2, 1, 0),
labels= c("n > 0.84%",
"0.49% < n < 0.84%",
"0.25% < n < 0.49%", "n < 0.25%",
"Sin datos")) +
labs(
title = "Porcentaje de militares por país",
subtitle = "Media del periodo 1993-2019",
fill = "Porcentaje de militares"
) +
theme_minimal() +
theme(plot.title = element_text(size = 15, face = "bold",
hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5),
axis.line = element_blank(),
axis.text = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
legend.title = element_text(face = "bold"),
legend.position = "bottom",
legend.direction = "vertical",
panel.background = element_rect(colour= "black", size= 1,
fill ="lightblue2")) +
coord_fixed (xlim= c(-200,200),
ylim= c(-58,90),
ratio = 1.3)
l
Los intervalos calculados para la representación del mapa han sido obtenidos de los cuartiles de la variable mili_pc. Sin embargo, entre en tercer cuartil y el valor más alto existe una gran dispersión. Por ello, resulta interesante conocer cuál es el porcentaje de militares en los países más militarizados.
ejercito2 <- paises %>%
select(country_name, year, total_military, population) %>%
drop_na(total_military, population) %>%
mutate(mili_pc = total_military/population) %>%
group_by(country_name) %>% summarise(mili_pc = mean(mili_pc)) %>%
slice_max(order_by = mili_pc, n= 5) %>%
mutate(country_name = forcats::as_factor(country_name)) %>%
mutate(country_name = forcats::fct_reorder(
country_name, mili_pc, .desc = FALSE))
a <- ggplot(ejercito2) +
geom_col(aes(x=country_name, y= mili_pc), fill = "sienna") +
scale_y_continuous(limits = c(0, 0.06),
breaks = seq(0, 0.06, 0.02),
labels = scales::percent_format(accuracy = 1)) +
scale_x_discrete(labels = c("Brunei", "Israel",
"Singapur", "Corea del Norte",
"Eritrea")) +
labs(title = "Top 5 países con mayor\nporcentaje de militares",
x= "",
y="") +
coord_flip() +
theme_ipsum() +
theme(plot.title = element_text(hjust = 0.5))
dd <- ggplotly(a, width = 600, height = 520)
htmltools::div(dd, align = "center")
Otro de los indicadores de los que disponemos es de la tasa de desempleo. A continuación, visualizaremos cuáles son los países que de media han mantenido un mayor y un menor nivel de desempleo a lo largo del periodo analizado.
desemp_max <- paises %>% group_by(country_name) %>%
mutate(unemployment_rate = unemployment_rate/100) %>%
summarise(desemp = mean(unemployment_rate)) %>% drop_na() %>%
slice_max(order_by = desemp, n= 5)
desemp_max %>% #gtTable
mutate(country_name = case_when(
country_name == "North Macedonia" ~ "Macedonia del Norte",
country_name == "Lesotho" ~ "Lesoto",
country_name == "South Africa" ~ "Sudáfrica",
country_name == "Bosnia and Herzegovina" ~
"Bosnia & Herzegovina",
country_name == "Eswatini" ~ "Suazilandia")) %>%
gt(rowname_col = "country_name") %>%
tab_header(title = md("Top 5 mayor tasa de desempleo"),
subtitle = md("De 1993 a 2019")) %>%
tab_options(heading.background.color = "tan2") %>%
tab_options(heading.title.font.size = 25,
heading.subtitle.font.size = 20,
column_labels.font.weight = "bold",
heading.align = "center") %>%
tab_options(table.align = "center") %>%
cols_align(align = "center") %>%
cols_label(desemp = "Desempleo medio") %>%
fmt_percent(columns= 2,
decimals = 2,
dec_mark = ",")
Top 5 mayor tasa de desempleo | |
---|---|
De 1993 a 2019 | |
Desempleo medio | |
Macedonia del Norte | 31,54% |
Lesoto | 30,45% |
Sudáfrica | 27,99% |
Bosnia & Herzegovina | 25,14% |
Suazilandia | 24,63% |
desemp_min <- paises %>% group_by(country_name) %>%
mutate(unemployment_rate = unemployment_rate/100) %>%
summarise(desemp = mean(unemployment_rate)) %>% drop_na() %>%
slice_min(order_by = desemp, n= 5)
desemp_min %>% #gtTable
mutate(country_name = ifelse(
country_name == "Cambodia", "Camboya", country_name)) %>%
gt(rowname_col = "country_name") %>%
tab_header(title = md("Top 5 menor tasa de desempleo"),
subtitle = md("De 1993 a 2019")) %>%
tab_options(heading.background.color = "tan2") %>%
tab_options(heading.title.font.size = 25,
heading.subtitle.font.size = 20,
column_labels.font.weight = "bold",
heading.align = "center") %>%
tab_options(table.align = "center") %>%
cols_align(align = "center") %>%
cols_label(desemp = "Desempleo medio") %>%
fmt_percent(columns= 2,
decimals = 2,
dec_mark = ",")
Top 5 menor tasa de desempleo | |
---|---|
De 1993 a 2019 | |
Desempleo medio | |
Myanmar | 0,87% |
Camboya | 0,88% |
Rwanda | 0,88% |
Bahrain | 1,14% |
Qatar | 1,17% |
Como podemos observar, existe una gran diferencia entre los países con mayor y menor desempleo. Cabe preguntarnos como ha evolucionado este indicador a lo largo del periodo para cada grupo de países.
b <- paises %>%
select(country_name, year, unemployment_rate) %>%
mutate(country_name = case_when(
country_name == "North Macedonia" ~ "Macedonia del Norte",
country_name == "Lesotho" ~ "Lesoto",
country_name == "South Africa" ~ "Sudáfrica",
country_name == "Bosnia and Herzegovina" ~
"Bosnia & Herzegovina",
country_name == "Eswatini" ~ "Suazilandia",
country_name == "Cambodia" ~ "Camboya",
TRUE ~ country_name)) %>%
filter(country_name %in% c("Myanmar", "Camboya",
"Rwanda", "Bahrain", "Qatar",
"Macedonia del Norte", "Lesoto",
"Sudáfrica", "Bosnia & Herzegovina",
"Suazilandia")) %>%
mutate(unemployment_rate = unemployment_rate/100) %>%
ggplot(aes(x= year, y= unemployment_rate, color= country_name)) +
geom_line(size = 1.2) +
scale_y_continuous(limits = c(0, 0.4),
labels = scales::percent_format(accuracy = 1)) +
scale_color_discrete(labels = c("Bahrain", "Bosnia\n& Herzegovina",
"Camboya", "Lesoto",
"Macedonia\ndel Norte", "Myanmar",
"Qatar", "Rwanda", "Suazilandia",
"Sudáfrica")) +
scale_color_viridis_d() +
labs(title = "Evolución del TOP 5\nmayor y menor tasa de desempleo",
x = "Tasa de desempleo",
y = "Año",
color = "Países") +
theme_ipsum() +
theme(plot.title = element_text(hjust = 0.5),
axis.title.x = element_text(size = 12),
axis.title.y = element_text(size = 12),
legend.title = element_text(face = "bold"))
pp <- ggplotly(b, width = 600, height = 500)
htmltools::div(pp, align = "center" )
Como podíamos imaginar, los países con bajas tasas de desempleo han matenido constante este indicador a lo largo del periodo, mientras que los países con un desempleo mayor presentan una mayor variabilidad en este indicador.
Diversas causas o motivos pueden estar detrás de la piratería. Un indicador que nos puede ayudar a entender este tipo de ataques en las costas de un país es la cantidad de pesca per cápita de un país. Este indicador nos muestra cuál es la importancia que tiene esta actividad para los países. Una forma visual de mostrar estos datos es a través de un gráfico “wordcloud.”
library(wordcloud2)
pesca <- paises %>%
mutate(fish = total_fisheries_per_ton*1000/population) %>%
group_by(country_name) %>%
summarise(fish_pc = mean(fish, na.rm = TRUE)) %>%
mutate(fish_pc = round(fish_pc, digits = 2)) %>%
mutate(country_name = case_when(
country_name == "Greenland" ~ "Groenlandia",
country_name == "Iceland" ~ "Islandia",
country_name == "Marshall Islands" ~ "Islas Marshall",
country_name == "Maldives" ~ "Maldivas",
country_name == "Faroe Islands" ~ "Islas Faroe",
country_name == "St. Vincent and the Grenadines" ~
"San Vicente y las Granadinas",
country_name == "Norway" ~ "Noruega",
TRUE ~ country_name)) %>%
slice_max(order_by = fish_pc, n=200)
wordcloud2(pesca, shape= "diamond", size = 0.8)
Claramente, observamos que las Islas Feroe, Islandia y Groenlandia son los países en los que más kilogramos por habitante se pesca, seguidos de lejos por otros países como Noruega, las Islas Marshall o las Seychelles. No obstante, llama la atención que los tres principales territores en los cuáles la pesca es una de las principales actividades sean dos territorios autónomos del Reino de Dinamarca (Las Islas Feroe y Groenlandia) y un país con un pasado vinculado a este reino, como es Islandia.
Para terminar con esta sección, prestaremos especial atención al PIB per cápita y al PIB industrial per cápita. Como bien sabemos, el PIB per cápita es uno de los indicadores más usados para medir la riqueza de un país. Este mide la producción de un país por cada habitante. De esta forma, es posible realizar comparaciones entre países de distinta dimensión y población. Por otra parte, el PIB industrial nos indica a qué porcentaje del PIB contribuye la industria de un país. Resulta interesante conocer cuál es la relación entre ambas variables.
gdp_pc <- paises %>% group_by(country_name) %>%
mutate(ind_pc = industryofgdp*GDP) %>%
select(country_name, year, region, GDP, ind_pc) %>%
drop_na(ind_pc)
gdp_pc %>% ggplot(aes(x= GDP, y= ind_pc)) +
geom_point(color = "salmon2", size = 2) +
scale_color_discrete(labels = c("Asia del Este\n& Pacífico",
"Europa\n& Asia Central",
"Latino América\n& Caribe",
"Oriente Medio\n& Norte de Africa",
"América\ndel Norte",
"Sur\nde Asia",
"África\nSub-Sahariana")) +
theme_minimal() +
transition_states(year) +
labs(title = "Evolución del PIB industrial per capita
en función del PIB per capita\n Year : {closest_state}",
y = "PIB industrial per capita",
x = "PIB per capita",
color = "Regiones") +
theme(plot.title = element_text(size = 20, hjust = 0.5,
face = "bold"),
axis.title.x = element_text(size = 12),
axis.title.y = element_text(size = 12),
legend.title = element_text(face = "bold", hjust = 0.5))
A medida que aumenta el PIB per cápita de un país, aumenta el PIB industrial per cápita. Esta conclusión parece obvia incluso antes de realizar el gráfico anterior. Sin embargo, del gráfico podemos extraer una idea bastante interesante. Conforme aumenta el PIB per cápita, ademas de aumentar el PIB per cápita industrial, también lo hace la varianza entre ambas variables. Este hecho nos indica que, aunque es cierto que el desarrollo industrial es un potente motor para el crecimiento, no es el único. Esto se debe a que conforme un país aumenta su riqueza otros sectores comienzan a ganar un mayor peso, como es el caso del sector servicios. Así, no es de extrañar que entre los países más ricos encontremos mayores diferencias en cuanto a la contribución que realiza su industria a la riqueza del país.
En este correlograma vemos los coeficientes de correlación entre las variables de las que disponemos de los países, más una nueva variable que es el número de ataques pirata ocurridos en las aguas de cada país en un determinado año. Como vemos, algunas relaciones son justamente las que podríamos esperar: los países más grandes suelen tener ejércitos más grandes, etc. Sin embargo, cuando ponemos el foco en la relación con el número de ataques, que es lo que más interesa en este trabajo, encontramos relaciones débiles de difícil interpretación. Creemos que esta vía de análisis carece de mayor interés.
full_by_nearest <- full_join(pirate_attacks, country_data, by = c("nearest_country" = "country", "year" = "year"))|> filter(!is.na(longitude))
full_by_nearest <- full_by_nearest |> select(1,7,11:21) |> group_by(nearest_country, year) |> mutate(nattacks = n()) |> ungroup() |> distinct()%>% select(where(is.numeric))
cor <- cor(full_by_nearest, use = "complete.obs")
corrplot(cor, type="upper", order="hclust", insig = "blank")
Para concluir, reconoceremos que este trabajo ha sido exitoso identificando en los datos ciertos patrones en los ataques pirata ya apreciados por la literatura, como la prevalencia de secuestros en la costa de África o el movimiento de las zonas calientes de Asia a África. No ha habido el mismo éxito buscando correlaciones con las variables de las que disponemos de los países, lo cual no quiere decir, a nuestro juicio, que no existan otras maneras de enriquecer este análisis.
- Session info ---------------------------------------------------------------
setting value
version R version 4.1.1 (2021-08-10)
os Windows 10 x64
system x86_64, mingw32
ui RTerm
language (EN)
collate Spanish_Spain.1252
ctype Spanish_Spain.1252
tz Europe/Paris
date 2021-12-16
- Packages -------------------------------------------------------------------
package * version date lib source
abind 1.4-5 2016-07-21 [1] CRAN (R 4.1.0)
ape 5.5 2021-04-25 [1] CRAN (R 4.1.2)
assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.1.1)
backports 1.2.1 2020-12-09 [1] CRAN (R 4.1.0)
base64enc 0.1-3 2015-07-28 [1] CRAN (R 4.1.0)
bit 4.0.4 2020-08-04 [1] CRAN (R 4.1.1)
bit64 4.0.5 2020-08-30 [1] CRAN (R 4.1.1)
bitops 1.0-7 2021-04-24 [1] CRAN (R 4.1.0)
broom 0.7.9 2021-07-27 [1] CRAN (R 4.1.1)
bslib 0.3.1 2021-10-06 [1] CRAN (R 4.1.1)
caTools 1.18.2 2021-03-28 [1] CRAN (R 4.1.1)
cellranger 1.1.0 2016-07-27 [1] CRAN (R 4.1.1)
checkmate 2.0.0 2020-02-06 [1] CRAN (R 4.1.1)
class 7.3-19 2021-05-03 [2] CRAN (R 4.1.1)
classInt 0.4-3 2020-04-07 [1] CRAN (R 4.1.1)
cli 3.1.0 2021-10-27 [1] CRAN (R 4.1.1)
clipr 0.7.1 2020-10-08 [1] CRAN (R 4.1.1)
cluster 2.1.2 2021-04-17 [2] CRAN (R 4.1.1)
codetools 0.2-18 2020-11-04 [2] CRAN (R 4.1.1)
collapsibleTree 0.1.7 2018-08-22 [1] CRAN (R 4.1.2)
colorspace 2.0-2 2021-06-24 [1] CRAN (R 4.1.1)
commonmark 1.7 2018-12-01 [1] CRAN (R 4.1.1)
corrplot * 0.90 2021-06-30 [1] CRAN (R 4.1.1)
countrycode 1.3.0 2021-07-15 [1] CRAN (R 4.1.1)
covid19.analytics * 2.1.1 2021-09-14 [1] CRAN (R 4.1.2)
crayon 1.4.2 2021-10-29 [1] CRAN (R 4.1.1)
crosstalk 1.1.1 2021-01-12 [1] CRAN (R 4.1.1)
curl 4.3.2 2021-06-23 [1] CRAN (R 4.1.1)
data.table 1.14.0 2021-02-21 [1] CRAN (R 4.1.1)
data.tree 1.0.0 2020-08-03 [1] CRAN (R 4.1.2)
DBI 1.1.1 2021-01-15 [1] CRAN (R 4.1.1)
dbplyr 2.1.1 2021-04-06 [1] CRAN (R 4.1.1)
desc 1.3.0 2021-03-05 [1] CRAN (R 4.1.1)
deSolve 1.30 2021-10-07 [1] CRAN (R 4.1.2)
details 0.2.1 2020-01-12 [1] CRAN (R 4.1.1)
dichromat 2.0-0 2013-01-24 [1] CRAN (R 4.1.0)
digest 0.6.28 2021-09-23 [1] CRAN (R 4.1.1)
dplyr * 1.0.7 2021-06-18 [1] CRAN (R 4.1.1)
DT * 0.19 2021-09-02 [1] CRAN (R 4.1.1)
e1071 1.7-8 2021-07-28 [1] CRAN (R 4.1.1)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.1.1)
evaluate 0.14 2019-05-28 [1] CRAN (R 4.1.1)
extrafont 0.17 2014-12-08 [1] CRAN (R 4.1.1)
extrafontdb 1.0 2012-06-11 [1] CRAN (R 4.1.1)
fansi 0.5.0 2021-05-25 [1] CRAN (R 4.1.1)
farver 2.1.0 2021-02-28 [1] CRAN (R 4.1.1)
fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.1.1)
forcats * 0.5.1 2021-01-27 [1] CRAN (R 4.1.1)
foreign 0.8-81 2020-12-22 [2] CRAN (R 4.1.1)
Formula * 1.2-4 2020-10-16 [1] CRAN (R 4.1.0)
fs 1.5.0 2020-07-31 [1] CRAN (R 4.1.1)
gdtools 0.2.3 2021-01-06 [1] CRAN (R 4.1.1)
generics 0.1.1 2021-10-25 [1] CRAN (R 4.1.1)
gganimate * 1.0.7 2020-10-15 [1] CRAN (R 4.1.1)
ggplot2 * 3.3.5 2021-06-25 [1] CRAN (R 4.1.1)
ggrepel * 0.9.1 2021-01-15 [1] CRAN (R 4.1.1)
ggthemes * 4.2.4 2021-01-20 [1] CRAN (R 4.1.1)
gifski 1.4.3-1 2021-05-02 [1] CRAN (R 4.1.1)
glue 1.5.0 2021-11-07 [1] CRAN (R 4.1.2)
gplots 3.1.1 2020-11-28 [1] CRAN (R 4.1.1)
gridExtra 2.3 2017-09-09 [1] CRAN (R 4.1.1)
gt * 0.3.1.9000 2021-11-26 [1] Github (rstudio/gt@e441737)
gtable 0.3.0 2019-03-25 [1] CRAN (R 4.1.1)
gtools 3.9.2 2021-06-06 [1] CRAN (R 4.1.1)
haven 2.4.3 2021-08-04 [1] CRAN (R 4.1.1)
here 1.0.1 2020-12-13 [1] CRAN (R 4.1.1)
highr 0.9 2021-04-16 [1] CRAN (R 4.1.1)
Hmisc * 4.5-0 2021-02-28 [1] CRAN (R 4.1.1)
hms 1.1.1 2021-09-26 [1] CRAN (R 4.1.1)
hrbrthemes * 0.8.0 2020-03-06 [1] CRAN (R 4.1.1)
htmlTable 2.2.1 2021-05-18 [1] CRAN (R 4.1.1)
htmltools 0.5.2 2021-08-25 [1] CRAN (R 4.1.1)
htmlwidgets 1.5.4 2021-09-08 [1] CRAN (R 4.1.1)
httpuv 1.6.3 2021-09-09 [1] CRAN (R 4.1.1)
httr 1.4.2 2020-07-20 [1] CRAN (R 4.1.1)
jpeg 0.1-9 2021-07-24 [1] CRAN (R 4.1.0)
jquerylib 0.1.4 2021-04-26 [1] CRAN (R 4.1.1)
jsonlite 1.7.2 2020-12-09 [1] CRAN (R 4.1.1)
KernSmooth 2.23-20 2021-05-03 [2] CRAN (R 4.1.1)
klippy * 0.0.0.9500 2021-11-16 [1] Github (rlesur/klippy@378c247)
knitr * 1.36 2021-09-29 [1] CRAN (R 4.1.1)
labeling 0.4.2 2020-10-20 [1] CRAN (R 4.1.0)
later 1.3.0 2021-08-18 [1] CRAN (R 4.1.1)
lattice * 0.20-44 2021-05-02 [1] CRAN (R 4.1.1)
latticeExtra 0.6-29 2019-12-19 [1] CRAN (R 4.1.1)
lazyeval 0.2.2 2019-03-15 [1] CRAN (R 4.1.1)
leafem 0.1.6 2021-05-24 [1] CRAN (R 4.1.1)
leaflet 2.0.4.1 2021-01-07 [1] CRAN (R 4.1.1)
leafsync 0.1.0 2019-03-05 [1] CRAN (R 4.1.1)
lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.1.1)
lubridate * 1.7.10 2021-02-26 [1] CRAN (R 4.1.1)
lwgeom 0.2-7 2021-07-28 [1] CRAN (R 4.1.1)
magick 2.7.3 2021-08-18 [1] CRAN (R 4.1.1)
magrittr 2.0.1 2020-11-17 [1] CRAN (R 4.1.1)
mapdata * 2.3.0 2018-03-30 [1] CRAN (R 4.1.2)
maps * 3.3.0 2018-04-03 [1] CRAN (R 4.1.1)
Matrix 1.3-4 2021-06-01 [2] CRAN (R 4.1.1)
matrixStats 0.60.1 2021-08-23 [1] CRAN (R 4.1.1)
mime 0.12 2021-09-28 [1] CRAN (R 4.1.1)
modelr 0.1.8 2020-05-19 [1] CRAN (R 4.1.1)
munsell 0.5.0 2018-06-12 [1] CRAN (R 4.1.1)
nlme 3.1-152 2021-02-04 [2] CRAN (R 4.1.1)
nnet 7.3-16 2021-05-03 [2] CRAN (R 4.1.1)
openxlsx 4.2.4 2021-06-16 [1] CRAN (R 4.1.1)
pander 0.6.4 2021-06-13 [1] CRAN (R 4.1.1)
patchwork * 1.1.1 2020-12-17 [1] CRAN (R 4.1.1)
pheatmap 1.0.12 2019-01-04 [1] CRAN (R 4.1.2)
pillar 1.6.4 2021-10-18 [1] CRAN (R 4.1.1)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.1.1)
plotly * 4.9.4.1 2021-06-18 [1] CRAN (R 4.1.1)
plyr 1.8.6 2020-03-03 [1] CRAN (R 4.1.1)
png * 0.1-7 2013-12-03 [1] CRAN (R 4.1.0)
prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.1.1)
progress 1.2.2 2019-05-16 [1] CRAN (R 4.1.1)
promises 1.2.0.1 2021-02-11 [1] CRAN (R 4.1.1)
proxy 0.4-26 2021-06-07 [1] CRAN (R 4.1.1)
pryr 0.1.5 2021-07-26 [1] CRAN (R 4.1.1)
purrr * 0.3.4 2020-04-17 [1] CRAN (R 4.1.1)
R6 2.5.1 2021-08-19 [1] CRAN (R 4.1.1)
rapportools 1.0 2014-01-07 [1] CRAN (R 4.1.1)
raster 3.5-2 2021-10-11 [1] CRAN (R 4.1.1)
RColorBrewer 1.1-2 2014-12-07 [1] CRAN (R 4.1.0)
Rcpp 1.0.7 2021-07-07 [1] CRAN (R 4.1.1)
readr * 2.0.1 2021-08-10 [1] CRAN (R 4.1.1)
readxl 1.3.1 2019-03-13 [1] CRAN (R 4.1.1)
rentrez 1.2.3 2020-11-10 [1] CRAN (R 4.1.2)
reprex 2.0.1 2021-08-05 [1] CRAN (R 4.1.1)
rio 0.5.27 2021-06-21 [1] CRAN (R 4.1.1)
rlang 0.4.12 2021-10-18 [1] CRAN (R 4.1.1)
rmarkdown 2.11 2021-09-14 [1] CRAN (R 4.1.1)
rpart 4.1-15 2019-04-12 [2] CRAN (R 4.1.1)
rprojroot 2.0.2 2020-11-15 [1] CRAN (R 4.1.1)
rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.1.1)
Rttf2pt1 1.3.9 2021-07-22 [1] CRAN (R 4.1.1)
rvest 1.0.1 2021-07-26 [1] CRAN (R 4.1.1)
s2 1.0.6 2021-06-17 [1] CRAN (R 4.1.1)
sass 0.4.0 2021-05-12 [1] CRAN (R 4.1.1)
scales 1.1.1 2020-05-11 [1] CRAN (R 4.1.1)
sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.1.1)
sf 1.0-2 2021-07-26 [1] CRAN (R 4.1.1)
shiny 1.7.1 2021-10-02 [1] CRAN (R 4.1.1)
shinycssloaders 1.0.0 2020-07-28 [1] CRAN (R 4.1.2)
shinydashboard 0.7.2 2021-09-30 [1] CRAN (R 4.1.2)
sp 1.4-5 2021-01-10 [1] CRAN (R 4.1.1)
stars 0.5-3 2021-06-08 [1] CRAN (R 4.1.1)
stringi 1.7.5 2021-10-04 [1] CRAN (R 4.1.1)
stringr * 1.4.0 2019-02-10 [1] CRAN (R 4.1.1)
summarytools * 1.0.0 2021-07-28 [1] CRAN (R 4.1.1)
survival * 3.2-11 2021-04-26 [2] CRAN (R 4.1.1)
systemfonts 1.0.3 2021-10-13 [1] CRAN (R 4.1.1)
terra 1.4-11 2021-10-11 [1] CRAN (R 4.1.1)
tibble * 3.1.5 2021-09-30 [1] CRAN (R 4.1.1)
tidyr * 1.1.4 2021-09-27 [1] CRAN (R 4.1.1)
tidyselect 1.1.1 2021-04-30 [1] CRAN (R 4.1.1)
tidyverse * 1.3.1 2021-04-15 [1] CRAN (R 4.1.1)
tmap * 3.3-2 2021-06-16 [1] CRAN (R 4.1.1)
tmaptools 3.1-1 2021-01-19 [1] CRAN (R 4.1.1)
tweenr 1.0.2 2021-03-23 [1] CRAN (R 4.1.1)
tzdb 0.1.2 2021-07-20 [1] CRAN (R 4.1.1)
units 0.7-2 2021-06-08 [1] CRAN (R 4.1.1)
utf8 1.2.2 2021-07-24 [1] CRAN (R 4.1.1)
vctrs 0.3.8 2021-04-29 [1] CRAN (R 4.1.1)
viridisLite 0.4.0 2021-04-13 [1] CRAN (R 4.1.1)
vroom 1.5.5 2021-09-14 [1] CRAN (R 4.1.1)
withr 2.4.2 2021-04-18 [1] CRAN (R 4.1.1)
wk 0.5.0 2021-07-13 [1] CRAN (R 4.1.1)
wordcloud2 * 0.2.1 2018-01-03 [1] CRAN (R 4.1.1)
xfun 0.26 2021-09-14 [1] CRAN (R 4.1.1)
XML 3.99-0.7 2021-08-17 [1] CRAN (R 4.1.1)
xml2 1.3.2 2020-04-23 [1] CRAN (R 4.1.1)
xtable 1.8-4 2019-04-21 [1] CRAN (R 4.1.1)
yaml 2.2.1 2020-02-01 [1] CRAN (R 4.1.0)
zip 2.2.0 2021-05-31 [1] CRAN (R 4.1.1)
[1] C:/Users/Usuario/Documents/R/win-library/4.1
[2] C:/Program Files/R/R-4.1.1/library