R

Introducción a igraph en R (Parte 5): Centralidad de autovector (Eigenvector Centrality) en Grafos

En las entradas anteriores, exploramos diversas medidas de centralidad, como la centralidad de grado, la centralidad de intermediación y la centralidad de cercanía. Esta semana nos enfocaremos en una métrica fundamental dentro del análisis de redes: la centralidad de autovector (eigenvector centrality).

Esta medida extiende la idea de la centralidad de grado, teniendo en cuenta no sólo el número de conexiones de un nodo, sino también la importancia de los nodos a los que está conectado. Esto la convierte en una métrica fundamental para identificar los nodos más influyentes dentro de una red y es especialmente útil en aplicaciones donde la influencia o la reputación de un nodo dependen de su contexto en la red. Además, esta métrica es ampliamente utilizada en disciplinas como las ciencias sociales, la biología, la informática y la economía, donde la estructura de la red puede influir en los resultados y las interacciones entre los nodos.

Concepto y relación con la importancia de un nodo

La centralidad de autovector asigna un puntaje a cada nodo basado en la importancia de sus vecinos. Matemáticamente, se define como la solución al siguiente sistema de ecuaciones: C_a​(i) = \frac{1}{\lambda} \sum_{j \in N(i)} A_{ij} x_j, donde:

  • x_i es la centralidad del nodo i.
  • A_{ij} es el valor de la matriz de adyacencia en la posición (i, j), indicando si hay una conexión entre los nodos i y j.
  • \lambda es el mayor autovalor de la matriz de adyacencia.

La idea clave es que un nodo es importante si está conectado a otros nodos importantes. Esta propiedad hace que la centralidad de autovector sea útil en aplicaciones como:

  • Redes sociales: Para identificar usuarios influyentes y líderes de opinión.
  • Redes de transporte: Para detectar las estaciones críticas dentro de la red de infraestructuras y evaluar su impacto en la eficiencia del sistema.
  • Ciencias biomédicas: Para analizar interacciones de proteínas en redes biológicas y su impacto en enfermedades complejas.
  • Finanzas: Para evaluar la importancia de instituciones en sistemas financieros interconectados y detectar nodos clave en la propagación de crisis financieras.
  • Redes eléctricas y de telecomunicaciones: Para determinar nodos estratégicos en la distribución de recursos y mejorar la eficiencia de la red.

Conexión con el algoritmo PageRank

Una de las aplicaciones más famosas de la centralidad de autovector es el algoritmo PageRank, desarrollado por Google para clasificar las páginas web. El PageRank es una variante de la centralidad de autovector, con la diferencia de que introduce un factor de amortiguamiento para evitar problemas en grafos desconectados.

La idea detrás de PageRank es similar: una página web es importante si es enlazada por otras páginas importantes. Este concepto se extiende a redes sociales, donde los usuarios con más conexiones a otros usuarios influyentes tienen mayor autoridad en la comunidad. También se aplica en sistemas de recomendación y en análisis de influencia política en redes de comunicación.

Matemáticamente, PageRank se calcula iterativamente de la siguiente manera: PR(i) = (1-d) + d \sum_{j \in N(i)} \frac{PR(j)}{L(j)}, donde:

  • PR(i) es el PageRank del nodo i.
  • d es el factor de amortiguamiento (por defecto 0.85).
  • N(i) representa los nodos que enlazan a i.
  • L(j) es el número de enlaces salientes del nodo j.

Este método ha sido clave en el éxito de Google y en muchos otros motores de búsqueda y redes sociales, permitiendo una clasificación más efectiva de la relevancia de los nodos dentro de la red.

Cálculo con eigen_centrality() en igraph

La centralidad de autovector se puede calcular fácilmente en igraph utilizando la función eigen_centrality(). Para el PageRank se puede usar la función page_rank().Veamos un ejemplo práctico en R:

library(igraph)

# Crear un grafo simple
g <- graph(edges = c(1,2, 1,3, 2,4, 2,5, 3,6, 5,6, 4,5, 3,4), directed = FALSE)

# Calcular la centralidad de autovector
centralidad_eigen <- eigen_centrality(g)

# Mostrar los valores de centralidad
centralidad_eigen$vector

# Calcular PageRank
centralidad_page_rank <- page_rank(g)

# Mostrar los valores del PageRank
centralidad_page_rank$vector

Este código devuelve un vector con los valores de centralidad de autovector de cada nodo y otro con el PageRank. En concreto, la centralidad de autovector es:

0.6535266 0.9497121 0.8416578 1.0000000 0.9497121 0.6535266

Mientras que el PageRank es:

0.1304151 0.1844428 0.1876104 0.1826739 0.1844428 0.1304151

Ahora, podemos visualizar el grafo escalando el tamaño de los nodos según su importancia en base a la centralidad de autovector:

# Ajustar tamaño de los nodos según su centralidad
V(g)$size <- centralidad_eigen$vector * 20

# Graficar el grafo
plot(g, vertex.label.cex=1.2, edge.width=2, main="Centralidad de Autovector")
Grafo en el que tamaño de los nodos está escalado según su centralidad de autovector.

Caso práctico: Red de colaboración académica

Imaginemos una red de colaboración académica donde los nodos representan investigadores y las aristas indican coautorías en publicaciones científicas. Queremos identificar a los investigadores más influyentes en función de su red de colaboraciones.

# Crear un grafo de colaboración
colaboracion <- graph(edges = c("Alice","Bob", "Alice","Charlie", "Bob","David", "Bob","Eve", "Charlie","Fay", "Eve","Fay", "David","Eve", "Charlie","David"), directed = FALSE)

# Calcular la centralidad de autovector
centralidad_eigen_colab <- eigen_centrality(colaboracion)

# Visualizar el grafo
V(colaboracion)$size <- centralidad_eigen_colab$vector * 50
plot(colaboracion, vertex.label.cex=1.2, edge.width=2, main="Red de Colaboración Académica")
Grafo con el ejemplo de la red de colaboración académica donde los nodos representan investigadores y las conexiones indican colaboraciones directas.

Conclusiónes

La centralidad de autovector es una medida avanzada que permite identificar nodos influyentes en redes sociales, académicas y de información. Su conexión con el algoritmo PageRank la hace fundamental en aplicaciones como la clasificación de páginas web y la detección de líderes en redes sociales.

En esta entrega, hemos explorado su definición, su relación con otras medidas de centralidad, su implementación en igraph y un caso práctico de aplicación. Además, hemos visto cómo se vincula con el PageRank y su importancia en distintos dominios.

En la próxima publicación, abordaremos otra métrica clave: el centralidad de Katz, que expande la centralidad de autovector considerando el impacto de conexiones indirectas.

Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia

En casi cualquier análisis estadístico —ya sea en medicina, psicología, economía o ciencia de datos—…

3 días ago

¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia

El MSCI World Index suele presentarse como “la ventana al mundo” para quienes invierten en…

5 días ago

Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo

En el mundo del análisis de datos solemos escuchar una idea poderosa: cuantos más datos,…

1 semana ago

Error npm ERR! code EACCES al instalar paquetes en Node.js: Cómo solucionarlo paso a paso

¿Te has encontrado con este error al intentar instalar paquetes con npm? npm ERR! code…

2 semanas ago

Curiosidad: La Paradoja de Simpson, o por qué no siempre debes fiarte de los promedios

En ciencia de datos y estadística, los promedios y porcentajes son herramientas fundamentales para resumir…

2 semanas ago

Copias de seguridad automáticas en SQL Server con rotación de archivos

Las bases de datos son el corazón de casi cualquier sistema de información moderno. Ya…

3 semanas ago

This website uses cookies.