title: “Tarea1_Nicolas_Eugenia” output: pdf_document date: “2025-09-07” editor_options: markdown: wrap: 72
#Cargar librerías library(readr)
library(readxl) library(dplyr)
#Importar bases de datos Ideal_Points_ONU <- read_csv (“C:/Users/marfe/OneDrive/Documentos/ITAM/MPA/Tarea 1/Ideal Points ONU 1946-2021.csv”) Ideal_Points_ONU[[“year”]] <- 1945 + Ideal_Points_ONU[[“session”]] #pregunta2.2.A:) President_ideology <- read_csv(“C:/Users/marfe/OneDrive/Documentos/ITAM/MPA/Tarea 1/President ideology 1979-2020.csv”) WhoGov_within <- read_xlsx (“C:/Users/marfe/OneDrive/Documentos/ITAM/MPA/Tarea 1/WhoGov_within_V1.1.xlsx”)
#¿Cuantas observaciones tienes en cada base, i.e. cual es el N de cada una? nrecords1 <- nrow(Ideal_Points_ONU) nrecords1 nrecords2 <- nrow(President_ideology) nrecords2 nrecords3 <- nrow(WhoGov_within) nrecords3
#¿Cual es (i) el numero de paıses; y (ii) la cobertura temporal (i.e., el primer y ultimo ano) de cada base? country_time1 <- Ideal_Points_ONU %>% summarise( n_countries = n_distinct(Countryname), minyear = min(year, na.rm = TRUE), maxyear = max(year, na.rm = TRUE) ) country_time2 <- President_ideology %>% summarise( n_countries = n_distinct(country), minyear = min(year, na.rm = TRUE), maxyear = max(year, na.rm = TRUE) ) country_time3 <- WhoGov_within %>% summarise( n_countries = n_distinct(country_name), minyear = min(year, na.rm = TRUE), maxyear = max(year, na.rm = TRUE) ) country_time1 country_time2 country_time3
#——————————————————————————————————————–
#Codigo clave unica cu_itam <- 196091 set.seed (cu_itam) sample (c (“Brazil”, “China”, “Cuba”, “Israel”, “Russia”, “US”), 1) #nos tocó Estados Unidos :)
#Crea una nueva variable indicando la diferencia entre el punto ideal de cada observacion y el punto ideal Estados Unidos Ideal_Points_ONU <- Ideal_Points_ONU %>% left_join( Ideal_Points_ONU %>% filter(Countryname == “United States”) %>% select(session, ideal_us = IdealPointAll), by = “session” ) %>% mutate(diff_ideal = IdealPointAll - ideal_us)
#Crea un indicador que tome el valor de 1 si su punto ideal es menor al de Estados Unidos Ideal_Points_ONU <- Ideal_Points_ONU %>% mutate(indicador_us = if_else(diff_ideal < 0, 1, 0))
#——————————————————————————————————————–
#Coloca todos los indicadores, excepto leftIRT (que ya está en una escala diferente), en una escala de 0 a 1, donde 0 significa “derecha” y 1 significa “izquierda”. #Para los indicadores que ya toman valores entre 0 y 1, donde valores cercanos a 1 indican una ideología más de izquierda, no es necesario hacer ninguna transformación. #En cambio, algunos indicadores son factores ordenados. En ese caso, primero debes convertirlos a valores numéricos, donde 0 = “right” y 1 = “left”. Considera cuidadosamente qué valor asignarle a cada una de las categorías intermedias.
President_ideology <- President_ideology %>% mutate( leftMOV_num = recode(leftMOV, “right” = 0, “center-right” = 0.25, “center” = 0.5, “center-left” = 0.75, “left” = 1, .default = NA_real_), leftBL_num = recode(leftBL, “right” = 0, “center” = 0.5, “left” = 1, .default = NA_real_) )
#Crea una nueva medida de ideología que tome el valor promedio de los seis indicadores, excluyendo la variable leftIRT. #Ten en cuenta que, si uno de los indicadores tiene el valor NA, la nueva variable automáticamente también tomará el valor de NA. Para evitarlo, utiliza la función rowwise() y calcula el promedio de los seis indicadores ignorando los valores NA.
President_ideology <- President_ideology %>% rowwise() %>% mutate( ideologia_promedio = mean( c_across(any_of(c(“leftMOV_num”,“leftBL_num”,“leftBG”,“leftLR”,“relBL”,“statCamp”))), na.rm = TRUE ) ) %>% ungroup()
#Identifica a los gobiernos de izquierda creando una variable dummy que tome el valor de 1 si la variable calculada en el punto anterior (ideologia_promedio) es mayor o igual a 0.80, y el valor de 0 en caso contrario.
President_ideology <- President_ideology %>% mutate( izquierda_dummy = if_else(ideologia_promedio >= 0.80, 1, 0) )
#Crea una variable que indique el número de años que cada presidente llevaba en funciones.
President_ideology <- President_ideology %>% mutate( anos_en_funciones = year - yinit )
#——————————————————————————————————————–
#La variable gender puede tomar tres valores: Female, Male o Unknown. Crea una nueva variable llamada female que tome el valor 1 para ministras mujeres, 0 para ministros varones y NA para todos los demás casos.
WhoGov_within <- WhoGov_within %>% mutate( female = case_when( gender == “Female” ~ 1, gender == “Male” ~ 0, TRUE ~ NA_real_ ) )
#La variable prestige_1 indica el nivel de prestigio asociado a la principal cartera que ocupa un ministro (algunos ministros pueden ocupar múltiples carteras; en este caso, ignora esa posibilidad). #Crea tres nuevas variables dummy que tomen el valor de 1 para carteras de prestigio alto, medio y bajo, respectivamente.
WhoGov_within <- WhoGov_within %>% mutate( prestige_high = if_else(prestige_1 == “High”, 1, 0, missing = 0), prestige_medium = if_else(prestige_1 == “Medium”, 1, 0, missing = 0), prestige_low = if_else(prestige_1 == “Low”, 1, 0, missing = 0) )
#——————————————————————————————————————–
#Examina los valores de la variable session (por ejemplo, usando las funciones summary() o range()). ¿Cuantas sesiones de la Asamblea General de la onu estan incluidas en la base?
summary(Ideal_Points_ONU\(session) range(Ideal_Points_ONU\)session, na.rm = TRUE) n_sessions <- dplyr::n_distinct(Ideal_Points_ONU$session) n_sessions
#¿sesión 19? ¿fueron 75 sesiones en la práctica? sesionn19 <- Ideal_Points_ONU %>% filter(session== 19) nrow(sesionn19) cat(“Al correr el código vemos que no hay datos para la sesión 19. Por lo tanto, modificaría mi respuesta anterior. En realidad son 75 sesiones.”)
#Una condición necesaria (aunque no suficiente) para que una variable esté distribuida normalmente es que la media y la mediana tomen aproximadamente el mismo valor. #Cuando la media es considerablemente mayor que la mediana, decimos que la distribución de la variable está sesgada a la derecha (cola más larga hacia valores altos). #En cambio, cuando la media es menor que la mediana, la distribución de la variable está sesgada a la izquierda (cola más larga hacia valores bajos).
dif_session <- Ideal_Points_ONU %>% summarise( media = mean(session, na.rm = TRUE), mediana = median(session, na.rm = TRUE) ) %>% mutate( diferencia = media - mediana, sesgo = case_when( diferencia > 0 ~ “derecha”, diferencia < 0 ~ “izquierda”, TRUE ~ “simétrica” ) )
dif_session
#En la sección 2 creaste una dummy que indica si un país está “a la izquierda” del país que te tocó en suerte. #¿Con qué frecuencia se observa que los países tengan puntos ideales a la izquierda de dicho país? #Responde calculando la proporción de observaciones en que el punto ideal de un país está a la izquierda del punto ideal del país asignado.
table(Ideal_Points_ONU\(indicador_us) prop.table(table(Ideal_Points_ONU\)indicador_us))
#Revolución cubana. #Fidel Castro tomó el poder en Cuba el 1 de enero de 1959. #¿En qué medida afectó esto la propensión de Cuba a votar de manera similar a los Estados Unidos? #Responde calculando la diferencia promedio entre el punto ideal de Cuba y el de Estados Unidos hasta 1958 inclusive y desde 1959 en adelante.
cuba_diff <- Ideal_Points_ONU %>% filter(Countryname == “Cuba”) %>% mutate(periodo = if_else(year <= 1958, “Antes_1959”, “Desde_1959”)) %>% group_by(periodo) %>% summarise( diff_promedio = mean(diff_ideal, na.rm = TRUE), n_obs = n() )
cuba_diff cat(” Antes de 1959, la diferencia promedio entre el punto ideal de Cuba y el de Estados Unidos fue de -0.64. Esto significa que, en general, Cuba se ubicaba ligeramente a la izquierda de Estados Unidos en la Asamblea General de la ONU. El número de observaciones disponibles para este periodo es de 13, lo que sugiere que, aunque la distancia existía, no era especialmente marcada.
En cambio, a partir de 1959, después del triunfo de la Revolución Cubana, la diferencia promedio se amplió notablemente hasta -4.19. Esto refleja que Cuba se desplazó mucho más hacia la izquierda en comparación con Estados Unidos, incrementando considerablemente la brecha ideológica. En este periodo se registran 62 observaciones, lo que confirma que el cambio no fue un evento aislado, sino una tendencia persistente a lo largo de los años.
En conjunto, los resultados muestran que la Revolución Cubana representó un punto de quiebre claro en el comportamiento de voto de Cuba frente a Estados Unidos en la ONU. Mientras antes de 1959 Cuba estaba relativamente cerca de la posición estadounidense, a partir de ese año se distanció de manera pronunciada hacia la izquierda, en línea con la orientación política del nuevo régimen de Fidel Castro. “)
#Revolución iraní. # Responde la misma pregunta pero aplicada al caso de la Revolución iraní. #El régimen de los ayatolás gobierna Irán desde principios de 1979. iran_diff <- Ideal_Points_ONU %>% filter(Countryname == “Iran”) %>% mutate(periodo = if_else(year <= 1978, “Antes_1979”, “Desde_1979”)) %>% group_by(periodo) %>% summarise( diff_promedio = mean(diff_ideal, na.rm = TRUE), n_obs = n() )
iran_diff cat(” Antes de 1979, la diferencia promedio entre el punto ideal de Irán y el de Estados Unidos fue de -1.68, con 32 observaciones. Esto indica que, bajo el régimen del Sha, Irán ya se encontraba algo más a la izquierda de Estados Unidos en las votaciones de la ONU, aunque la distancia no era excesiva.
Después de 1979, con el triunfo de la Revolución iraní y la llegada al poder del régimen de los ayatolás, la diferencia promedio se amplió a -4.15, con 43 observaciones. Esto refleja un alejamiento mucho más pronunciado respecto a Estados Unidos, evidenciando un cambio sustantivo en la orientación política de Irán en el ámbito internacional.
En conjunto, los resultados muestran que la Revolución iraní representó un quiebre claro: Irán pasó de una distancia moderada con respecto a EE.UU. a un distanciamiento mucho mayor, consistente con el giro ideológico del nuevo régimen. “)
#Usando la función filter() del paquete dplyr, divide la base original en dos subconjuntos: # 1. Uno con todas las observaciones excepto las correspondientes a Estados Unidos. # 2. Otro que incluya exclusivamente las observaciones de Estados Unidos.
ONU_sin_US <- Ideal_Points_ONU %>% filter(Countryname != “United States”) ONU_US <- Ideal_Points_ONU %>% filter(Countryname == “United States”)
#Compara el promedio (media) de la variable IdealPoint en cada subconjunto. #¿Qué observas? ¿Cambia algo si empleas la mediana en lugar de la media?
resumen_idealpoint <- bind_rows( ONU_sin_US %>% summarise( grupo = “Resto del mundo (sin EE.UU.)”, n = n(), media = mean(IdealPointAll, na.rm = TRUE), mediana = median(IdealPointAll, na.rm = TRUE) ), ONU_US %>% summarise( grupo = “Estados Unidos”, n = n(), media = mean(IdealPointAll, na.rm = TRUE), mediana = median(IdealPointAll, na.rm = TRUE) ) ) %>% select(grupo, n, media, mediana)
resumen_idealpoint cat(” Al comparar los resultados, observamos que el punto ideal promedio de Estados Unidos (2.41) es mucho mayor que el del resto del mundo (-0.0167). Esto confirma que, en términos ideológicos dentro de la ONU, Estados Unidos suele ubicarse de manera bastante distinta al promedio de los demás países.
Cuando usamos la mediana en lugar de la media, la conclusión no cambia: Estados Unidos mantiene un valor claramente más alto (2.57 frente a -0.169). Sin embargo, se nota que la mediana para el resto del mundo es más negativa que la media, lo cual sugiere que la distribución en ese grupo está algo sesgada hacia valores de izquierda. “)
#Repite el ejercicio anterior pero usando group by() en lugar de dividir la base en dos partes.
resumen_idealpoint_groupby <- Ideal_Points_ONU %>% mutate(grupo = if_else(Countryname == “United States”, “Estados Unidos”, “Resto del mundo (sin EE.UU.)”)) %>% group_by(grupo) %>% summarise( n = n(), media = mean(IdealPointAll, na.rm = TRUE), mediana = median(IdealPointAll, na.rm = TRUE) )
resumen_idealpoint_groupby
#——————————————————————————————————————–
#Calcula la media y la mediana de la variable leftIRT. #¿Dirías que la distribución de esta variable está sesgada hacia la izquierda o hacia la derecha?
res_leftIRT <- President_ideology %>% summarise( media = mean(leftIRT, na.rm = TRUE), mediana = median(leftIRT, na.rm = TRUE) ) %>% mutate( diferencia = media - mediana, sesgo = case_when( diferencia > 0 ~ “derecha”, diferencia < 0 ~ “izquierda”, TRUE ~ “simétrica” ) )
res_leftIRT
#¿En promedio, quiénes son más conservadores: los presidentes hombres o las presidentas mujeres?
conservadores_MvsH <- President_ideology %>% group_by(female) %>% summarise( n = n(), media = mean(ideologia_promedio, na.rm = TRUE), mediana = median(ideologia_promedio, na.rm = TRUE), .groups = “drop” ) %>% mutate( genero = if_else(female == 1, “PresidentAs”, “PresidentEs”) ) %>% select(genero, n, media, mediana)
conservadores_MvsH quien_mas_conservador <- conservadores_MvsH %>% arrange(media) %>% slice(1) %>% pull(genero)
cat(“En promedio, los más conservadores son:”, quien_mas_conservador, “”)
#¿Los outsiders o insiders? conservadores_OutIn <- President_ideology %>% group_by(outsider) %>% summarise( n = n(), media = mean(ideologia_promedio, na.rm = TRUE), mediana = median(ideologia_promedio, na.rm = TRUE), .groups = “drop” ) %>% mutate( tipo = if_else(outsider == 1, “Outsiders”, “Insiders”) ) %>% select(tipo, n, media, mediana)
conservadores_OutIn
quien_mas_conservador_OutIn <- conservadores_OutIn %>% arrange(media) %>% slice(1) %>% pull(tipo)
cat(“En promedio, los más conservadores son:”, quien_mas_conservador_OutIn, “”)
#¿Quién era el presidente de Guatemala en 2003 y cuál era su valor en la variable leftIRT? #¿Quién era el presidente de Ecuador en 1995? #¿Y el de México en 2002?
presidentes_consulta <- President_ideology %>% filter((country == “Guatemala” & year == 2003) | (country == “Ecuador” & year == 1995) | (country == “Mexico” & year == 2002)) %>% select(country, year, pName, leftIRT)
presidentes_consulta
#Comparando medidas #¿Qué tan parecida es la medida de ideología que creaste en la sección anterior, #es decir, el promedio de múltiples variables, a la medida leftIRT, #que también agrega los indicadores pero mediante un proceso más complejo?
comparacion <- President_ideology %>% summarise(corr = cor(ideologia_promedio, leftIRT, use = “complete.obs”))
comparacion cat(” La correlación entre la medida de ideología promedio y la medida leftIRT es de 0.841. Este valor indica una relación positiva y fuerte. “)
#——————————————————————————————————————–
cu_itam2.0 <- 196091 set.seed (cu_itam2.0) sample (c (0:9), 1)
#Crea una variable dummy que tome el valor de 1 si tanto core como minister #toman el valor de 1, y 0 en caso contrario.
WhoGov_within <- WhoGov_within %>% mutate(core_minister = if_else(core == 1 & minister == 1, 1, 0))
#Quédate con las observaciones que pertenecen al core del gabinete y #que corresponden a años que terminan en el dígito que te tocó en el punto (i).
digito <- 3
WhoGov_core_digito <- WhoGov_within %>% filter(core == 1, year %%
10 == digito) nrow(WhoGov_core_digito)
#Usando las funcionalidades de dplyr, calcula el promedio de la variable #female que calculaste en la pregunta anterior, separadamente para cada año
promedio_female_por_ano <- WhoGov_core_digito %>% group_by(year) %>% summarise( promedio_female = mean(female, na.rm = TRUE), n_obs = n() ) %>% arrange(year)
promedio_female_por_ano
cat(” En 1963, el promedio de female es 0, lo que significa que no hubo ministras mujeres en los gabinetes ese año (14 observaciones en total). En 1973, el valor es 0.0166 (~1.7%), lo que indica que de cada 100 ministros, apenas 1 o 2 eran mujeres (3,004 observaciones). En 1983, el promedio sube a 0.0416 (~4.2%). Aún es bajo, pero ya hay una mayor presencia de ministras (3,722 observaciones). En 1993, el valor es 0.0613 (~6.1%), lo que refleja un aumento lento pero constante de la participación femenina (3,897 observaciones). En 2003, el promedio alcanza 0.110 (~11%). Es decir, aproximadamente 1 de cada 9 ministros era mujer (4,301 observaciones). En 2013, llega a 0.163 (~16.3%), lo que implica que casi 1 de cada 6 ministros eran mujeres (4,640 observaciones). “)
#Incluso si más mujeres integran el core del gabinete, #es posible que sean relegadas a posiciones menos prestigiosas. #Repite el ejercicio anterior, pero agrupando por año y por prestige_1. #¿Dirías que el aumento de ministras ocurre solo en los ministerios menos prestigiosos, #o el crecimiento no depende del prestigio de la cartera?
prop_por_ano_prestigio <- WhoGov_core_digito %>%
mutate(prestige_1 = ifelse(is.na(prestige_1), “Unknown”, prestige_1))
%>%
group_by(prestige_1, year) %>% summarise( prop_female = mean(female,
na.rm = TRUE), n_obs = sum(!is.na(female)), .groups = “drop” ) %>%
arrange(prestige_1, year) prop_por_ano_prestigio
library(ggplot2) prop_plot <- prop_por_ano_prestigio %>% filter(prestige_1 != “Unknown”) ggplot(prop_plot, aes(x = year, y = prop_female, color = prestige_1, group = prestige_1)) + geom_line(size = 1) + labs( title = “Proporción de ministras por año y prestigio”, x = “Año”, y = “Proporción de ministras (0–1)”, color = “Prestigio” ) + theme_minimal()
#Usa las funciones de dplyr para unir la base de ideología presidencial con la base de votaciones en la ONU. #Pon atención a qué variables usarás como llaves de unión. #La nueva base debe incluir solo los 18 países de América Latina y solo los años para los que tienes datos de ideología presidencial.
la18 <- c(“Argentina”,“Bolivia”,“Brazil”,“Chile”,“Colombia”,“Costa Rica”, “Dominican Republic”,“Ecuador”,“El Salvador”,“Guatemala”,“Honduras”, “Mexico”,“Nicaragua”,“Panama”,“Paraguay”,“Peru”,“Uruguay”,“Venezuela”)
Base_ONU_Presididentes <- President_ideology %>% filter(country %in% la18) %>% left_join( Ideal_Points_ONU %>% select(Countryname, year, session, IdealPointAll), by = c(“country” = “Countryname”, “year” = “year”) )
#La pregunta (3.2b) te pedía identificar qué gobiernos son más conservadores: #¿los presidentes o las presidentas? Vuelve a responder esta pregunta, pero ahora utilizando las funcionalidades de dplyr. #En particular, calcula tanto el promedio como la desviación estándar de las variables leftIRT e IdealPointAll para cada subgrupo definido por el género.
conservadores_genero <- Base_ONU_Presididentes %>% group_by(female) %>% summarise( n_obs = n(), media_leftIRT = mean(leftIRT, na.rm = TRUE), sd_leftIRT = sd(leftIRT, na.rm = TRUE), media_ideal = mean(IdealPointAll, na.rm = TRUE), sd_ideal = sd(IdealPointAll, na.rm = TRUE), .groups = “drop” ) %>% mutate( genero = if_else(female == 1, “Presidentas”, “Presidentes”) ) %>% select(genero, everything(), -female)
conservadores_genero
quien_mas_conservador <- conservadores_genero %>% filter(!is.na(media_leftIRT)) %>% arrange(media_leftIRT) %>% slice(1) %>% pull(genero)
cat(“En promedio, los más conservadores son:”, quien_mas_conservador, “”)
#El “giro a la izquierda” #¿Los datos ofrecen evidencia de un “giro a la izquierda” en América Latina desde comienzos de los años 2000? #Responde calculando y observando el valor promedio de las variables leftIRT e IdealPointAll para cada año.
giro_leftIRT <- Base_ONU_Presididentes %>% group_by(year) %>% summarise( promedio_leftIRT = mean(leftIRT, na.rm = TRUE), n_obs = n(), .groups = “drop” )
ggplot(giro_leftIRT, aes(x = year, y = promedio_leftIRT)) + geom_line(color = “blue”, size = 1) + geom_point(color = “blue”, alpha = 0.6) + labs( title = “Promedio anual de ideología en América Latina”, x = “Año”, y = “Promedio ideología de izquierda” ) + theme_minimal()
#Ideología presidencial y votaciones en la ONU. #Esperaríamos que los gobiernos de izquierda sean menos proclives a votar en línea con los Estados Unidos. ¿Ocurre efectivamente así? #Usando el promedio de ideología presidencial que calculaste en la pregunta (2.3b): #(a) crea una variable categórica con tres niveles: “derecha” para valores entre 0 y 0.25; “centro” para valores > 0.25 y ≤ 0.75; e “izquierda” para valores > 0.75.
Base_ONU_Presididentes <- Base_ONU_Presididentes %>% mutate( ideol_cat = case_when( !is.na(ideologia_promedio) & ideologia_promedio >= 0 & ideologia_promedio <= 0.25 ~ “derecha”, !is.na(ideologia_promedio) & ideologia_promedio > 0.25 & ideologia_promedio <= 0.75 ~ “centro”, !is.na(ideologia_promedio) & ideologia_promedio > 0.75 ~ “izquierda”, TRUE ~ NA_character_ ), ideol_cat = factor(ideol_cat, levels = c(“derecha”,“centro”,“izquierda”)) )
#(b) con dplyr, calcula el promedio de IdealPointAll para cada categoría. ¿Lo que encuentras tiene sentido?
res_ideal_por_cat <- Base_ONU_Presididentes %>% group_by(ideol_cat) %>% summarise( n_obs = sum(!is.na(IdealPointAll)), # número de observaciones válidas mean_IdealPoint = mean(IdealPointAll, na.rm = TRUE), # promedio sd_IdealPoint = sd(IdealPointAll, na.rm = TRUE), # desviación estándar (extra) .groups = “drop” ) %>% arrange(ideol_cat)
res_ideal_por_cat cat(” Los resultados muestran que el promedio de IdealPointAll varía sistemáticamente según la ideología presidencial: - Gobiernos de derecha: promedio ≈ -0.087 → más cercanos a la posición de EE.UU. - Gobiernos de centro: promedio ≈ -0.148 → un poco más distantes, pero relativamente intermedios. - Gobiernos de izquierda: promedio ≈ -0.429 → los más alejados, menos proclives a votar en línea con EE.UU. - Casos no clasificados (NA): promedio ≈ -0.577, aunque con pocas observaciones. “)