Intro
Estamos en el tercer día del curso de Introducción a Quarto y estamos practicando cómo hacer un tutorial. Para ello usamos un gist de Julia Silge
Marco teórico
Los países tienen afinidades/intereses etc… que pueden condicionar las votaciones de Eurovisión. El “prestigioso” diario Marca se hace eco aquí de esta hipótesis. En el artículo se cita a @picanumeros
que ha trabajado el tema. Puedes ver su análisis en este hilo de twitter.
En la Wikipedia tenemos un largo artículo sobre Eurovisión lleno de datos, tablas y mapas.
Una imagen de WikiCommons de la 3ª edición del festival en la que aparece Domenico Modugno
Por mucho que me empeñe yo cuesta incorporar ecuaciones a un informe sobre Eurovision, pero aquí tenemos una ecuación inline, \(A(L)=(I_{K}-A_{1}L^{1}- ... -A_{p}L^{p})\) , más abajo una ecuación independiente:
\[y_{t}=A_{1}y_{t-1}+v_{t}\]
Datos
Necesitamos datos. Afortunadamente el proyecto tidytuesday
en su edición del 17 de mayo de 2022 utilizó datos sobre votaciones en Eurovision.
Antes de iniciar el análisis cargamos los paquetes de R que usaremos, solo que no vas a ver el chunk en el output final porque hemos puesto #| include: false
.
Descargamos datos de Eurovision con este chunk de código:
Análisis
La verdad es que con esos datos se podrían hacer algún análisis más, por ejemplo tenemos el orden de aparición: igual el orden en el que cantas influye en las votaciones; pero vamos a replicar el análisis de @juliasilge@fosstodon.org
Vamos a utilizar técnicas de clustering implementadas en el paquete widyr
Supondremos que hay 4 clusters.
Code
#- clustering -----
set.seed(234)
eurovision_clusters <- eurovision_votes %>%
# dimensionality reduction with SVD: https://www.youtube.com/watch?v=UyAfmAZU_WI
widyr::widely_svd(from_country, to_country, points, nv = 24) %>%
#- combination of SVD and k-means: https://www.researchgate.net/publication/284617182_Combination_of_Singular_Value_Decomposition_and_K-means_Clustering_Methods_for_Topic_Detection_on_Twitter
widyr::widely_kmeans(from_country, dimension, value, k = 4)
Resultados
Los resultados parecen good
Tabla
Code
cluster | from_country |
---|---|
1 | Belarus, Belgium, Bosnia & Herzegovina, Bulgaria, Estonia, Greece, Israel, Latvia, Lithuania, Poland, Romania, Russia, San Marino, Slovakia, United Kingdom |
2 | Albania, Armenia, Austria, Azerbaijan, Croatia, Czech Republic, F.Y.R. Macedonia, Finland, France, Georgia, Germany, Luxembourg, Macedonia, Malta, Monaco, Montenegro, North Macedonia, Norway, Portugal, Serbia, Serbia & Montenegro, Slovenia, Spain, Sweden, Switzerland, Yugoslavia |
3 | Andorra, Cyprus, Denmark, Ireland, Italy, Morocco, Netherlands, The Netherlands |
4 | Australia, Hungary, Iceland, Moldova, Turkey, Ukraine |
Mapa
Code
#- mapa -----
map_data("world") %>%
filter(region %in% eurovision_clusters$from_country) %>%
left_join(eurovision_clusters, by = c("region" = "from_country")) %>%
ggplot(aes(long, lat, group = group, fill = cluster)) +
geom_polygon(alpha = 0.8) +
coord_map() +
scale_fill_brewer(palette = "Dark2") +
labs(title = "Which countries vote similarly for Eurovision?",
subtitle = "Clusters identified with SVD and K-means",
caption = "Big thanks to @juliasilge@fosstodon.org") +
pjpv.curso.R.2022::theme_pjp_maps() +
theme(panel.background = ggplot2::element_rect(fill = "white", color = NA)) +
theme(plot.background = ggplot2::element_rect(colour = "white",fill = "white"))