Relació entre variables categòriques

A continuació carregarem els següents paquets, entre ells el paquet unvotes (Voeten 2017), d’on traurem informació sobre sobre les votacions a l’Assemblea General de Nacions Unides (AGNU). Per això haurem de carregar els següents paquets:

#recordeu que els paquets han d'estar prèviament instal·lats 
library(gapminder)
library(dplyr)
library(ggplot2)
library(DescTools)
library(unvotes)
library(stringr)

Taula de contingència

La taula de contingència és la manera de visualitzar la relació entre dues variables categòriques. Si examinem el marc de dades un_votes, veurem que la variable vote conté tres valors: yes, no o abstain. Traurem la categoria abstain de manera que ens quedin només yes i no. Ens preguntarem si Sudan del Sud ha votat diferent que Sudan en matèria de desenvolupament econòmic (ec) a partir de l’AGNU 5117, la primera després de la independència de Sudan del Sud.

sudan_ec_votes <- un_votes %>%
  inner_join(un_roll_call_issues) %>%
  filter(country == c("Sudan", "South Sudan"), rcid >= 5117,
         vote != "abstain", short_name == "ec") %>% 
  select(country, vote) %>% 
  droplevels()

La taula de contingència es crea amb table(). Podem veure com Sudan del Sud ha votat 11 vegades sí i 1 vegada no, mentre que Sudan ha votat 16 vegades sí i 3 no.

table(sudan_ec_votes$vote, sudan_ec_votes$country)
##      
##       South Sudan Sudan
##   yes          11    16
##   no            1     3

Què vol dir això en termes relatius? Per esbrinar-ho hem d’utilitzar la funció prop.table() i arrodonir els resultats percentuals amb round().

round(prop.table(table(sudan_ec_votes$vote, sudan_ec_votes$country), margin = 2) * 100, 2)
##      
##       South Sudan Sudan
##   yes       91.67 84.21
##   no         8.33 15.79

Visualització gràfica

Gràficament, la manera com podem observar les diferències entre dues variables categòriques és amb un diagrama de barres geom_bar().

sudan_ec_votes %>%
  ggplot(aes(x = country, fill = vote)) +
  geom_bar(position = "fill", width = 0.5) + 
  scale_fill_brewer(type = "qual", palette = 3) +
  theme_minimal()

Quantificar

Principalment volem saber dues coses d’aquesta relació:

  • El coeficient d’associació.
  • El test de significació.

El coeficient d’associació ens mesura la força d’una relació, com ara el test de Cramer, que utilitzarem amb la funció CramerV() que es troba al paquet DescTools. Aquests mètodes ens permeten saber com de bé podem saber els valors de la variable dependent si coneixem els valors de la variable dependent.

CramerV(sudan_ec_votes$vote, sudan_ec_votes$country)
## [1] 0.1083352

L’operació ens retorna un coeficient d’associació de Cramer proper a 0.11. Això vol dir que si coneixem els valors de x tenim un 11% de probabilitats d’encertar els valors de y. Certament, no és una probabilitat d’encert gaire alta.

El test de significació ens diu quina probabilitat hi ha que la hipòtesi nul·la sigui certa i l’obtindrem amb el chisq.test().

chisq.test(sudan_ec_votes$vote, sudan_ec_votes$country)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  sudan_ec_votes$vote and sudan_ec_votes$country
## X-squared = 0.0028326, df = 1, p-value = 0.9576

És massa probable que la hipòtesi nul·la sigui certa. El resultat hauria de ser inferior a 0.05 per descartar la hipòtesi nul·la.

Exercici: Fixeu-vos amb els codis següents i genereu les operacions que indiquem a continuació:

  • Una taula de contingència.
  • Una visualització.
  • El coeficient d’associació.
  • El test de significació.

Estats Units: Hi va haver diferència en el vot favorable a l’AGNU entre les administracions Carter i Reagan?

us_un <- un_roll_calls %>% 
  inner_join(un_votes) %>% 
  select(-c(country, descr, short)) %>%
  filter(country_code == "US", vote != "abstain", 
         between(date, as.Date("1977-01-20"),
                 as.Date("1989-01-20"))) %>% 
  mutate(president = if_else(date < as.Date("1980-01-20"),"Carter", "Reagan"))

Israel: Israel vota diferent a l’AGNU quan es tracten o no de temes relacionats amb l’Orient Mitjà?

israel_un <- un_votes %>%
  inner_join(un_roll_call_issues) %>%
  filter(country == "Israel", vote != "abstain") %>%
  mutate(me = if_else(short_name == "me", "Middle East", "Other")) %>%
  select(me, vote) %>%
  droplevels()

Estats Units - USSR: Voten diferent els Estats Units si en el títol de la resolució hi apareix la paraula USSR?

us_ussr_un <- un_roll_calls %>%
  mutate(ussr = str_detect(descr, "USSR")) %>%
  inner_join(un_votes) %>%
  filter(country_code == "US", vote != "abstain") %>%
  select(ussr, vote) %>%
  droplevels()

Referències

Voeten, Erik. 2017. Data and Analyses of Voting in the UN General Assembly.” In Routledge Handbook of International Organization, edited by Bob Reinalda. London: Routledge.
Next