• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Encuestas: Tamaño de Muestra
    • Lotería: Probabilidad de Ganar
    • Reparto de Escaños (D’Hondt)
    • Tres en Raya con IA
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • Excel
  • Matlab

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

abril 9, 2025 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 5 minutos

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:

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

  • 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.

Publicidad


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")
Gráfico de un grafo donde el tamaño de los nodos está escalado según su centralidad de autovector. Los nodos más grandes indican mayor importancia dentro de la red, al estar conectados con otros nodos influyentes. Las aristas representan las conexiones entre nodos, con un grosor uniforme para destacar la estructura del grafo.
Grafo en el que tamaño de los nodos está escalado según su centralidad de autovector.

Publicidad


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")
Gráfico de una red de colaboración académica donde los nodos representan investigadores y las conexiones indican colaboraciones directas. El tamaño de cada nodo refleja su centralidad de autovector, resaltando los investigadores con mayor influencia dentro de la red. Los nodos más grandes están conectados con múltiples colaboradores clave, formando un núcleo central en la red.
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?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicidad


Publicaciones relacionadas

  • Curiosidad: La maldición de la dimensionalidad, o por qué añadir más datos puede empeorar tu modelo
  • ¿Está concentrado el MSCI World? Un análisis con Gini, Lorenz y leyes de potencia
  • Curiosidad: ¿Por qué usamos p < 0.05? Un umbral que cambió la historia de la ciencia
  • Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)
  • La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento
  • Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows
  • Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte
  • Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)
  • Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

Publicado en: R Etiquetado como: Análisis de redes, igraph

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

octubre 23, 2025 Por Daniel Rodríguez

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

octubre 21, 2025 Por Daniel Rodríguez

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

octubre 16, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Entendiendo la validación cruzada: Selección de la profundidad óptima en un árbol de decisión publicado el septiembre 13, 2024 | en Ciencia de datos
  • Buscar en Excel con dos o más criterios publicado el septiembre 7, 2022 | en Herramientas
  • Aprovecha un 40% de descuento en Coursera Plus para impulsar tus habilidades en Ciencia de Datos e Inteligencia Artificial publicado el noviembre 9, 2024 | en Noticias, Reseñas
  • Diferencias entre CPU, GPU, TPU y NPU publicado el abril 19, 2023 | en Herramientas
  • La Lotería: una perspectiva estadística publicado el diciembre 22, 2023 | en Opinión

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • CARLOS ARETURO BELLO CACERES en Justicio: La herramienta gratuita de IA para consultas legales
  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto