Análisis de Redes Sociales en R y Gephi: Profundizando en Twitter

Publicado: 2022-03-11

El análisis de redes sociales nació en 1934 cuando Jacob Levy Moreno creó los sociogramas, abstracciones de las interacciones sociales. Específicamente, un sociograma es un gráfico en el que cada nodo representa a una persona y los bordes representan interacciones entre ellos. Moreno utilizó sociogramas para estudiar el comportamiento de pequeños grupos de personas.

¿Por qué pequeño? Porque en la era en la que trabajaba, era difícil obtener información granular sobre una gran cantidad de interacciones personales. Esto cambió con la llegada de las redes sociales en línea como Twitter. Hoy en día, cualquiera puede descargar voluminosos datos de Twitter de forma gratuita, lo que abre la puerta a análisis interesantes, llevándonos a nuevos conocimientos sobre cómo nos comportamos y el impacto de diversos comportamientos en la sociedad.

En esta primera parte de nuestra serie de análisis de redes sociales, demostramos cómo realizar algunos de estos análisis utilizando el lenguaje R para obtener y preprocesar los datos, y Gephi para producir visualizaciones asombrosas. Gephi es una aplicación de código abierto especialmente diseñada para visualizar cualquier tipo de red. Permite a los usuarios configurar fácilmente las visualizaciones a través de varios criterios y propiedades.

Descarga de datos de Twitter para análisis de redes sociales en R

Si no tiene una cuenta de desarrollador de Twitter, cree una y solicite acceso esencial. Luego, para descargar datos de Twitter, cree una aplicación en el Portal para desarrolladores de Twitter. A continuación, seleccione su aplicación en la sección Proyectos y aplicaciones y vaya a la pestaña Claves y tokens. Allí tendrás que generar tus credenciales. Estos se utilizarán para acceder a la API de Twitter y descargar los datos.

Una vez que haya generado sus credenciales, puede comenzar el análisis. Usaremos tres bibliotecas R:

  1. igraph , para crear el gráfico de interacción.
  2. tidyverse , para preparar los datos.
  3. rtweet , para comunicarse con la API de desarrollo de Twitter.

Puede instalar estas bibliotecas con la función install.packages() . Para nuestros propósitos, asumiremos que ha instalado R y RStudio, y que tiene una comprensión básica de ellos.

En nuestra demostración, analizaremos la acalorada discusión en línea sobre el famoso futbolista argentino Lionel Messi durante su primera semana con el Paris Saint-Germain (PSG) Football Club. Es importante tener en cuenta que con la API gratuita de Twitter puede descargar tweets de solo siete días antes de la fecha actual. No podrá descargar los mismos datos que citamos, pero podrá descargar discusiones actuales.

Comencemos con la descarga. Primero, cargaremos las bibliotecas, luego crearemos un token de autorización usando las credenciales y finalmente estableceremos los criterios de descarga.

Este bloque de código detalla cómo implementar los tres pasos:

 ## Load libraries library(rtweet) library(igraph) library(tidyverse) ## Create Twitter token token <- create_token( app = <YOUR_APP_NAME>, consumer_key = <YOUR_CONSUMER_KEY>, consumer_secret = <YOUR_CONSUMER_SECRET>, access_token =<YOUR_ACCESS_TOKEN>, access_secret = <YOUR_ACCESS_SECRET>) ## Download Tweets tweets.df <- search_tweets("messi", n=250000,token=token,retryonratelimit = TRUE,until="2021-08-13") ## Save R context image save.image("filename.RData")

Nota: Reemplace todas las etiquetas entre <> con la información que creó en el paso de credenciales anterior.

Con este código, consultamos la API de Twitter para todos los tweets (hasta 250 000) que contenían la palabra "messi" y se publicaron entre el 8 y el 13 de agosto de 2021. Establecimos un límite de 250 000 tweets porque Twitter requiere un valor de la cantidad y porque el número es lo suficientemente grande como para permitir un análisis interesante.

La tasa de descarga de Twitter es de 45 000 tweets por 15 minutos, por lo que la descarga de 250 000 tweets tomó más de una hora.

Finalmente, guardamos todas las variables de contexto en un archivo RData para poder restaurarlo si cerramos RStudio o apagamos la máquina.

Crear el gráfico de interacción

Una vez finalizada la descarga, tendremos los tweets dentro del tweets.df tweets.df. Esta matriz de marco de datos contiene una fila por tweet y una columna por campo de tweet. Primero, lo usaremos para crear el gráfico de interacción en el que cada nodo representa a un usuario y los bordes representan las interacciones (retweets o menciones) entre ellos. Con tidyverse e igraph, podemos crear este gráfico rápidamente y en una sola instrucción:

 ## Create graph filter(tweets.df, retweet_count > 0) %>% select(screen_name, mentions_screen_name) %>% unnest(mentions_screen_name) %>% filter(!is.na(mentions_screen_name)) %>% graph_from_data_frame() -> net

Después de ejecutar esta línea, tenemos un gráfico en la variable net que está listo para el análisis. Por ejemplo, para ver cuántos nodos y aristas están presentes:

 summary(net) # IGRAPH fd955b4 DN-- 138963 217362 --

Nuestros datos de muestra arrojan 138 000 nodos y 217 000 aristas. Ese es un gráfico grande. Podríamos generar visualizaciones a través de R si quisiéramos, pero según mi experiencia, tardan demasiado en calcularse y no son tan atractivas visualmente como las visualizaciones de Gephi. Por lo tanto, procedamos con Gephi.

Visualizando el gráfico con Gephi

Primero necesitaremos crear un archivo que Gephi pueda leer. Esto es fácil, ya que podemos generar un archivo .gml usando la función write_graph :

 write_graph(simplify(net), "messi_network.gml", format = "gml")

Ahora, abra Gephi, vaya a "Abrir archivo gráfico", busque el archivo messi_network.gml y ábralo. Lanzará una ventana que resume la información del gráfico. Seleccione Aceptar. Esto aparecerá:

Una captura de pantalla que muestra la interfaz de usuario de Gephi desde la cual los usuarios pueden abrir un nuevo archivo gráfico.
Abriendo un nuevo archivo gráfico en Gephi

No hace falta decir que esto no es muy informativo. Eso es porque aún no hemos aplicado un diseño.

Diseño de red

En un gráfico con miles de nodos y aristas, el posicionamiento de los nodos en el gráfico es vital. Este es el propósito de los diseños. Colocan los nodos en posiciones establecidas por criterios definidos.

Para nuestro tutorial de análisis de redes sociales, utilizaremos el diseño ForceAtlas2, que es una opción estándar para este tipo de análisis. Posiciona los nodos simulando fuerzas físicas de atracción y repulsión entre ellos. Si dos nodos están conectados, estarán más cerca el uno del otro; si no están conectados, estarán más separados. Este diseño produce un gráfico informativo en términos de comunidades, porque los usuarios que pertenecen a la misma comunidad se agruparán mientras que los usuarios de diferentes comunidades estarán en diferentes regiones.

Para aplicar este diseño a nuestro caso, navegamos a la ventana Diseño (en la esquina inferior izquierda), seleccionamos ForceAltas 2 y hacemos clic en Ejecutar. Cuando hagas esto, verás que los nodos comienzan a moverse y forman muchas "nubes". Después de unos segundos, tendrá un patrón muy estable y podrá hacer clic en Detener. Tenga en cuenta que puede llevar mucho tiempo detenerse automáticamente.

Como se trata de un algoritmo estocástico, tendrá resultados ligeramente diferentes en cada ejecución. Su salida debe ser similar a esto:

Una imagen que muestra la salida del diseño ForceAtlas2 en blanco y negro, lo que da como resultado un gráfico sin colores ni sombras de gris.
Salida monocromática de Gephi usando el diseño ForceAtlas2

El gráfico empieza a parecer atractivo. Ahora vamos a agregarle un poco de color.

Detección de comunidad

Podemos colorear los nodos usando varios criterios; el enfoque más estándar es por comunidad. Si tenemos cuatro comunidades en nuestro gráfico, tendremos cuatro colores. A través del color, es más fácil comprender cómo interactúan los grupos, dados sus datos.

Para colorear los nodos, primero tenemos que identificar las comunidades. En Gephi, haga clic en el botón Modularidad en la ventana debajo de la pestaña Estadísticas; este botón aplica el popular algoritmo de clúster de gráficos de Louvain, uno de los algoritmos más rápidos disponibles, considerado de última generación debido a su alto rendimiento. En la ventana que aparece, haga clic en Aceptar. Aparecerá otra ventana, que contiene un diagrama de dispersión de las comunidades distribuidas por tamaño. Ahora tenemos un nuevo atributo en cada nodo denominado Modularity Class, que contiene la comunidad propiedad del usuario.

Habiendo completado los pasos anteriores, ahora podemos colorear el gráfico por grupos. Para hacerlo, en la pestaña Apariencia, haga clic en Aplicar.

Una captura de pantalla que muestra la pestaña "Apariencia" en un espacio de trabajo de Gephi. La imagen muestra una gama de colores utilizados en el gráfico.
Usando la apariencia de Gephi para agregar color

Aquí podemos ver el tamaño (en términos de porcentaje de usuarios) de cada comunidad. En nuestro caso, las comunidades principales (violeta y verde) concentran el 11,34% y el 9,29% de la población total, respectivamente.

Usando el diseño y la paleta actuales, el gráfico se verá así:

Una imagen de un gráfico coloreado. La forma es idéntica al gráfico monocromático anterior, pero los colores ayudan a identificar comunidades específicas, con la comunidad más grande (violeta) en la esquina inferior izquierda y la segunda comunidad más grande (verde) en la esquina superior derecha. Entre ellos, las comunidades más pequeñas están representadas por otros colores, incluidos cian, naranja, rojo y negro.
Un gráfico de colores nos permite identificar fácilmente las diferentes comunidades.

Detección de influencers en Twitter

Finalmente, nos gustaría identificar a los principales participantes en la discusión para entender, por ejemplo, quién pertenece a qué comunidad. Podemos medir la influencia de cada usuario por diferentes propiedades; uno de ellos es por su grado . Esto indica cuántos usuarios los han retuiteado o mencionado.

Para resaltar a los usuarios con muchas interacciones, cambiaremos el tamaño de los nodos usando la propiedad Grado:

Una captura de pantalla que muestra cómo cambiar la propiedad Grado en Gephi, en la misma pestaña Apariencia mencionada en las figuras anteriores. El tamaño mínimo se establece en 0,1 y el tamaño máximo se establece en 10.
Cambiando la propiedad de Grado en Gephi

El gráfico ahora mostrará a los influencers como nodos representados por círculos más grandes:

Una imagen de un gráfico coloreado similar al anterior pero con la adición de círculos que representan los nodos de influencia. Cada grupo de colores presenta un puñado de tales nodos.
Salida en color que muestra a los influencers como nodos más grandes

Ahora que hemos identificado a los usuarios con un alto número de interacciones, podemos revelar sus nombres. Para hacer eso, haga clic en la flecha negra en la barra en la parte inferior de la pantalla:

Una captura de pantalla del espacio de trabajo de Gephi, que muestra la flecha negra en la esquina inferior derecha de la interfaz de usuario.
Acceso a la configuración de etiquetas en Gephi

Luego, haga clic en Etiquetas y configuración. En la ventana que aparece, seleccione la casilla de verificación Nombre y haga clic en Aceptar. A continuación, haga clic en la casilla de verificación Nodos. Aparecerán pequeñas líneas negras en el gráfico. Estos son los nombres de todos los usuarios. Pero no queremos verlos todos , solo los más importantes.

Para definirlos, cambie su tamaño por grado de nodo usando la misma ventana que usamos para el tamaño de nodo. Aumentamos el tamaño mínimo de 0,1 a 10 y aumentamos el tamaño máximo de 10 a 300.

Con la adición de nombres, el gráfico se vuelve significativamente más informativo, ya que muestra cómo las diferentes comunidades interactúan con personas influyentes:

Una imagen de un gráfico en color con círculos que representan a los usuarios importantes, con los nombres de los usuarios más importantes superpuestos en la parte superior. El tamaño del texto corresponde al tamaño (influencia) de cada usuario, siendo algunos de los más grandes ESPNFC en púrpura, TrollFootball en gris y PSG_inside en rosa.
Agregar nombres nos permite ver cómo las diferentes comunidades interactúan con personas influyentes.

Ahora entendemos mucho más sobre esta discusión particular de Twitter. Por ejemplo, la inclusión de la comunidad verde de cuentas como mundodabola y neymarjrdepre revelan su locus brasileño. Las comunidades naranja y gris contienen usuarios de habla hispana como sc_espn e InvictosSomos. En particular, las comunidades grises y negras parecen ser de habla hispana, ya que tienen usuarios como IbaiOut, LaScaloneta y el popular streamer IbaiLlanos. Finalmente, las comunidades violeta y roja parecen ser de habla inglesa, ya que cuentan con cuentas como ESPNFC y brfootball.

Ahora podemos entender mejor por qué estos usuarios comprenden diferentes comunidades en términos de sociología y no solo de computación gráfica: ¡hablan diferentes idiomas! Todos están tuiteando sobre Messi y su nuevo equipo, pero tiene sentido que los hispanohablantes interactúen más con otros hispanohablantes que con los portugueses o ingleses. Además, también podemos entender que si bien las comunidades gris y naranja hablan español, lo hacen desde diferentes perspectivas. La comunidad gris utiliza un enfoque más humorístico que explica por qué interactúan más entre ellos que con las cuentas oficiales de fútbol o de los periodistas.

Desbloqueando el potencial de R y Gephi

Si no hubiéramos usado Gephi para graficar, podríamos haber usado la biblioteca Ggplot de R. Sin embargo, desde mi punto de vista, esa biblioteca es mucho más limitada en términos de gráficos de red. No es dinámico como Gephi, es más difícil de configurar y la pantalla resultante es menos clara.

En el resto de la serie, llevaremos este análisis más allá. Realizaremos algunos análisis de texto de modelado de temas para ver cuánto hablan los usuarios y qué temas les interesan; realizaremos un análisis de sentimientos para ver si están siendo positivos o negativos; y haremos un análisis gráfico más profundo para analizar las personas más influyentes de Twitter.

Puede usar estos pasos para analizar nuevas discusiones de Twitter y ver qué información puede obtener de sus gráficos de trama.