• 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 6): Centralidad de Katz en grafos

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

En entregas anteriores, hemos explorado diversas métricas de centralidad que permiten identificar los nodos más relevantes dentro de una red. En esta ocasión, nos centraremos en la centralidad de Katz, una medida que extiende el concepto de centralidad de autovector al considerar no solo las conexiones directas de un nodo, sino también aquellas indirectas, a través de caminos más largos, ponderados según su distancia.

La centralidad de Katz resulta especialmente útil en redes donde la influencia no se limita únicamente a los vínculos inmediatos, sino que se difunde progresivamente a través de múltiples intermediarios. Este es el caso de estructuras complejas como las redes sociales, los sistemas de transporte o los modelos de propagación de información, donde el impacto de un nodo puede extenderse más allá de su vecindario directo.

A diferencia de la centralidad de grado, que simplemente cuenta el número de conexiones de un nodo, la centralidad de Katz incorpora un factor de atenuación que reduce progresivamente la influencia de los nodos más alejados. Esta característica permite identificar con mayor precisión los nodos verdaderamente influyentes, incluso cuando estos tienen una cantidad similar de enlaces que otros menos relevantes.

En contextos donde la conectividad global es más significativa que las relaciones individuales —como en el análisis de estrategias de marketing viral, la vigilancia epidemiológica o la difusión de ideas en redes sociales— la centralidad de Katz proporciona una herramienta para modelar la dinámica de la influencia dentro del grafo.

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

Interpretación de la centralidad de Katz

La fórmula de la centralidad de Katz se basa en una extensión del concepto de centralidad de autovector, incorporando un término adicional que permite que todos los nodos tengan una centralidad no nula, incluso si no están directamente conectados a nodos altamente influyentes.

Formalmente, la centralidad de Katz para un nodo i se define como: C_{Katz​}(i) = \alpha \sum_{j=1}^{n} A_{ij} x_j + \beta, donde:

  • A_{ij} es la matriz de adyacencia del grafo.
  • \alpha es el factor de atenuación (también llamado parámetro de decaimiento), que debe ser suficientemente pequeño para garantizar la convergencia.
  • \beta es una constante positiva que representa la contribución exógena a la centralidad de cada nodo (puede ser un escalar o un vector).

La elección del parámetro \alpha es crucial: debe ser menor que el inverso del mayor valor propio (autovalor) de la matriz de adyacencia, para garantizar la convergencia de la solución. Es decir, \alpha < 1/\lambda_1 donde \lambda_1 es el mayor autovalor de la matriz de adyacencia.

Esta fórmula puede interpretarse como una serie geométrica de caminos ponderados, donde las contribuciones de los vecinos más lejanos se atenúan progresivamente a medida que aumenta la longitud del camino.

Publicidad


Aplicaciones de la centralidad de Katz

Esta métrica es de especial utilidad cuando la influencia se propaga más allá de los enlaces directos. Algunas de sus aplicaciones más destacadas incluyen:

  • Redes sociales: Identificación de personas con gran capacidad de influencia, incluso si no tienen muchas conexiones directas.
  • Sistemas de recomendación: Medición del impacto potencial de usuarios o productos en redes de comportamiento o preferencias.
  • Redes de transporte: Evaluación de la importancia estructural de estaciones o rutas considerando rutas indirectas.
  • Ciencias biomédicas: Análisis de redes de interacción de proteínas o de propagación de enfermedades.
  • Motores de búsqueda y SEO: Valoración de páginas web en función de enlaces directos e indirectos (con conceptos relacionados como PageRank).
  • Estabilidad financiera: Detección de entidades con impacto sistémico en redes de crédito o flujo de capital.

Implementación de la centralidad de Katz en igraph

En R, la centralidad de Katz se puede calcular utilizando la función alpha_centrality() del paquete igraph. Aunque el nombre pueda inducir a pensar que se trata de otra métrica, esta función implementa efectivamente el cálculo de la centralidad de Katz, al permitir especificar un parámetro de atenuación alpha y un vector exógeno exo (que representa el valor base o contribución externa de cada nodo).

Veamos cómo implementarla con un ejemplo sencillo:

# Cargar el paquete igraph
library(igraph)

# Crear un grafo no dirigido
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 Katz usando alpha_centrality
# alpha: factor de atenuación
# exo: valor exógeno (contribución base), se puede dejar en 1
# tol: tolerancia para la convergencia del algoritmo iterativo
centralidad_katz <- alpha_centrality(g, alpha = 0.1, exo = 1, tol = 1e-7)

# Asignar los valores de centralidad a los nodos
V(g)$katz <- round(centralidad_katz, 3)

# Mostrar los valores de centralidad por nodo
centralidad_katz

Este código devuelve un vector con la centralidad de Katz de cada nodo en la red. Los valores que se obtiene son:

1.280987 1.411458 1.398411 1.422133 1.411458 1.280987

En este punto es importante tener en cuenta el significado de los diferentes parámetros que se ha usado en el cálculo:

  • alpha: controla cuánto se atenúa la influencia de nodos más alejados. Valores pequeños (e.g., 0.1) aseguran que las contribuciones lejanas disminuyen rápidamente. Si es demasiado grande, el cálculo puede no converger.
  • exo: representa una contribución externa constante a cada nodo. Por defecto puede usarse 1.
  • tol: nivel de tolerancia para determinar la convergencia.

Publicidad


Visualización del grafo con valores de Katz

Para interpretar mejor los resultados, podemos representar el grafo y mostrar el valor de centralidad de Katz directamente en cada nodo:

plot(g,
     vertex.label = V(g)$katz,
     vertex.size = 30,
     main = "Centralidad de Katz en un grafo simple")

Lo que produce una gráfica como la que se muestra a continuación en donde se muestra la centralidad de Katz en cada uno de los nodos.

Representación de un grafo simple en el que se muestra la centralidad de Katz
Grafo simple en el que se muestra la centralidad de Katz

Interpretación de los resultados

La centralidad de Katz proporciona una medida de la influencia de cada nodo, tomando en cuenta tanto sus conexiones directas como las indirectas. A continuación, explico cómo interpretar los resultados obtenidos:

  • Nodos con alta centralidad de Katz: Estos nodos no solo tienen conexiones directas con otros nodos importantes, sino que también están bien conectados indirectamente. Es decir, tienen influencia no solo por su cantidad de conexiones, sino por las conexiones de los nodos a los que están conectados.
  • Nodos con baja centralidad de Katz: Estos nodos son menos influyentes en la red, ya que, aunque puedan tener algunos enlaces, su influencia es limitada por su falta de conexión indirecta con otros nodos clave.

En el caso de nuestro ejemplo, la centralidad de Katz tiene en cuenta que los nodos no solo dependen de sus conexiones inmediatas, sino también de los caminos indirectos a través de otros nodos. Si un nodo está conectado a muchos otros nodos clave, su centralidad de Katz será más alta.

Publicidad


Conclusiones

La centralidad de Katz es una métrica para evaluar la importancia de los nodos en una red, considerando tanto las conexiones directas como las indirectas. Su flexibilidad hace que sea aplicable en una amplia gama de problemas, desde la clasificación de páginas web hasta el análisis de redes sociales y sistemas de transporte. Además, permite una interpretación más realista de la influencia en redes complejas.

En la próxima entrega, abordaremos la centralidad de Bonacich, que extiende el concepto de la centralidad de Katz con un enfoque en la dependencia y poder relacional en redes sociales y económicas.

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?

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

  • Cómo calcular el tamaño de la muestra para encuestas publicado el septiembre 9, 2025 | en Ciencia de datos
  • Aplicación web interactiva que muestra un mapa de Madrid con puntos de interés destacados, creado utilizando la biblioteca Folium. Tutorial: Creando un mapa interactivo con Folium en Python publicado el diciembre 13, 2024 | en Python
  • 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
  • Introducción a igraph en R (Parte 9): Centralidad de Prestigio y Autoridad (modelo HITS, Hyperlink-Induced Topic Search) publicado el mayo 14, 2025 | en R
  • 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

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