Parte 1: Análise exploratória

Como etapa inicial das análises utilizando a base de dados UN Votes, é realizada uma análise exploratória que possui três objetivos distintos:

  1. Observar qual tipo de dados compõe cada uma das bases
  2. Obter uma amostra dos dados para ter maior conhecimento a respeito do significado prático de cada uma das variáveis
  3. Compreender melhor como foi feita a construção da base de dados, notando possíveis valores não inseridos que podem vir a afetar uma análise posterior

A primeira base de dados, UN Votes tem suas características analisadas pela função glimpse, que aponta para a predominância de variáveis de texto. Além disso, ao se analisar o complete_rate das variáveis da tabela, percebe-se que a variável country_code não está preenchida em 7898 linhas.

# exploratory data analysis (EDA) para a tabela un_votes
glimpse(un_votes)
## Rows: 869,937
## Columns: 4
## $ rcid         <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, ~
## $ country      <chr> "United States", "Canada", "Cuba", "Haiti", "Dominican Re~
## $ country_code <chr> "US", "CA", "CU", "HT", "DO", "MX", "GT", "HN", "SV", "NI~
## $ vote         <chr> "yes", "no", "yes", "yes", "yes", "yes", "yes", "yes", "y~
sample_votes <- un_votes %>% 
  sample_n(size = 5)
skim(un_votes)
Data summary
Name un_votes
Number of rows 869937
Number of columns 4
_______________________
Column type frequency:
character 3
numeric 1
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
country 0 1.00 4 32 0 200 0
country_code 7898 0.99 2 2 0 196 0
vote 0 1.00 2 7 0 3 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
rcid 0 1 3571.83 1859.06 3 2112 3597 5008 9147 ▅▇▇▃▁
  # removendo coluna country_code
  un_votes <- un_votes %>% 
  select(-country_code)

Já uma análise da tabela Roll Calls nos mostra a escolha feita quanto à inserção de variáveis discretas, mas que o R reconhece como números reais. Dentre estas se encontram as variáveis importantvote, que indica se o Departamento de Estados dos Estados Unidos considerou aquela votação importante, e amend, que indica se a votação foi a respeito de alguma emenda da ONU. O número de 573 inserções vazias da variável short, que diz respeito a uma descrição curta da votação, não é relevante, já que a variável descr, que trata da descrição extensa, está totalmente preenchida.

# exploratory data analysis (EDA) para a tabela roll_calls
glimpse(roll_calls)
## Rows: 6,202
## Columns: 9
## $ rcid          <dbl> 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,~
## $ session       <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,~
## $ importantvote <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,~
## $ date          <date> 1946-01-01, 1946-01-02, 1946-01-04, 1946-01-04, 1946-01~
## $ unres         <chr> "R/1/66", "R/1/79", "R/1/98", "R/1/107", "R/1/295", "R/1~
## $ amend         <dbl> 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1,~
## $ para          <dbl> 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,~
## $ short         <chr> "AMENDMENTS, RULES OF PROCEDURE", "SECURITY COUNCIL ELEC~
## $ descr         <chr> "TO ADOPT A CUBAN AMENDMENT TO THE UK PROPOSAL REFERRING~
sample_calls <- roll_calls %>% 
  sample_n(size = 5)
skim(roll_calls)
Data summary
Name roll_calls
Number of rows 6202
Number of columns 9
_______________________
Column type frequency:
character 3
Date 1
numeric 5
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
unres 159 0.97 4 14 0 5702 0
short 573 0.91 3 350 0 2018 0
descr 1 1.00 1 1494 0 4524 0

Variable type: Date

skim_variable n_missing complete_rate min max median n_unique
date 0 1 1946-01-01 2019-12-27 1986-12-05 863

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
rcid 0 1.00 3193.06 1978.16 3 1553.25 3104.5 4668.75 9147 ▇▇▇▃▁
session 0 1.00 41.66 19.38 1 28.00 41.0 58.00 74 ▃▅▇▆▆
importantvote 604 0.90 0.07 0.26 0 0.00 0.0 0.00 1 ▇▁▁▁▁
amend 3334 0.46 0.11 0.31 0 0.00 0.0 0.00 1 ▇▁▁▁▁
para 2994 0.52 0.31 0.46 0 0.00 0.0 1.00 1 ▇▁▁▁▃

Por fim, a tabela Issues irá apresentar, no formato variáveis de texto, a temática geral de cada tópico possível de votação, que são divididos em:

  1. Armas e materiais nucleares (Nuclear weapons and nuclear material)
  2. Controle de armas e desarmamento (Arms control and disarmament)
  3. Colonialismo (Colonialism)
  4. Desenvolvimento econômico (Economic development)
  5. Direitos humanos (Human rights)
  6. Conflito palestino (Palestinian conflict)
# exploratory data analysis (EDA) para a tabela issue
glimpse(issues)
## Rows: 5,745
## Columns: 3
## $ rcid       <dbl> 77, 9001, 9002, 9003, 9004, 9005, 9006, 128, 129, 130, 131,~
## $ short_name <chr> "me", "me", "me", "me", "me", "me", "me", "me", "me", "me",~
## $ issue      <chr> "Palestinian conflict", "Palestinian conflict", "Palestinia~
sample_issues <- issues %>% 
  sample_n(size = 5)
skim(issues)
Data summary
Name issues
Number of rows 5745
Number of columns 3
_______________________
Column type frequency:
character 2
numeric 1
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
short_name 0 1 2 2 0 6 0
issue 0 1 11 36 0 6 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
rcid 0 1 3493.74 1807.93 6 2102 3543 4803 9145 ▅▇▇▂▁
Parte 2: Formatação de dados

Na sequência, uma última tarefa necessita de ser concretizada para que as análises propriamente ditas possam acontecer: a junção de bases de dados. A junção é necessária pois as informações contidas são complementares, com uma ampla interpretação tornando-se possível somente após o acesso direto aos votos de cada país, o tema do voto e as características da votação na Assembléia Geral.

Para que essa tarefa seja viável, é necessário um identificador que faça com que as informações sejam unidas da maneira correta. Para tal, a variável rcid presente em cada uma das tabelas será o identificador utilizado para que cada linha da tabela final receba as informações referentes à sessão e ao tema em questão. Abaixo, o botão Code possibilita acessar o código para a concatenação das bases de dados.

# agrupando tabelas para conseguir realizar uma análise mais ampla
all_tables <- left_join(un_votes, roll_calls, by = "rcid") %>% 
  left_join(., issues,by = "rcid")
Parte 3: Análises

1. Quais os temas de votação classificados como importante pelo Departamento de Estados dos EUA?

# análise 1: qual tema foi mais associado pelos EUA como voto importante?
most_important <- all_tables %>% 
  filter(importantvote == 1) %>% 
  group_by(issue) %>% 
  count(importantvote, sort = TRUE) %>% 
  drop_na(issue) %>% 
  ungroup()
ggplot(most_important, aes(fct_reorder(issue, n), n, fill = issue)) +
  geom_col() +
  coord_flip() +
  geom_text(aes(label = n), hjust = 1) +
  theme(legend.position = "none", 
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.y = element_text(size = 10, color = "black")) +
  labs(title = "Votos em temas considerados importantes pelo\nDepartamento de Estados dos EUA")

O gráfico acima aponta que questões ligadas a direitos humanos foram as consideradas principais em relação à importância do voto por parte do Departamento de Estado, com 28844 aparições. Na sequência aparecem, respectivamente, conflito palestino, desenvolvimento econômico, controle de armas e desarmamento, armas e material nucleares e colonialismo. É importante para realmente saber a prioriedade dos Estados Unidos, entretanto, considerar que é necessária uma análise relativa para a quantidade com que cada um dos temas foi pautado para votação ao longo dos anos.

# contando vezes que cada tema foi pautado na Assembleia Geral da ONU
pauta_absoluta <- all_tables %>%
  filter(session > 39) %>% 
  drop_na(issue) %>% 
  group_by(issue) %>% 
  count(sort = TRUE) %>% 
  ungroup() %>% 
  rename(absoluto = n)
pauta_absoluta
## # A tibble: 6 x 2
##   issue                                absoluto
##   <chr>                                   <int>
## 1 Arms control and disarmament           129866
## 2 Palestinian conflict                   116822
## 3 Human rights                           116011
## 4 Nuclear weapons and nuclear material    98466
## 5 Colonialism                             72836
## 6 Economic development                    59898
# ajustando tabela com votos importantes dos EUA para comparação
most_important <- most_important %>% 
  transmute(issue, important_EUA = n)
# juntando ambas as tabelas para fim de comparação
EUA_importante_relativo <- pauta_absoluta %>% 
  left_join(most_important, by = "issue")
EUA_importante_relativo <- EUA_importante_relativo %>% 
  mutate(pct_importancia = signif(important_EUA/absoluto)) %>% 
  mutate(pct_importancia = signif(pct_importancia, digits = 3))
ggplot(EUA_importante_relativo, aes(fct_reorder(issue, pct_importancia), pct_importancia, fill = issue)) +
  geom_col() +
  theme(axis.text.x = element_blank(),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        axis.ticks.x = element_blank()) +
  labs(title = "Proporção de votações consideradas importantes\npelos Estados Unidos")

Visando aprofundar a exploração, primeiramente busca-se definir, em termos absolutos, quais os temas que são os mais pautados nas assembleias da ONU. A tabela nos mostra que os três tópicos mais pautados são o controle de armas e desarmamento, o conflito na Palestina e a questão dos direitos humanos. É importante ressaltar que foram utilizados dados somente a partir da sessão 39 da Assembleia Geral, que foi a partir de quando o Departamento de Estado passou a dar a classificação de voto importante para algumas votações.

Na sequência, a procura é por novamente relacionar o quanto os Estados Unidos consideram importante a votação para cada tema, mas agora como uma proporção do total de sessões que houve votação. Nesse caso, direitos humanos continuam na posição de maior importância, mas mudanças de tendência são observadas, como a menor relevância sendo conferida para o tópico de controle de armas e desarmamento.

2. Quais os assuntos mais abordados ao longo dos anos?

# análise 2: quais os assuntos mais abordados ao longo dos anos?
trending_issues <- all_tables %>%
  mutate(year = year(date))
trending_issues <- trending_issues %>% 
  group_by(year, issue) %>% 
  summarise(issue_mentioned = n()) %>% 
  drop_na(issue)
## `summarise()` has grouped output by 'year'. You can override using the `.groups` argument.
ggplot(trending_issues, aes(year, issue_mentioned, group = issue, color = issue)) +
  geom_line() +
  facet_wrap(vars(issue)) +
  theme(legend.position = "none",
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        plot.title = element_text(hjust = 0.5)) +
  labs(title = "Relevância de cada tema nas sessões ao longo dos anos")

Os gráficos do número de votações por cada tema nas assembleias ao longo dos anos mostra uma tendência ascendente ao longo do tempo para todos, com exceção do conflito na Palestina e do colonialismo. Também se faz necessário observar a predominância do tópico de controle de armas e desarmamento no âmbito da ONU, mantendo uma posição de liderança até os dias atuais. Outro aspecto passível de observação é o aumento da importância de temas ligados aos direitos humanos, principalmente a partir da década de 1990.

3. A postura do Brasil em relação a cada tema

# análise 3: postura do brasil em relação a cada tema 
dados_brasil <- all_tables %>% 
  filter(country == "Brazil") %>% 
  group_by(issue) %>% 
  mutate(total_de_votos = n()) %>% 
  ungroup() %>% 
  drop_na(issue)
ggplot(dados_brasil, aes(issue, total_de_votos, fill = vote)) +
  geom_bar(position = "fill", stat = "identity") +
  theme(axis.text.x = element_text(angle = 90, color = "black"),
        axis.title.x = element_blank(),
        axis.title.y = element_blank(),
        plot.title = element_text(hjust = 0.5)) +
  labs(fill = "Voto", title = "Postura do Brasil em relação a cada tema")

O gráfico de barras acima apresenta, de maneira proporcional, a maneira como o Brasil vota nas assembleias da ONU com relação a cada tema. Os dois temas nos quais o país apresenta maior apoio são os do conflito na Palestina e questões ligadas ao desenvolvimento econômico. A postura brasileira de conciliação quanto à sua política externa pode ser vista quando vê-se que abstenções superam votos contrários em todos os temas.