Esta plática puede dar respuesta a las siguientes preguntas ¿qué tipo de problemas podemos atacar con ciencia de redes?, ¿qué limitaciones podemos encontrar?
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Ciencia de redes con R: Una introducción al universo de paquetes para ciencia de redes
1. Una introducción al universo de
paquetes para Ciencia de Redes en R
Carlos E. López Natarén, Instituto de Física, UNAM
natorro@fisica.unam.mx
https://sg.com.mx/dataday
#DataDayMx
2. Estructura de la plática
• ¿Qué es la ciencia de redes?
• Datos.
• El universo de paquetes para redes en R:
• network
• igraph
• tidygraph
• ggraph
• visNetwork
• networkD3
• qgraph
3. ¿Qué es la ciencia de redes?
• La ciencia de redes es un campo del conocimiento que se
encarga de estudiar redes complejas tales como las redes de
telecomunicación, eléctrica, de computadoras, biológicas,
cognitivas y semánticas, redes sociales, etc.
• Hoy en día muchos campos se
consideran padres de la
disciplina. Las matemáticas le
atribuyen el desarrollo teórico a
través de la teoría de gráficas,
la sociología se atribuye el
estudio de las redes sociales.
5. ¿Qué es la ciencia de redes?
• La física le atribuye el concepto de universalidad y el desarrollo
de herramientas como la mecánica estadística para estudiarlas,
la biología ha proporcionado el mapeo de redes celulares, las
ciencias de la computación ha ofrecido la perspectiva
algorítmica.
• Todas estas aportaciones han
dado lugar a esta “nueva”
disciplina que nos ayuda a
entender y tratar de explicar
fenómenos que pueden ser
modelados con el tipo de
modelos que emanan de ahí.
6. ¿Qué es la ciencia de redes?
• La teoría de gráficas o grafos nos da una abstracción matemática para
poder modelar cualquier relaciones entre pares de objetos.
• En este contexto, una gráfica (o una red en el contexto de ciencia de
redes) está hecho de vértices (a veces llamados nodos o puntos) que
están conectados por aristas. Si en la relación importa la dirección, se dice
que el grafo o red es dirigida. El problema de los siete puentes de
Köninsberg es el primer artículo que habla de redes.
7. ¿Qué es la ciencia de redes?
• Propiedades de las redes:
• Tamaño
• Densidad y densidad planar
• Grado y grado promedio
• Camino más corto promedio
• Diámetro
• Coeficiente de cumulación
• Conectividad
• Centralidad
• Influencia
9. Datos
En el instituto de física, contamos con un sistema de información
curricular, SALVA, desarrollado desde hace al menos 10 años, es
un sistema donde los investigadores del instituto capturan su
información nueva cada año. Esta sirve para realizar los reportes
de la institución ante los organismos que la financían y apoyan,
CTIC, Conacyt, UNAM, etc.
10. Datos
Uno de los campos de información que los investigadores y
demás personal académico tienen que proporcionar es el de la
producción académica, en particular la producción de artículos
arbitrados en publicaciones científicas sobre los diversos temas
que se investigan en el instituto.
Podemos acceder a estos datos, en particular en forma de un
stream de datos en formato JSON.
Este stream de JSON podemos entonces tenerlo en forma de
dataframe en R.
13. El universo de paquetes para redes en R
Este es un trabajo en proceso, en este proceso me he dedicado a
explorar los diversos paquetes de R que me puedan ayudar a
darle sentido a toda la información con la que contamos.
14. El universo de paquetes para redes en R
La primera razón que me motivó a querer explorar estos datos en
forma de redes fue se pueden visualizar cosas de este tipo:
18. El universo de paquetes para redes en R
Aunque no está específicamente diseñado para esto, R tiene capacidades
poderosas para el análisis de redes. Las ventajas sobre el software
especializado (Gephi o Cytoscape) son:
• Reproducibilidad de análisis y resultados
• La alta capacidad de R para poder hacer la trasnsformación de datos para el
análisis de redes
• La gran cantidad de paquetes para el análisis de redes y este número sigue
creciendo: statnet, igraph, tidygraph, ggraph, visNetwork, qgraph, etc…
19. El universo de paquetes para redes en R
En la jerga de la ciencia de redes tenemos nodos o vértices,
mientras que las conexiones entre ellos son ligas o aristas. En
general trato de usar la nomenclatura de nodos y ligas.
Para poder usar nuestros datos necesitamos transformar la
información que tenemos en una forma particular para tener el
tipo particular de objeto usado por cada paquete.
20. El universo de paquetes para redes en R
El objeto principal de network, igraph y tidygraph se basa en
matrices de adjacencia.
Matriz de adjacencia:
Es una matriz cuadrada en la cuál la columna y el renglón son los
nodos de la gráfica, si dentro de la matriz hay un 1, entonces eso
significa que hay una liga entre ellos, en caso contrario, hay un
cero. Algunas matrices de adjacencia pueden tener valores
mayores a uno cuando eso es importante (en nuestro caso lo es) y
cuando la red es dirigida, la matriz no es simétrica, sino asimétrica.
22. El universo de paquetes para redes en R
El otro tipo de objecto que es importante crear en R es un
dataframe de vértices.
Dataframe de vértices:
Un data frame que contiene al menos dos columnas, una
columna de nodos que son la fuente de la conexión y otra
columna de nodos que son el otro lado de la conexión. Se
pueden identificar de manera única por medio de un ID y si el
orden es importante, estamos ante una red dirigida.
23. El universo de paquetes para redes en R
Un dataframe de vértices tiene toda la información necesaria,
pero muchas veces es preferible también una lista de nodos,
esto nos puede dar la ventaja de que podemos agregar atributos,
como el nombre de los nodos, o algún tipo de agrupación
(colores por ejemplo).
31. tidygraph y ggraph
Ambos paquetes tratan de traer redes a la manera de trabajar
del tidyverse. Esto representa una gran ventaja porque la forma
de trabajo usando tidyverse es mucho más limpia y consistente.
tidygraph nos permite crear objetos que parece un tibble o
dataframe
ggraph nos permite graficar los objetos de tidygraph usando las
convenciones de ggplot2
37. visNetwork y networkD3
Ambos paquetes nos dejan tener interacción con las gráficas,
además de que también nos permiten empotrarlos en
aplicaciones Shiny, lo cuál puede ser muy conveniente para
cuando se están presentando datos.
40. networkD3
1 library(networkD3)
2 nodes_d3 <- mutate(nodes, id = id - 1)
3 ligas_d3 <- mutate(ligas, from = from - 1, to = to - 1)
4 forceNetwork(Links = ligas_d3, Nodes = nodes_d3,
5 Source = "from", Target = "to",
6 NodeID = "title", Group = "color",
7 Value = "weight",
8 opacity = 1, fontSize = 16, zoom = TRUE)
41. qgraph y ggnet
qgraph nos permite visualizar y observar los cambios que se
tienen en una red que cambia con el tiempo
ggnet también permite usar la filosofía del tidyverse
43. Conclusión
El universo de paquetes es bastante amplio, de hecho hay una task
view de CRAN que sigue todos los paquetes asociados a redes:
https://cran.r-project.org/web/views/gR.html
Prácticamente todos los algoritmos para medir están
implementados y se pueden comenzar a trabajar desde ahí sin
ningún problema, la gran ventaja de la nueva ola de paquetes
relacionados con redes es que ahora se puede utilizar el tidyverse y
esto hace mucho más limpio el proceso y el pipeline entre equipos.