El Análisis de Redes Sociales (SNA) es una disciplina con una base sólida de Matemática Aplicada, fundamentada en la Teoría de Grafos y la Matemática Discreta[@wasserman1994; @newman2010]. En computación, es esencial para modelar y comprender sistemas complejos, desde arquitecturas de software y dependencias hasta patrones de comunicación organizacional.
Esta disciplina está íntimamente ligada al Álgebra Lineal: gran parte de los algoritmos de búsqueda modernos, como el PageRank de Google, se basan en la teoría de autovalores y autovectores.
Figura 6.1: Ilustración del algoritmo PageRank y la centralidad de autovectores en una red asimétrica.
6.1 ¿Por qué SNA?
El objetivo principal es describir las relaciones entre los elementos de una red y extraer conocimiento acerca de las estructuras sociales o técnicas que existen en ella [@barabasi2002]. Como reza el axioma del análisis de redes: “En una red, los actores no intervienen aislados”(por ejemplo: la propensión de una persona a comprar un producto o a contraer un virus no puede explicarse solo por sus atributos individuales, sino por su posición y conexiones dentro del entramado social).
Existen aplicaciones industriales muy destacadas para el análisis y visualización de redes. Herramientas como Gephi (gephi.org) proporcionan un entorno de código abierto ideal para el análisis exploratorio y la manipulación de grafos en tiempo real. Por otro lado, plataformas como Cytoscape (cytoscape.org), originalmente diseñadas para bioinformática, se han convertido en el estándar para visualizar redes complejas en múltiples dominios.
6.2 SNA en el ecosistema R
R es una herramienta extremadamente potente para SNA debido a su capacidad para Reproducible Research, superando a las aplicaciones como como Gephi, Pajek o NodeXL del tipo GUI (Graphical User Interface) cuando se requiere automatización y rigor.
6.2.1 Arquitectura Modular
Para un flujo de trabajo profesional, adoptamos un ecosistema modular donde cada herramienta cumple una función específica dentro del pipeline analítico. En la base se encuentra igraph[@csardi2006], el motor de cálculo computacional cuyo núcleo en C le permite procesar grafos de gran escala con extrema eficiencia. Sobre él, tidygraph[@pedersen2024tidygraph] ofrece una capa de abstracción que permite manipular redes como si fueran tablas ordenadas (tibbles), integrándose perfectamente con dplyr. Finalmente, ggraph[@pedersen2024ggraph] extiende la gramática de gráficos de ggplot2 para la visualización declarativa, desacoplando la estética de los algoritmos de disposición espacial.
Ejemplo: queremos analizar una pequeña red social de oficina. Fíjate cómo pasamos de la potencia de cálculo a la limpieza de datos y terminamos en el dibujo artístico:
# 1. CARGAR LAS LIBRERÍASlibrary(igraph) # El motorlibrary(tidygraph) # El puente (tablas)library(ggraph) # El artista# 2. CREAR LA RED (Responsabilidad de igraph/creación)# Creamos un grafo de "estrella" simple como ejemplored_base <-play_islands(3, 10, 0.5, 1)# 3. MANIPULAR LOS DATOS (Responsabilidad de tidygraph)# Aquí tratamos la red como si fuera un Excel (tibble)red_limpia <-as_tbl_graph(red_base) %>%activate(nodes) %>%mutate(importancia =centrality_degree()) %>%# Cálculo matemáticofilter(importancia >1) # Filtramos nodos aislados# 4. VISUALIZAR (Responsabilidad de ggraph)# Aquí solo nos centramos en que se vea profesionalggraph(red_limpia, layout ="nicely") +geom_edge_link(alpha =0.2, color ="grey") +# Dibujamos líneasgeom_node_point(aes(size = importancia, color = importancia)) +# Dibujamos puntostheme_graph() +# Quitamos ejes y fondo feo de Rlabs(title ="Análisis de Red Profesional",subtitle ="Estructura procesada con la pila igraph-tidygraph-ggraph")
6.3 Fundamentos Teóricos
6.3.1 Definiciones Clave
Un grafo \(G = (V, E)\) es una estructura matemática compuesta por dos conjuntos fundamentales: los Nodos (o vértices, \(V\)), que representan a los actores o entidades del sistema, y las Aristas (o enlaces, \(E\)), que modelan las conexiones o relaciones entre ellos.
La distinción entre grafos dirigidos (asimétricos, como “seguir” en X/Twitter, donde tú sigues a alguien pero esa persona no tiene por qué seguirte a ti) y no dirigidos (simétricos, como “amistad” en Facebook, donde ambas partes deben estar de acuerdo) es fundamental, ya que afecta directamente al cálculo de todas las métricas estructurales.
IGRAPH f596a9d DN-- 5 7 --
+ attr: name (v/c), color (v/c), frame.color (v/c), label.color (v/c),
| label.font (v/n), size (v/n), color (e/c), width (e/n), arrow.size
| (e/n), curved (e/n)
+ edges from f596a9d (vertex names):
[1] Ana ->Carlos Carlos->Ana Elena ->Ana David ->Ana Carlos->David
[6] David ->Elena Maria ->Elena
+ 5/5 vertices, named, from f596a9d:
[1] Ana Carlos Elena David Maria
+ 7/7 edges from f596a9d (vertex names):
[1] Ana ->Carlos Carlos->Ana Elena ->Ana David ->Ana Carlos->David
[6] David ->Elena Maria ->Elena
Figura 6.2: Ejemplo de red dirigida: 5 usuarios de Instagram. Los Nodos (\(V\)) son los usuarios y las Aristas con flechas (\(E\)) representan quién sigue a quién. Nótese la asimetría: David sigue a Elena, pero Elena no sigue a David
6.3.2 Representaciones Computacionales
La elección de la estructura de datos determina qué algoritmos podemos aplicar con éxito. La Matriz de Adyacencia (\(N \times N\)) es óptima para el álgebra lineal y grafos densos, indicando en cada celda \(A_{i,j}\) la existencia de una conexión. Para grafos dispersos o importación de datos, la Lista de Aristas (Edge List) es el estándar, almacenando un vector de pares conectados.
En el flujo de trabajo moderno, preferimos el Paradigma Tidy (tbl_graph), que representa la red como dos tablas vinculadas (nodos y aristas) con sus propios atributos.
6.3.3 Comparativa de Representaciones
Representación
Foco Conceptual
Función R Clave
Ventaja Computacional
Base Teórica
Matriz
Conexiones \(N \times N\)
as_adjacency_matrix()
Óptima para álgebra lineal y estructuras densas.
Operadores lineales.
Edge List
Aristas (\(E \times Attr\))
as_data_frame()
Eficiencia en grafos dispersos.
Formato relacional.
tbl_graph
Nodos + Aristas
as_tbl_graph()
Manipulación declarativa con dplyr.
Tidy Data Paradigm.
Para ilustrar estos conceptos con el grafo de la figura anterior (g_ejemplo), veamos cómo se ven sus diferentes representaciones computacionales:
1. Matriz de Adyacencia
as_adjacency_matrix(g_ejemplo, sparse =FALSE)
Ana Carlos Elena David Maria
Ana 0 1 0 0 0
Carlos 1 0 0 1 0
Elena 1 0 0 0 0
David 1 0 1 0 0
Maria 0 0 1 0 0
2. Lista de Aristas (Edge List)
as_data_frame(g_ejemplo, what ="edges")
from to color width arrow.size curved
1 Ana Carlos gray50 2 0.8 0.1
2 Carlos Ana gray50 2 0.8 0.1
3 Elena Ana gray50 2 0.8 0.1
4 David Ana gray50 2 0.8 0.1
5 Carlos David gray50 2 0.8 0.1
6 David Elena gray50 2 0.8 0.1
7 Maria Elena gray50 2 0.8 0.1
# A tbl_graph: 5 nodes and 7 edges
#
# A directed simple graph with 1 component
#
# Edge Data: 7 × 8 (active)
from to color width arrow.size curved from_name to_name
<int> <int> <chr> <dbl> <dbl> <dbl> <chr> <chr>
1 1 2 gray50 2 0.8 0.1 Ana Carlos
2 2 1 gray50 2 0.8 0.1 Carlos Ana
3 3 1 gray50 2 0.8 0.1 Elena Ana
4 4 1 gray50 2 0.8 0.1 David Ana
5 2 4 gray50 2 0.8 0.1 Carlos David
6 4 3 gray50 2 0.8 0.1 David Elena
7 5 3 gray50 2 0.8 0.1 Maria Elena
#
# Node Data: 5 × 6
name color frame.color label.color label.font size
<chr> <chr> <chr> <chr> <dbl> <dbl>
1 Ana lightblue white black 2 35
2 Carlos lightblue white black 2 35
3 Elena lightblue white black 2 35
# ℹ 2 more rows
6.4 Arquitectura de Paquetes R para SNA: igraph, tidygraph y ggraph
Figura 6.3: La Revolución del Análisis de Redes en R: Ecosistema 2025-2026
El análisis de redes en R se basa en un diseño modular que separa las responsabilidades algorítmicas, de manipulación de datos y de visualización, lo que se considera una práctica de ingeniería de software robusta.
6.4.1 igraph: El Motor de Alto Rendimiento
igraph[@csardi2006] es la capa fundamental de cálculo algorítmico, o backend. Es una biblioteca rápida y de código abierto cuyo núcleo está escrito en C. Esta implementación en C es la razón principal de su alta eficiencia y rendimiento, permitiendo la ejecución de algoritmos complejos de manera optimizada, lo que es vital para el análisis de redes muy grandes.
igraph ofrece un conjunto exhaustivo de funciones de bajo nivel, desde la creación de grafos (e.g., make_graph()) hasta el análisis estructural (dfs, decompose). No obstante, la carga de igraph en R puede introducir conflictos al enmascarar objetos de otros paquetes, como union de base:: o decompose y spectrum de stats::.
6.4.2 tidygraph: La Abstracción Tidy para Redes
A pesar del poder de igraph, la naturaleza compleja de sus objetos de red hacía que su manipulación fuera laboriosa dentro del ecosistema Tidyverse de R. El paquete tidygraph[@pedersen2024tidygraph], desarrollado por Thomas Lin Pedersen, aborda este desafío.
La solución técnica que propone tidygraph es la estructura tbl_graph, una abstracción que representa la red no como un objeto monolítico, sino como dos tablas ordenadas (tibbles): una para los nodos y sus atributos, y otra para las aristas y sus atributos. Esto permite la manipulación de la red utilizando los verbos familiares del paquete dplyr (e.g., mutate, filter), facilitando la curva de aprendizaje y aumentando la legibilidad del código.
La sinergia entre los dos paquetes se logra mediante la función as_tbl_graph(). Esta función transforma el objeto igraph complejo, que es el resultado de las operaciones de alto rendimiento en C, en un objeto tbl_graph manipulable por el Tidyverse. Esta conversión representa la transición del paradigma, permitiendo al usuario heredar la velocidad del motor de igraph mientras trabaja con la sintaxis predictiva de dplyr. tidygraph actúa como una capa de interfaz y manipulación de datos (middleware).
6.4.3 ggraph: Visualización Declarativa de Grafos
El tercer componente de esta arquitectura modular es ggraph, el paquete de visualización. ggraph extiende la “Gramática de Gráficos” de ggplot2 al dominio de las redes. La visualización de redes se estructura en tres componentes esenciales: Nodos, Aristas y Layout (el algoritmo que determina la posición espacial de los nodos).
Dado que ggraph está construido sobre tidygraph como su estructura de datos central, existe una compatibilidad nativa y profunda. Esto significa que cualquier clase de red que pueda ser convertida a tbl_graph mediante un método as_tbl_graph() será soportada automáticamente por ggraph. Esta arquitectura modular que separa el cálculo (igraph), la manipulación de datos (tidygraph) y la presentación (ggraph) es un patrón de diseño que garantiza la eficiencia, la mantenibilidad y la reproducibilidad del código.
6.5 Glosario de Conceptos Clave
Antes de entrar en los capítulos técnicos, consolidamos la terminología fundamental que encontrarás en todos los recursos y artículos del área:
Concepto
Definición técnica
Función en R
Nodos / Vértices
Entidades del sistema (personas, servidores, documentos)
V(g) en igraph; tabla nodes en tidygraph
Aristas / Arcos
Relaciones entre entidades; pueden tener peso y dirección
E(g) en igraph; tabla edges en tidygraph
Medidas de centralidad
Cuantifican la importancia de un nodo: degree, betweenness, closeness, PageRank
centrality_*() en tidygraph
Detección de comunidades
Partición de la red en grupos densamente interconectados
group_louvain(), group_infomap()
Visualización de redes
Representación espacial de nodos y aristas según un algoritmo de layout
ggraph() + geom_node_* + geom_edge_*
Redes egocéntricas
Subgrafo formado por un nodo ego y sus vecinos directos (alters)
make_ego_graph() en igraph
6.6 Recursos y Lecturas Adicionales
Los siguientes recursos externos son útiles para complementar los contenidos de este bloque, ordenados de menor a mayor especialización:
6.6.1 Nivel introductorio
Documentación oficial de igraph: igraph.org — referencia completa de funciones, tutoriales y ejemplos. Es el punto de partida indispensable para cualquier análisis de redes en R [@csardi2006].
GeeksforGeeks — SNA en R: artículo que ofrece una visión general de los conceptos básicos de SNA y su implementación práctica en R, ideal como primera toma de contacto.
ResearchGate — SNA Overview: revisión académica que sitúa el SNA en su contexto disciplinar y describe las herramientas de R disponibles [@wasserman1994].
6.6.2 Nivel práctico
R-bloggers — SNA en R: demostración práctica paso a paso que cubre visualización y medidas de centralidad en R, con código reproducible. Útil para consolidar los conceptos de este capítulo.
Documentación de tidygraph: tidygraph.data-imaginist.com — guía de referencia del paradigma tidy para redes [@pedersen2024tidygraph].
Documentación de ggraph: ggraph.data-imaginist.com — galería de layouts y geometrías disponibles [@pedersen2024ggraph].
6.6.3 Nivel especializado
Analytics Vidhya — Ego Networks en R: introducción específica a las redes egocéntricas y cómo crearlas y analizarlas en R con igraph. Excelente complemento a la sección de Ego Networks del capítulo de Métricas.
6.6.4 Libros de referencia
Estos libros ofrecen distintos niveles de profundidad y enfoques complementarios:
Libro
Autores
Enfoque
Nivel
R for Data Science[@wickham2017r4ds]
Wickham & Grolemund
Fundamentos de R y tidyverse; base para usar tidygraph
Introductorio
Social Network Analysis for Startups[@krut2013sna]
Tsvetovat & Kouznetsov
SNA práctico con aplicaciones de negocio: recolección, análisis y visualización
Intermedio
A User’s Guide to Network Analysis in R[@luke2015networkR]
Luke
Manual práctico con igraph — centralidad, comunidades y ejemplos reales
Intermedio
Statistical Analysis of Network Data with R[@kolaczyk2020statistical]
Kolaczyk & Csárdi
Enfoque estadístico avanzado: ERGMs, modelos de grafos, redes a gran escala
Avanzado
Networks: An Introduction[@newman2010]
Newman
Teoría de grafos, escalas libres, Small-World, modelos probabilísticos
Avanzado
Nota💡 Recomendación de estudio
Si es tu primer contacto con SNA, empieza con R for Data Science para asentar las bases de R/tidyverse, luego pasa al libro de Luke para la práctica con igraph, y finalmente a Newman para la teoría. El material de Analytics Vidhya sobre Ego Networks es especialmente relevante para el capítulo de métricas avanzadas.