Clase 8 - Redes
Objetivos de Aprendizaje
Definir redes y sus componentes.
Definir e identificar grafo, nodo, vinculo, direccion, peso.
Definir y explicar dos tipos de formato de representacion de datos de redes.
Explicar el formato de datos tidy para redes.
Mencionar 7 razones para visualizar datos con redes.
Mencionar y definir 10 metricas de redes.
Analizar casos de uso de redes.
Ejercitar con la construccion y analisis de redes en R.
Slides
Programacion en vivo (live coding)
Como siempre iniciamos con un rmarkdown en blanco y vamos completando el codigo. Usamos los subtitulos para separar los conceptos y las diferentes partes del codigo
Cargamos los paquetes
# Paquetes para poder trabajar con redes
library(igraph)
library(tidygraph)
# Paquete con datos de redes
library(igraphdata)
# Paquete para graficar las redes
library(ggraph)
Datos de redes: Karate
data("karate")
class(karate)
<- as_tbl_graph(karate)
karate_tidy
class(karate_tidy)
Visualizando propiedades de la red
karate_tidy
Mi primer gráfico de redes
plot(karate)
Graficando tipo ggplot2
ggraph(karate_tidy, layout = 'linear') +
geom_edge_arc(color = 'blue') +
geom_node_point(aes(color = color), size = 8) +
geom_node_text(aes(label = label))
Calculando algunas metricas
# Densidad
graph.density(karate)
degree(karate)
V(karate)$deg <- degree(karate)
plot(karate, vertex.size = V(karate)$deg)
Ejercicios
1) Instalar los paquetes
Instalar los siguientes paquetes para poder realizar los live coding y los ejercicios.
{igraph} {igraphdata} {network} {tidygraph} {ggraph}
2) Ejercicio de Redes
Duracion: 25 minutos
En grupos, una persona por grupo comparte la pantalla y todes colaboran en la resolución de los ejercicios.
Descarguen el archivo
gr_NodesEdges.xlsx
del campus.Creen un nuevo rmarkdown y carguen los paquetes necesarios para trabajar con redes
Creando la red
En el primer chunk de codigo vamos a leer dos archivos de excel que contienen la información de la red y vamos a generar un tipo de red tidy.
Vean la ayuda de la función tbl_graph y explicar debajo del chunk que hacen los parámetros
nodes
,edges
ydirect
.Antes de leer los datos chequeen el lugar donde copiaron
gr_NodesEdges.xlsx
y modifiquen el código para que funcionen correctamente.
# Leo los archivos de datos
<- read_excel("gr_NodesEdges.xlsx")
gr_Nodes <- read_excel("gr_NodesEdges.xlsx", sheet = "Edges")
gr_Edges
# Creo la red
<- tbl_graph(nodes = gr_Nodes, edges = gr_Edges, direct = TRUE) red
Analizando la red
Analizando la red que recien crearon contesten estas caracteristicas de la red:
- Cantidad de nodos:
- Cantidad de vínculos:
- ¿La red es dirigida?
# tu codigo aqui
Graficando la red
Realizar un gráfico de la red que presente:
- Los nodos con un tamaño de 6 y su nombre correspondiente,
- Los vínculos
- El color de fondo de los nodos en rojo
- El color de los vínculos en verde.
# tu codigo aqui
Generando un reporte
Hagan knit del documento y compartan el HTML resultante en el foro de consultas del campus.
Pongan en el mensaje los integrantes de la sala que generaron este informe.
3) Graficando redes
Creen un documento markdown nuevo y sigan estas las instrucciones:
Cargado paquetes y creando la red
# Carguen los paquetes necesarios para trabajar con redes
# Lean los archivos de datos: gr_NodesEdges.xlsx
<- read_______("_____________")
gr_Nodes <- read_______("_____________", sheet = "_______")
gr_Edges
# Creo la red
<- __________(nodes = gr_Nodes, edges = gr_Edges, direct = TRUE) red
Graficando
Esta red representa trenes que viajan entre ciudades.
Analizar los atributos que tiene la red.
Un gráfico sencillo de la red
Vamos a generar un gráfico donde se presenten:
- Los nodos con la etiqueta del nombre (ver los atributos para saber donde está el nombre de la ciudad) y un tamaño de 4.
- Los vínculos con color gris y un ancho de 1
# Tu codigo va aqui
Un gráfico con vínculos diferentes
Vamos a generar un gráfico de la red donde:
el ancho de los vínculos esté dado por el tiempo que se tarda en viajar de un nodo a otro y
los nodos tengan como etiqueta el nombre de la ciudad, sean de color verde y de tamaño 5.
Completa el código del chunk para obtener ese gráfico
ggraph(_________) +
geom_edge_diagonal(aes(___________), ________ = "gray65") +
geom_node_point(_________________) +
geom_node_text(aes(____________), repel = TRUE) +
theme_void()
Un gráfico con layout
Al gráfico anterior agregarle la opción de layout
y probar con diferentes opciones, por ejemplo “nicely”, “star”, “grid”, “kk”, “lgl”.
# Tu codigo va aqui
Un gráfico con etiquetas en los nodos
Al gráfico anterior, en el geom_edge_diagonal
, asiganar el atributo del tiempo que tardan los viajes a la estética de la etiqueta (label
) para que los vínculos también estén etiquedatos. Ver los atributos de la red para saber como se llama el atributo que guarda el tiempo de viaje.
# Tu codigo va aqui
Para los dos ultimos ejercicios se pueden generar los archivos rmarkdown prellenos con las instrucciones y el codigo.
Estos archivos se pueden usar en un proyecto Posit Cloud, se puede compaetir un proyecto de RStudio con los archivos markdown y el archivo de datos zipeado o bien solo compatir el archivo .Rmd correspondiente.
En esa materia estos materiales se subian para su descarga al campus en la clase correspondiente.
Lecturas sugeridas
Los ejemplos de la programacion en vivo de esta clase se basan en el tutorial “Introducción al análisis de redes con R” de La Dra. María Cristina Ramos para LatinR 2021.
R Visualizations. David W. Gerbing. ISBN: 978-1-03-224327-6. Chapter 8 Visualize Maps and Networks.