Reto 2: Análisis de Datos

Autores

Itxaso Yuguero Garmendia

Última modificación

3 de noviembre de 2024

Actividad 1

Si pones el siguiente chunk en eval = T y te aseguras de que el archivo aadd_unit2.png se encuentra en tu directorio de trabajo, verás el marco de datos COW Trade 4.0. Observa los datos de la imagen y consulta, si lo crees necesario, la página web para responder a las siguientes preguntas:

  1. El conjunto de datos contiene 1,773,656 observaciones y 10 variables.

  2. La unidad de observación es el flujo de comercio bilateral entre pares de estados soberanos para un año específico.

  3. Las variables que tiene este conjunto de datos son:

  • Códigos de país (ccode1, ccode2): variables numéricas que identifican a los países en el sistema del proyecto Correlates of War.
  • Año (year): variable temporal que indica el año del flujo de comercio.
  • Nombres de los países (importer1, importer2): Variables Categóricas que indican los países involucrados en el comercio bilateral.
  • Variables cuantitativas de comercio, como flow1, flow2, smoothflow1, smoothflow2, y smoothtotrade, que representan las cifras de importaciones y exportaciones entre los países, en dólares estadounidenses corrientes.
  1. El nivel de análisis es el nivel de país-par en este caso Canada y Estados Unidos en un año específico en este caso para los años entre 1920 y 1929, ya que se están analizando las relaciones comerciales entre pares de países por año.

  2. Una pregunta posible podría ser: ¿Cómo ha evolucionado el comercio bilateral entre Estados Unidos y Canadá desde 1920 hasta 1929?

  3. En la tabla vemos un aumento en el total del comercio (columna smoothtotrade) entre Canadá y Estados Unidos durante la década de 1920. Podríamos cometer una falacia ecológica si asumiésemos que ese aumento benefició a todos los sectores económicos de ambos países ya que ese aumento podría estar concentrado en sectores específicos.

# pon eval = T para visualizar la imagen
# asegúrate de que la imagen y este documento están en la misma carpeta
knitr::include_graphics("aadd_unit2.png")

Actividad 2

En esta actividad utilizaremos el marco de datos eu_ideology_scores.xlsx. Para ello lo importaremos con la función readxl() y le daremos el nombre de euis.

#Recuerda que todos los chunks están en eval = F, para activarlos tienes que cambiar a eval = T
library(readxl)
euis <- read_xlsx("eu_ideology_scores.xlsx")
  1. En primer lugar, haz una exploración general de los datos con las funciones que ya conoces, identificando el número de observaciones, variables, unidad de observación, etc.

En este marco de datos vemos que tenemos 10 variables y 495 observaciones.

glimpse(euis)
Rows: 495
Columns: 10
$ country_name                    <chr> "Belgium", "Belgium", "Belgium", "Belg…
$ region_name                     <chr> "Bruxelles", "Bruxelles", "Bruxelles",…
$ party_name                      <chr> "Front Démocratique des Francophones",…
$ party_abbreviation              <chr> "FDF/DéFI", "FDF/DéFI", "FDF/DéFI", "F…
$ election_year_regional          <dbl> NA, NA, NA, NA, NA, NA, 1989, 1995, 19…
$ elec_date_reg                   <chr> NA, NA, NA, NA, NA, NA, "6/18/1989", "…
$ election_year_national_previous <dbl> 1971, 1974, 1977, 1978, 1981, 1985, 19…
$ elec_date_nat                   <chr> "26125", "27305", "4/17/1977", "12/17/…
$ eu                              <dbl> 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,…
$ dum_eu                          <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
  1. Con unique(), examina cuántos países diferentes hay.
unique_countries <- unique(euis$country_name)
length(unique_countries)
[1] 7
unique(euis$country_name)
[1] "Belgium"        "France"         "Germany"        "Italy"         
[5] "Spain"          "Sweden"         "United Kingdom"
  1. Escribe el código que te permita observar qué observación / observaciones es “Euskal Herria Bildu”.
euis %>% filter(party_name == "Euskal Herria Bildu")
# A tibble: 2 × 10
  country_name region_name  party_name party_abbreviation election_year_regional
  <chr>        <chr>        <chr>      <chr>                               <dbl>
1 Spain        Pais Vasco … Euskal He… EH Bildu                             2012
2 Spain        Pais Vasco … Euskal He… EH Bildu                             2016
# ℹ 5 more variables: elec_date_reg <chr>,
#   election_year_national_previous <dbl>, elec_date_nat <chr>, eu <dbl>,
#   dum_eu <dbl>
  1. Cambia “Social Democratic and Labour Party” por “Social Democratic & Labour Party”.
 euis %>% mutate(party_name = ifelse(party_name == "Social Democratic and Labour Party", 
                             "Social Democratic & Labour Party", party_name))
# A tibble: 495 × 10
   country_name region_name party_name party_abbreviation election_year_regional
   <chr>        <chr>       <chr>      <chr>                               <dbl>
 1 Belgium      Bruxelles   Front Dém… FDF/DéFI                               NA
 2 Belgium      Bruxelles   Front Dém… FDF/DéFI                               NA
 3 Belgium      Bruxelles   Front Dém… FDF/DéFI                               NA
 4 Belgium      Bruxelles   Front Dém… FDF/DéFI                               NA
 5 Belgium      Bruxelles   Front Dém… FDF/DéFI                               NA
 6 Belgium      Bruxelles   Front Dém… FDF/DéFI                               NA
 7 Belgium      Bruxelles   Front Dém… FDF/DéFI                             1989
 8 Belgium      Bruxelles   Front Dém… FDF/DéFI                             1995
 9 Belgium      Bruxelles   Front Dém… FDF/DéFI                             1999
10 Belgium      Bruxelles   Front Dém… FDF/DéFI                             2004
# ℹ 485 more rows
# ℹ 5 more variables: elec_date_reg <chr>,
#   election_year_national_previous <dbl>, elec_date_nat <chr>, eu <dbl>,
#   dum_eu <dbl>
unique(euis$party_name)
 [1] "Front Démocratique des Francophones"                                                                                                
 [2] "Rassemblement Wallonie/Rassemblement Wallonie France"                                                                               
 [3] "Nieuw Vlaamse Alliantie"                                                                                                            
 [4] "Vlaams Belang"                                                                                                                      
 [5] "Volksunie"                                                                                                                          
 [6] "Pro Duetschsprachige Gemeinschaft"                                                                                                  
 [7] "Wallonie D'Abord"                                                                                                                   
 [8] "Alsace d'Abord"                                                                                                                     
 [9] "Union Democratique Bretonne"                                                                                                        
[10] "Parti Breton / Strollad Breizh"                                                                                                     
[11] "A Manca"                                                                                                                            
[12] "Accolta Naziunale Corsa"                                                                                                            
[13] "A Manca Naziunale"                                                                                                                  
[14] "Corsica Nazione"                                                                                                                    
[15] "Unione di u populu Cosru"                                                                                                           
[16] "Muvimentu pà l'Autodeterminazione"                                                                                                  
[17] "Rinnovu"                                                                                                                            
[18] "Partit Occitan"                                                                                                                     
[19] "Corsica Libera"                                                                                                                     
[20] "Partidu di a Naziune Corsa"                                                                                                         
[21] "Femu a Corsica"                                                                                                                     
[22] "Ligue Savosienne"                                                                                                                   
[23] "Mouvement Région Savoie"                                                                                                            
[24] "Bayernpartei"                                                                                                                       
[25] "Die Friesen"                                                                                                                        
[26] "Partei des Demokratischen Sozialismus"                                                                                              
[27] "Südschleswigschen Wählerverbandes"                                                                                                  
[28] "Lega Nord"                                                                                                                          
[29] "Partito Popolare Trentino Tirolese/Unione Autonomista Trentino Tirolese/Autonomia Integrale / Partito Autonomista Trentino Tirolese"
[30] "Partito Sardo D'Azione"                                                                                                             
[31] "Die Freiheitlichen"                                                                                                                 
[32] "Südtiroler Volkspartei"                                                                                                             
[33] "Union für Südtirol"                                                                                                                 
[34] "Union Valdôtaine"                                                                                                                   
[35] "Partido Andalucista"                                                                                                                
[36] "Chunta Aragonesista"                                                                                                                
[37] "Partido Aragonés"                                                                                                                   
[38] "Unió Mallorquina"                                                                                                                   
[39] "Esquerra Republicana de Catalunya"                                                                                                  
[40] "Alternativa Popular Canaria"                                                                                                        
[41] "Coalición Canaria"                                                                                                                  
[42] "Partido Regionalista de Cantabria"                                                                                                  
[43] "Convergéncia I Unió"                                                                                                                
[44] "Bloque Nacionalista Gallego"                                                                                                        
[45] "Anova-Irmandade Nacionalista"                                                                                                       
[46] "Compromiso por Galicia"                                                                                                             
[47] "Partido Coalición Galega"                                                                                                           
[48] "Partido Galeguista"                                                                                                                 
[49] "Partido Riojano"                                                                                                                    
[50] "Convergencia Demócratica de Navarra"                                                                                                
[51] "Aralar"                                                                                                                             
[52] "Eusko Alkartasuna"                                                                                                                  
[53] "Herri Batasuna"                                                                                                                     
[54] "Unión del Pueblo Navarra"                                                                                                           
[55] "Partido Nacionalista Vasco"                                                                                                         
[56] "Alternativa Nacionalista Canaria"                                                                                                   
[57] "Euskal Herria Bildu"                                                                                                                
[58] "Candidatura d'Unitat Popular"                                                                                                       
[59] "Bloc Nacionalista Valencià-Coalició Compromís"                                                                                      
[60] "Unió Valenciana"                                                                                                                    
[61] "Skånepartiet"                                                                                                                       
[62] "Scottish Greens"                                                                                                                    
[63] "Scottish National Party"                                                                                                            
[64] "Plaid Cymru"                                                                                                                        
[65] "The North East Party"                                                                                                               
[66] "Democratic Unionist Party"                                                                                                          
[67] "Social Democratic and Labour Party"                                                                                                 
[68] "Sinn Fein"                                                                                                                          
[69] "Mebyon Kernow"                                                                                                                      
[70] "Yorkshire Party"                                                                                                                    
  1. La variable election_year_regional computa el año en que se produjeron elecciones regionales. No obstante, lo que queremos crear es una nueva variable que se llame dif y que calcule la diferencia de años con el actualizado, de manera que si unas elecciones se produjeron en 1995 y estamos en 2024, el resultado sea 29 (2024 - 1995).
euis1 <- euis %>%
 mutate(dif = 2024 - election_year_regional) %>%
  select(election_year_regional, dif) %>%
  glimpse()
Rows: 495
Columns: 2
$ election_year_regional <dbl> NA, NA, NA, NA, NA, NA, 1989, 1995, 1999, 2004,…
$ dif                    <dbl> NA, NA, NA, NA, NA, NA, 35, 29, 25, 20, 15, 10,…
  1. Reduce los datos, de manera que conserves las observaciones de Cataluña que tuvieron elecciones regionales más tarde de 2010.
catalonia_data <- euis %>%
  filter(region_name == "Catalonia", election_year_regional > 2010)
catalonia_data
# A tibble: 9 × 10
  country_name region_name party_name  party_abbreviation election_year_regional
  <chr>        <chr>       <chr>       <chr>                               <dbl>
1 Spain        Catalonia   Esquerra R… ERC                                  2012
2 Spain        Catalonia   Esquerra R… ERC                                  2015
3 Spain        Catalonia   Esquerra R… ERC                                  2017
4 Spain        Catalonia   Convergénc… CiU-PDeCAT                           2012
5 Spain        Catalonia   Convergénc… CiU-PDeCAT                           2015
6 Spain        Catalonia   Convergénc… CiU-PDeCAT                           2017
7 Spain        Catalonia   Candidatur… CUP                                  2012
8 Spain        Catalonia   Candidatur… CUP                                  2015
9 Spain        Catalonia   Candidatur… CUP                                  2017
# ℹ 5 more variables: elec_date_reg <chr>,
#   election_year_national_previous <dbl>, elec_date_nat <chr>, eu <dbl>,
#   dum_eu <dbl>
  1. Finalmente, crea una nueva variable decade a partir de los valores de la variable election_year_national_previous, de manera que observes sus valores por décadas. Es decir, en lugar de 1971 debería verse el valor “1970s”, en lugar de 1981 el valor “1980s”, etc.
decada <- euis %>%
  mutate(decade = paste0(floor(election_year_national_previous / 10) * 10, "s")) %>%
  glimpse()
Rows: 495
Columns: 11
$ country_name                    <chr> "Belgium", "Belgium", "Belgium", "Belg…
$ region_name                     <chr> "Bruxelles", "Bruxelles", "Bruxelles",…
$ party_name                      <chr> "Front Démocratique des Francophones",…
$ party_abbreviation              <chr> "FDF/DéFI", "FDF/DéFI", "FDF/DéFI", "F…
$ election_year_regional          <dbl> NA, NA, NA, NA, NA, NA, 1989, 1995, 19…
$ elec_date_reg                   <chr> NA, NA, NA, NA, NA, NA, "6/18/1989", "…
$ election_year_national_previous <dbl> 1971, 1974, 1977, 1978, 1981, 1985, 19…
$ elec_date_nat                   <chr> "26125", "27305", "4/17/1977", "12/17/…
$ eu                              <dbl> 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,…
$ dum_eu                          <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
$ decade                          <chr> "1970s", "1970s", "1970s", "1970s", "1…

Actividad 3: The War Of The Five Kings

En esta sección utilizaremos el sistema pipe (%>% o |>) y las funciones del paquete dplyr (filter, select, mutate, arrange). Y lo aplicaremos a la base de datos The War Of The Five Kings, inspirada en la popular serie Game of Thrones.

got <- tibble(read.csv("https://github.com/chrisalbon/war_of_the_five_kings_dataset/raw/master/5kings_battles_v1.csv"))
  1. En primer lugar, vamos a reducir los datos, de manera que solo conservemos los datos que nos interesan. Primero deberás visualizar los datos para hacerte una idea de su contenido (recomendamos con glimpse()). A continuación, crea un nuevo objeto gotr donde conservemos las siguientes columnas: el nombre de la batalla, el año, el rey atacante y defensor, el tamaño del atacante y el defensor, el resultado y el tipo de la batalla, la localización, la región y si era verano.
gotr <- got %>%
  select(name, year, attacker_king, defender_king, attacker_size, defender_size, 
         attacker_outcome, battle_type, location, region, summer)
glimpse(gotr)
Rows: 38
Columns: 11
$ name             <chr> "Battle of the Golden Tooth", "Battle at the Mummer's…
$ year             <int> 298, 298, 298, 298, 298, 298, 298, 299, 299, 299, 299…
$ attacker_king    <chr> "Joffrey/Tommen Baratheon", "Joffrey/Tommen Baratheon…
$ defender_king    <chr> "Robb Stark", "Robb Stark", "Robb Stark", "Joffrey/To…
$ attacker_size    <int> 15000, NA, 15000, 18000, 1875, 6000, NA, NA, 1000, 26…
$ defender_size    <int> 4000, 120, 10000, 20000, 6000, 12625, NA, NA, NA, NA,…
$ attacker_outcome <chr> "win", "win", "win", "loss", "win", "win", "win", "wi…
$ battle_type      <chr> "pitched battle", "ambush", "pitched battle", "pitche…
$ location         <chr> "Golden Tooth", "Mummer's Ford", "Riverrun", "Green F…
$ region           <chr> "The Westerlands", "The Riverlands", "The Riverlands"…
$ summer           <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
  1. Filtra los datos de gotr para que se vean solo las batallas donde Stannis Baratheon era el rey atacante.
stannis_battles <- gotr %>%
  filter(attacker_king == "Stannis Baratheon")
stannis_battles
# A tibble: 5 × 11
  name              year attacker_king defender_king attacker_size defender_size
  <chr>            <int> <chr>         <chr>                 <int>         <int>
1 Siege of Storm'…   299 Stannis Bara… Renly Barath…          5000         20000
2 Battle of the B…   299 Stannis Bara… Joffrey/Tomm…         21000          7250
3 Battle of Castl…   300 Stannis Bara… Mance Rayder         100000          1240
4 Retaking of Dee…   300 Stannis Bara… Balon/Euron …          4500           200
5 Siege of Winter…   300 Stannis Bara… Joffrey/Tomm…          5000          8000
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
#   location <chr>, region <chr>, summer <int>
  1. Filtra los datos para que se vean solo las batallas donde Stannis Baratheon era el rey atacante y la batalla fue en invierno.
stannis_winter_battles <- gotr %>%
  filter(attacker_king == "Stannis Baratheon", summer == FALSE)
stannis_winter_battles
# A tibble: 3 × 11
  name              year attacker_king defender_king attacker_size defender_size
  <chr>            <int> <chr>         <chr>                 <int>         <int>
1 Battle of Castl…   300 Stannis Bara… Mance Rayder         100000          1240
2 Retaking of Dee…   300 Stannis Bara… Balon/Euron …          4500           200
3 Siege of Winter…   300 Stannis Bara… Joffrey/Tomm…          5000          8000
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
#   location <chr>, region <chr>, summer <int>
  1. Copia el código anterior y crea una nueva pipe, donde pongas los datos de tamaño del atacante y tamaño del defensor en miles.
stannis_winter_battles_mil <- gotr %>%
  filter(attacker_king == "Stannis Baratheon", summer == FALSE) %>%
  mutate(attacker_size = attacker_size / 1000, 
         defender_size = defender_size / 1000)
stannis_winter_battles_mil
# A tibble: 3 × 11
  name              year attacker_king defender_king attacker_size defender_size
  <chr>            <int> <chr>         <chr>                 <dbl>         <dbl>
1 Battle of Castl…   300 Stannis Bara… Mance Rayder          100            1.24
2 Retaking of Dee…   300 Stannis Bara… Balon/Euron …           4.5          0.2 
3 Siege of Winter…   300 Stannis Bara… Joffrey/Tomm…           5            8   
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
#   location <chr>, region <chr>, summer <int>
  1. Copia el código anterior y crea una nueva pipe, donde ordenes los datos por tamaño del ejército defensor.
stannis_winter_battles_orden <- gotr %>%
  filter(attacker_king == "Stannis Baratheon", summer == FALSE) %>%
  arrange(defender_size)
stannis_winter_battles_orden
# A tibble: 3 × 11
  name              year attacker_king defender_king attacker_size defender_size
  <chr>            <int> <chr>         <chr>                 <int>         <int>
1 Retaking of Dee…   300 Stannis Bara… Balon/Euron …          4500           200
2 Battle of Castl…   300 Stannis Bara… Mance Rayder         100000          1240
3 Siege of Winter…   300 Stannis Bara… Joffrey/Tomm…          5000          8000
# ℹ 5 more variables: attacker_outcome <chr>, battle_type <chr>,
#   location <chr>, region <chr>, summer <int>
  1. Entre las batallas que eran una emboscada, ¿cuáles eran los ejércitos defensores con más tropas? Responde a la pregunta utilizando, en este orden, filter(), select() y arrange(). El marco de datos resultante debería mostrar claramente la respuesta.
ambushes <- gotr %>%
  filter(battle_type == "ambush") %>%
  select(defender_king,defender_size) %>%
  arrange(desc(defender_size))
ambushes
# A tibble: 10 × 2
   defender_king            defender_size
   <chr>                            <int>
 1 Joffrey/Tommen Baratheon         12625
 2 Joffrey/Tommen Baratheon         10000
 3 Joffrey/Tommen Baratheon          6000
 4 Robb Stark                        3500
 5 Robb Stark                        2000
 6 Robb Stark                         120
 7 Joffrey/Tommen Baratheon           100
 8 Robb Stark                          NA
 9 Robb Stark                          NA
10 Joffrey/Tommen Baratheon            NA