Análisis de colaboración en comunidades por medio de análisis de redes sociales

Yanina Bellini Saibene - rOpenSci

Dos conceptos

CoP

Grupo de personas que comparten una
pasión
por algo que saben como hacer, y que interactúan regularmente con el objetivo de aprender como hacerlo mejor – Etienne Wenger

Redes sociales

Grupo de individuos que se relacionan con otros para un fin determinado, caracterizado por la existencia de flujos de información.

Análisis de redes sociales - elementos básicos

Análisis de redes sociales - elementos básicos

Análisis de redes sociales - elementos básicos

Análisis de redes sociales - elementos básicos

Análisis de redes sociales - medidas básicas

Análisis de redes sociales - medidas básicas

Análisis de redes sociales - medidas básicas

Análisis de redes sociales - medidas básicas

Análisis de redes sociales - medidas básicas

¿Por qué analizar nuestra comunidad de práctica?

Las comunidades están construidas por las conexiones de sus integrantes.

Necesitamos conocer la conectividad de nuestra comunidad para planificar intervenciones enfocadas y efectivas con el objetivo de:

  • mejorar las colaboraciones.
  • mejorar los flujos de información.
  • incrementar el re uso de conocimiento.
  • fomentar una co-creación efectiva de conocimiento.
  • generar una transferencia efectiva de conocimiento.

Analizar un momento dado

  • ¿Quién está conectado con quien? Quién no está conectado?
  • ¿Dónde están y quienes son los hubs?
  • ¿Dónde están y sobre qué son los clusters? Hay silos?

Analizar un momento dado

  • ¿Quién está conectado con quien? Quién no está conectado?
  • ¿Dónde están y quienes son los hubs?
  • ¿Dónde están y sobre qué son los clusters? Hay silos?

o como cambia a través del tiempo

  • ¿Se generan nuevas conecciones ?
  • ¿Se forman nuevos patrones de conectividad?
  • ¿Cómo era nuestra red antes y después de introducir una actividad?

Vamos a analizar la comunidad de rOpenSci

Somos un grupo de gente cuya pasión es la investigación abierta y reproducible para todes, construida por todes. Sabemos sobre este tema y contribuimos a este objetivo creando infraestructura técnica y social.

Participar de rOpenSci

Escribir para el blog

Revisar un paquete

Mantener un paquete

Hablar en una Comm Call

Convertirte en campeón/a

Ser anfitrión de un encuentro

Guía para contribuir de rOpenSci and Cómo participar en

Participación en una red

N:autor. E:coautoría

N:autor, editar, revisar. E:peer-review

N:desarrollo. E:co desarrollo.

N:disertante. E:panel, coorganización

N:tutores, mentoreade. E:mentorías

N:participantes. E: coorganización, asistentes

Datos para la red

Webpage

GitHub, base de datos

GitHub,r-universe

Webpage

Webpage, base de datos

Webpage

Un ejemplo con el blog

Veamos un ejemplo

file_list <- fs::dir_ls(path = "content/blog/", 
                        recurse = TRUE, 
                        type = "file", 
                        glob = "*.md") 

blog_post <- tibble(fecha = character(), 
                titulo = character(),
                autor = character(), 
                year = character(), 
                contribution_type = character())
                
for (documento in file_list){ 
  doc <- rmarkdown::yaml_front_matter(input = file.path(documento)) 
  blog_post <- tibble::add_row(blog_post, 
                           fecha = doc$date, 
                           titulo = doc$title, 
                           autor = doc$author, 
                           year = as.character(year(date(doc$date))), 
                           tipo_contribucion = 'blog post' 
                           )  
}

write_csv(datos, "blog_post_authors_2023.csv") # ;-)                file_list <- fs::dir_ls(path = "content/blog/", 
                        recurse = TRUE, 
                        type = "file", 
                        glob = "*.md") 

blog_post <- tibble(fecha = character(), 
                titulo = character(),
                autor = character(), 
                year = character(), 
                contribution_type = character())
                
for (documento in file_list){ 
  doc <- rmarkdown::yaml_front_matter(input = file.path(documento)) 
  blog_post <- tibble::add_row(blog_post, 
                           fecha = doc$date, 
                           titulo = doc$title, 
                           autor = doc$author, 
                           year = as.character(year(date(doc$date))), 
                           tipo_contribucion = 'blog post' 
                           )  
}

write_csv(datos, "blog_post_authors_2023.csv") # ;-)                file_list <- fs::dir_ls(path = "content/blog/", 
                        recurse = TRUE, 
                        type = "file", 
                        glob = "*.md") 

blog_post <- tibble(fecha = character(), 
                titulo = character(),
                autor = character(), 
                year = character(), 
                contribution_type = character())
                
for (documento in file_list){ 
  doc <- rmarkdown::yaml_front_matter(input = file.path(documento)) 
  blog_post <- tibble::add_row(blog_post, 
                           fecha = doc$date, 
                           titulo = doc$title, 
                           autor = doc$author, 
                           year = as.character(year(date(doc$date))), 
                           tipo_contribucion = 'blog post' 
                           )  
}

write_csv(datos, "blog_post_authors_2023.csv") # ;-)                file_list <- fs::dir_ls(path = "content/blog/", 
                        recurse = TRUE, 
                        type = "file", 
                        glob = "*.md") 

blog_post <- tibble(fecha = character(), 
                titulo = character(),
                autor = character(), 
                year = character(), 
                contribution_type = character())
                
for (documento in file_list){ 
  doc <- rmarkdown::yaml_front_matter(input = file.path(documento)) 
  blog_post <- tibble::add_row(blog_post, 
                           fecha = doc$date, 
                           titulo = doc$title, 
                           autor = doc$author, 
                           year = as.character(year(date(doc$date))), 
                           tipo_contribucion = 'blog post' 
                           )  
}

write_csv(datos, "blog_post_authors_2023.csv") # ;-)                file_list <- fs::dir_ls(path = "content/blog/", 
                        recurse = TRUE, 
                        type = "file", 
                        glob = "*.md") 

blog_post <- tibble(fecha = character(), 
                titulo = character(),
                autor = character(), 
                year = character(), 
                contribution_type = character())
                
for (documento in file_list){ 
  doc <- rmarkdown::yaml_front_matter(input = file.path(documento)) 
  blog_post <- tibble::add_row(blog_post, 
                           fecha = doc$date, 
                           titulo = doc$title, 
                           autor = doc$author, 
                           year = as.character(year(date(doc$date))), 
                           tipo_contribucion = 'blog post' 
                           )  
}

write_csv(datos, "blog_post_authors_2023.csv") # ;-)                file_list <- fs::dir_ls(path = "content/blog/", 
                        recurse = TRUE, 
                        type = "file", 
                        glob = "*.md") 

blog_post <- tibble(fecha = character(), 
                titulo = character(),
                autor = character(), 
                year = character(), 
                contribution_type = character())
                
for (documento in file_list){ 
  doc <- rmarkdown::yaml_front_matter(input = file.path(documento)) 
  blog_post <- tibble::add_row(blog_post, 
                           fecha = doc$date, 
                           titulo = doc$title, 
                           autor = doc$author, 
                           year = as.character(year(date(doc$date))), 
                           tipo_contribucion = 'blog post' 
                           )  
}

write_csv(datos, "blog_post_authors_2023.csv") # ;-)                file_list <- fs::dir_ls(path = "content/blog/", 
                        recurse = TRUE, 
                        type = "file", 
                        glob = "*.md") 

blog_post <- tibble(fecha = character(), 
                titulo = character(),
                autor = character(), 
                year = character(), 
                contribution_type = character())
                
for (documento in file_list){ 
  doc <- rmarkdown::yaml_front_matter(input = file.path(documento)) 
  blog_post <- tibble::add_row(blog_post, 
                           fecha = doc$date, 
                           titulo = doc$title, 
                           autor = doc$author, 
                           year = as.character(year(date(doc$date))), 
                           tipo_contribucion = 'blog post' 
                           )  
}

write_csv(datos, "blog_post_authors_2023.csv") # ;-)                
  1. Lee todos los archivos de la carpeta content/blog/ con extensión .md
  2. Crea un tibble con las variables a almacenar: fecha, título, autor, año y tipo_contribución.
  3. Para cada documento markdown
  4. Lee la cabecera YAML, extrae el valor de cada variable
  5. y añadir una fila en el conjunto de datos con la información

Veamos un ejemplo

blog_post_net <- blog_post |> 
  group_by(titulo, year) |>
  filter(n() > 1) |> 
  summarise(as.data.frame(t(combn(autor, 2)))) |>
  select(titulo, year, from=V1, to=V2)blog_post_net <- blog_post |> 
  group_by(titulo, year) |>
  filter(n() > 1) |> 
  summarise(as.data.frame(t(combn(autor, 2)))) |>
  select(titulo, year, from=V1, to=V2)blog_post_net <- blog_post |> 
  group_by(titulo, year) |>
  filter(n() > 1) |> 
  summarise(as.data.frame(t(combn(autor, 2)))) |>
  select(titulo, year, from=V1, to=V2)blog_post_net <- blog_post |> 
  group_by(titulo, year) |>
  filter(n() > 1) |> 
  summarise(as.data.frame(t(combn(autor, 2)))) |>
  select(titulo, year, from=V1, to=V2)blog_post_net <- blog_post |> 
  group_by(titulo, year) |>
  filter(n() > 1) |> 
  summarise(as.data.frame(t(combn(autor, 2)))) |>
  select(titulo, year, from=V1, to=V2)blog_post_net <- blog_post |> 
  group_by(titulo, year) |>
  filter(n() > 1) |> 
  summarise(as.data.frame(t(combn(autor, 2)))) |>
  select(titulo, year, from=V1, to=V2)

Veamos un ejemplo

the_nodes <- blog_post %>% 
  select(author) %>% 
  unique()

the_edges <- blog_post_net %>%
  select(from, to, year)

bp_net <- tbl_graph(nodes = the_nodes, 
                    edges = the_edges, 
                    directed = FALSE)the_nodes <- blog_post %>% 
  select(author) %>% 
  unique()

the_edges <- blog_post_net %>%
  select(from, to, year)

bp_net <- tbl_graph(nodes = the_nodes, 
                    edges = the_edges, 
                    directed = FALSE)the_nodes <- blog_post %>% 
  select(author) %>% 
  unique()

the_edges <- blog_post_net %>%
  select(from, to, year)

bp_net <- tbl_graph(nodes = the_nodes, 
                    edges = the_edges, 
                    directed = FALSE)the_nodes <- blog_post %>% 
  select(author) %>% 
  unique()

the_edges <- blog_post_net %>%
  select(from, to, year)

bp_net <- tbl_graph(nodes = the_nodes, 
                    edges = the_edges, 
                    directed = FALSE)

Red completa de autores de blog 2013-2023

Podemos analizarlo anualmente

O por idioma - artículos en español

O por país

¿Y si queres hacer lo mismo para tu comunidad?

Mis consejos

  • Definir cuáles serán nodos en tu red (gente, países, organizaciones,…)
  • Define que tipo(s) de conexiones tenes en tu red.
    • Empieza con tus caminos para participar.
    • Identifica que contribuciones se pueden hacer en equipos.
  • Probablemente ya estás registrando información sobre esos tipos de conexiones.

Mis consejos

  • Podes automatizar una parte de la recolección de datos.
    • Formalize the workflow (codigo ;-)) para pdoer repetir y reproducir.
  • Es dificil capturar todos los tipos de interacciones.
    • Tener en cuenta la privacidad de los datos.
  • Conocer a los nodos ayuda a entender los clusters y las interacciones.
    • Apoyate en las personas que han estado en la red por mas tiempo.

Mis consejos

  • Podes registrar el estado del modelo de la red en un momento dato …
  • … asi podes compararlo en momentos diferentes.
  • … asi podes usarlo para evaluar el impacto de intervenciones y programas.
  • Comparte lo que encontraste con tu comunidad
  • … y con otras comunidades.

¡Gracias, Thank you, Obrigada!

  • GitHub: https://github.com/yabellini/rOpenSciLatinR2023
  • Las figuras son adaptaciones de mi hijo pequeño y mias de imágenes por Freepik sobre el set hand drawn style stickman
  • Usamos R, gephy, excalidraw y quarto para construir esta charla.
  • Gracias al equipo de rOpenSci Staff, Elio, Ale, Sandro y a mi Club de conversación en Inglés por su feedback.

Esta charla está en https://github.com/yabellini/rOpenSciLatinR2023

1 / 32
Análisis de colaboración en comunidades por medio de análisis de redes sociales Yanina Bellini Saibene - rOpenSci

  1. Slides

  2. Tools

  3. Close
  • Análisis de colaboración en comunidades por medio de análisis de redes sociales
  • Dos conceptos
  • Análisis de redes sociales - elementos básicos
  • Análisis de redes sociales - elementos básicos
  • Análisis de redes sociales - elementos básicos
  • Análisis de redes sociales - elementos básicos
  • Análisis de redes sociales - medidas básicas
  • Análisis de redes sociales - medidas básicas
  • Análisis de redes sociales - medidas básicas
  • Análisis de redes sociales - medidas básicas
  • Análisis de redes sociales - medidas básicas
  • ¿Por qué analizar nuestra comunidad de práctica?
  • Las comunidades están...
  • Analizar un momento...
  • Analizar un momento...
  • Vamos a analizar la comunidad de rOpenSci
  • Participar de rOpenSci
  • Participación en una red
  • Datos para la red
  • Un ejemplo con el blog
  • Veamos un ejemplo
  • Veamos un ejemplo
  • Veamos un ejemplo
  • Red completa de autores de blog 2013-2023
  • Podemos analizarlo anualmente
  • O por idioma - artículos en español
  • O por país
  • ¿Y si queres hacer lo mismo para tu comunidad?
  • Mis consejos
  • Mis consejos
  • Mis consejos
  • ¡Gracias, Thank you, Obrigada!
  • f Fullscreen
  • s Speaker View
  • o Slide Overview
  • e PDF Export Mode
  • b Toggle Chalkboard
  • c Toggle Notes Canvas
  • d Download Drawings
  • ? Keyboard Help