SlideShare una empresa de Scribd logo
1 de 44
Descargar para leer sin conexión
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
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
¿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.
¿Qué es la ciencia de redes?
¿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í.
¿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.
¿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
¿Libros?
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.
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.
Datos
Datos
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.
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:
Red de colaboraciones internas:
Red de colaboraciones internas:
Red de colaboraciones internas:
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…
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.
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.
Datos
Matriz de adyacencia
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.
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).
Datos
NodesLinks
network
1 library(network)
2 my_network <- network(edges,
vertex.attr = nodes,
matrix.type = “edgelist",
ignore.eval = FALSE)
3 class(my_network)
network
1 library(network)
2 my_network <- network(edges,
vertex.attr = nodes,
matrix.type = “edgelist",
ignore.eval = FALSE)
3 class(my_network)
network
1 plot(routes_network, vertex.cex = 3, mode = "circle")
igraph
1 detach(package:network)
2 rm(my_network)
3 library(igraph)
4 igraph_network <- graph_from_data_frame(d = ligas,
5 vertices = nodes,
6 directed = TRUE)
7 class(igraph_network)
igraph 1 > igraph_network
2 IGRAPH 499a818 DNW- 125 264 --
3 + attr: name (v/c), title (v/c), color
4 | (v/c), weight (e/n)
5 + edges from 499a818 (vertex names):
6 [1] 1->7 1->11 1->25 1->32 1->76
7 [6] 2->34 2->37 2->55 2->96 3->71
8 [11] 3->75 3->92 4->7 4->76 4->92
9 [16] 5->13 5->47 5->53 5->57 5->62
10 [21] 5->63 5->105 6->16 6->57 6->62
11 [26] 6->98 7->11 7->13 7->25 7->26
12 [31] 7->32 7->55 7->62 7->65 7->73
13 + ... omitted several edges
14
igraph
1 plot(routes_igraph, edge.arrow.size = 0.2)
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
tidygraph y ggraph
1 library(tidygraph)
2 library(ggraph)
3 tidynetwork <- tbl_graph(nodes = nodes,
edges = ligas,
directed = TRUE)
4 class(tidynetwork)
tidygraph y ggraph
1 > tidynetwork
2 # A tbl_graph: 125 nodes and 264 edges
3 #
4 # A directed simple graph with 8 components
5 #
6 # Node Data: 125 x 3 (active)
7 id title color
8 <int> <fct> <fct>
9 1 1 Dwight Roberto Acosta Najarro #DBC8…
10 2 2 Luis Armando Acosta S√ánchez#DF70…
11 3 3 Esbaide Adem Chahin #DF70…
12 4 4 Fernando Alba Andrade #84AC…
13 5 5 José Rubén Alfaro Molina #84AC…
14 6 6 Héctor Alva Sánchez #84AC…
15 # … with 119 more rows
16 #
17 # Edge Data: 264 x 3
18 from to weight
19 <int> <int> <int>
20 1 1 7 4
21 2 1 11 1
22 3 1 25 3
23 #…with 261 more rows
tidygraph y ggraph
1 ggraph(tidynetwork) +
2 geom_edge_link() +
3 geom_node_point() +
4 theme_graph()
tidygraph y ggraph
1 ggraph(tidynetwork, layout = "graphopt") +
2 geom_node_point() +
3 geom_edge_link(aes(width = weight), alpha = 0.8) +
4 scale_edge_width(range = c(0.2, 2)) +
5 theme_graph()
tidygraph y ggraph
1 ggraph(tidynetwork, layout = "linear") +
2 geom_edge_arc(aes(width = weight), alpha = 0.8) +
3 scale_edge_width(range = c(0.2, 2)) +
4 geom_node_text(aes(label = title)) +
5 labs(edge_width = "weight") +
6 theme_graph()
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.
visNetwork
1 library(visNetwork)
2 visNetwork(nodes, ligas)
visNetwork
1 visNetwork(nodes, ligas) %>%
2 visIgraphLayout(layout = "layout_with_fr") %>%
3 visEdges(arrows = "middle")
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)
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
No olvidar
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.
@natorro
@massivetrend
carlos.lopez@massiventrend.com
Contacto
¡GRACIAS!

Más contenido relacionado

Similar a Ciencia de redes con R: Una introducción al universo de paquetes para ciencia de redes

Computación Grid (PRP)
Computación Grid (PRP)Computación Grid (PRP)
Computación Grid (PRP)vanesav
 
Visualización de Redes: Herramientas y Técnicas para la Creación y Evaluación...
Visualización de Redes: Herramientas y Técnicas para la Creación y Evaluación...Visualización de Redes: Herramientas y Técnicas para la Creación y Evaluación...
Visualización de Redes: Herramientas y Técnicas para la Creación y Evaluación...Yessenia I. Martínez M.
 
Fundamentos de Data Mining con R
Fundamentos de Data Mining con RFundamentos de Data Mining con R
Fundamentos de Data Mining con RSoftware Guru
 
Arquitecturas y modelos de programación en computación grid (1)
Arquitecturas y modelos de programación en computación grid (1)Arquitecturas y modelos de programación en computación grid (1)
Arquitecturas y modelos de programación en computación grid (1)Tensor
 
presentation GRID
presentation GRIDpresentation GRID
presentation GRIDchabal
 
Dialnet redes neuronalesy-predicciondetrafico-3802210
Dialnet redes neuronalesy-predicciondetrafico-3802210Dialnet redes neuronalesy-predicciondetrafico-3802210
Dialnet redes neuronalesy-predicciondetrafico-3802210S.C. Uriel Rodriguez Ramirez
 
AMERICAN SYSTEM monografia de exposicion año 2023
AMERICAN SYSTEM monografia de exposicion año 2023AMERICAN SYSTEM monografia de exposicion año 2023
AMERICAN SYSTEM monografia de exposicion año 2023Jhony1q1111Delaguila
 
Capa fisica del modelo osi
Capa fisica del modelo osiCapa fisica del modelo osi
Capa fisica del modelo osiMaatva Rg
 
Capa de enlace de datos y capa física del modelo osi.
Capa de enlace de datos y capa física del modelo osi.Capa de enlace de datos y capa física del modelo osi.
Capa de enlace de datos y capa física del modelo osi.Deysi Sanchez Vazquez
 
Capa fisica del modelo osi
Capa fisica del modelo osiCapa fisica del modelo osi
Capa fisica del modelo osiMaatva Rg
 
Tutorial network analyst
Tutorial network analystTutorial network analyst
Tutorial network analystCivil Serrano
 

Similar a Ciencia de redes con R: Una introducción al universo de paquetes para ciencia de redes (20)

Computación Grid
Computación GridComputación Grid
Computación Grid
 
Computación Grid (PRP)
Computación Grid (PRP)Computación Grid (PRP)
Computación Grid (PRP)
 
Visualización de Redes: Herramientas y Técnicas para la Creación y Evaluación...
Visualización de Redes: Herramientas y Técnicas para la Creación y Evaluación...Visualización de Redes: Herramientas y Técnicas para la Creación y Evaluación...
Visualización de Redes: Herramientas y Técnicas para la Creación y Evaluación...
 
Fi u3 ea2_mofs
Fi u3 ea2_mofsFi u3 ea2_mofs
Fi u3 ea2_mofs
 
Fundamentos de Data Mining con R
Fundamentos de Data Mining con RFundamentos de Data Mining con R
Fundamentos de Data Mining con R
 
Arquitecturas y modelos de programación en computación grid (1)
Arquitecturas y modelos de programación en computación grid (1)Arquitecturas y modelos de programación en computación grid (1)
Arquitecturas y modelos de programación en computación grid (1)
 
Manual fundamentos de redes
Manual fundamentos de redesManual fundamentos de redes
Manual fundamentos de redes
 
Mantenimeinto
MantenimeintoMantenimeinto
Mantenimeinto
 
Grupo4
Grupo4Grupo4
Grupo4
 
Trabajo final
Trabajo finalTrabajo final
Trabajo final
 
presentation GRID
presentation GRIDpresentation GRID
presentation GRID
 
Jasson modelo osi
Jasson modelo osiJasson modelo osi
Jasson modelo osi
 
Dialnet redes neuronalesy-predicciondetrafico-3802210
Dialnet redes neuronalesy-predicciondetrafico-3802210Dialnet redes neuronalesy-predicciondetrafico-3802210
Dialnet redes neuronalesy-predicciondetrafico-3802210
 
AMERICAN SYSTEM monografia de exposicion año 2023
AMERICAN SYSTEM monografia de exposicion año 2023AMERICAN SYSTEM monografia de exposicion año 2023
AMERICAN SYSTEM monografia de exposicion año 2023
 
Capa fisica del modelo osi
Capa fisica del modelo osiCapa fisica del modelo osi
Capa fisica del modelo osi
 
Capa de enlace de datos y capa física del modelo osi.
Capa de enlace de datos y capa física del modelo osi.Capa de enlace de datos y capa física del modelo osi.
Capa de enlace de datos y capa física del modelo osi.
 
Capa fisica del modelo osi
Capa fisica del modelo osiCapa fisica del modelo osi
Capa fisica del modelo osi
 
Exposicion 4
Exposicion 4Exposicion 4
Exposicion 4
 
Tutorial network analyst
Tutorial network analystTutorial network analyst
Tutorial network analyst
 
Tutorial neo4j en español
Tutorial neo4j en españolTutorial neo4j en español
Tutorial neo4j en español
 

Más de Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

Más de Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Último

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 

Último (10)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
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.
  • 4. ¿Qué es la ciencia de redes?
  • 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.
  • 11. Datos
  • 12. Datos
  • 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).
  • 25. network 1 library(network) 2 my_network <- network(edges, vertex.attr = nodes, matrix.type = “edgelist", ignore.eval = FALSE) 3 class(my_network)
  • 26. network 1 library(network) 2 my_network <- network(edges, vertex.attr = nodes, matrix.type = “edgelist", ignore.eval = FALSE) 3 class(my_network)
  • 28. igraph 1 detach(package:network) 2 rm(my_network) 3 library(igraph) 4 igraph_network <- graph_from_data_frame(d = ligas, 5 vertices = nodes, 6 directed = TRUE) 7 class(igraph_network)
  • 29. igraph 1 > igraph_network 2 IGRAPH 499a818 DNW- 125 264 -- 3 + attr: name (v/c), title (v/c), color 4 | (v/c), weight (e/n) 5 + edges from 499a818 (vertex names): 6 [1] 1->7 1->11 1->25 1->32 1->76 7 [6] 2->34 2->37 2->55 2->96 3->71 8 [11] 3->75 3->92 4->7 4->76 4->92 9 [16] 5->13 5->47 5->53 5->57 5->62 10 [21] 5->63 5->105 6->16 6->57 6->62 11 [26] 6->98 7->11 7->13 7->25 7->26 12 [31] 7->32 7->55 7->62 7->65 7->73 13 + ... omitted several edges 14
  • 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
  • 32. tidygraph y ggraph 1 library(tidygraph) 2 library(ggraph) 3 tidynetwork <- tbl_graph(nodes = nodes, edges = ligas, directed = TRUE) 4 class(tidynetwork)
  • 33. tidygraph y ggraph 1 > tidynetwork 2 # A tbl_graph: 125 nodes and 264 edges 3 # 4 # A directed simple graph with 8 components 5 # 6 # Node Data: 125 x 3 (active) 7 id title color 8 <int> <fct> <fct> 9 1 1 Dwight Roberto Acosta Najarro #DBC8… 10 2 2 Luis Armando Acosta S√ánchez#DF70… 11 3 3 Esbaide Adem Chahin #DF70… 12 4 4 Fernando Alba Andrade #84AC… 13 5 5 José Rubén Alfaro Molina #84AC… 14 6 6 Héctor Alva Sánchez #84AC… 15 # … with 119 more rows 16 # 17 # Edge Data: 264 x 3 18 from to weight 19 <int> <int> <int> 20 1 1 7 4 21 2 1 11 1 22 3 1 25 3 23 #…with 261 more rows
  • 34. tidygraph y ggraph 1 ggraph(tidynetwork) + 2 geom_edge_link() + 3 geom_node_point() + 4 theme_graph()
  • 35. tidygraph y ggraph 1 ggraph(tidynetwork, layout = "graphopt") + 2 geom_node_point() + 3 geom_edge_link(aes(width = weight), alpha = 0.8) + 4 scale_edge_width(range = c(0.2, 2)) + 5 theme_graph()
  • 36. tidygraph y ggraph 1 ggraph(tidynetwork, layout = "linear") + 2 geom_edge_arc(aes(width = weight), alpha = 0.8) + 3 scale_edge_width(range = c(0.2, 2)) + 4 geom_node_text(aes(label = title)) + 5 labs(edge_width = "weight") + 6 theme_graph()
  • 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.
  • 39. visNetwork 1 visNetwork(nodes, ligas) %>% 2 visIgraphLayout(layout = "layout_with_fr") %>% 3 visEdges(arrows = "middle")
  • 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.