Análisis de Redes Sociales Usando Programación R

El análisis de redes sociales (SNA) es el proceso de explorar o examinar la estructura social mediante el uso de la teoría de grafos. Se utiliza para medir y analizar las propiedades estructurales de la red. Ayuda a medir las relaciones y los flujos entre grupos, organizaciones y otras entidades conectadas.

Antes de comenzar, veamos la terminología del análisis de redes.

  • Una red se representa como un gráfico, que muestra enlaces (si los hay) entre cada vértice (o Node) y sus vecinos.
  • Una línea que indica un enlace entre vértices se llama borde.
  • Un grupo de vértices que son mutuamente accesibles siguiendo los bordes en el gráfico se llama componente.
  • Las aristas seguidas de un vértice a otro se llaman camino.

Se requiere el siguiente software para realizar análisis de red

  • software R
  • Paquetes:
    • igrafo
    • sna (análisis de redes sociales)

Funciones utilizadas en el Análisis de Redes Sociales

  • función de función de biblioteca()
    library() cargar y adjuntar paquetes adicionales.

    Sintaxis:

    library(package, help, logical.return = FALSE....)
  • función make_full_graph()
    Esta función se utiliza para crear un gráfico completo.

    Sintaxis:

    make_full_graph(n, loops = FALSE, directed = FALSE)
  • función make_ring()
    Un anillo es una red unidimensional y puede crear redes de dimensiones arbitrarias, periódicas o no periódicas.

    Sintaxis:

    make_ring(n, directed = FALSE, circular = TRUE, mutual = FALSE)
  • función make_star()
    Esta función crea un gráfico de estrellas, donde cada vértice está conectado al vértice central y nadie más.

    Sintaxis:

    make_star(n, center = 1, mode = c("in", "out", "mutual", "undirected"))
  • Función sample_gnp()
    Este es un modelo simple donde cada borde posible se crea con la misma probabilidad constante.

    Sintaxis:

    sample_gnp(n, p, loops = FALSE, directed = FALSE)
  • función plot()
    Esta función se utiliza para dibujar el gráfico dado en la ventana gráfica activa.

    Sintaxis:

    plot(defined_graph_name)

Creación de gráficos de muestra

Gráfico completo

Sintaxis:

make_full_graph ()

Parámetros:

  • Número de vértices.
  • dirigido = VERDADERO/FALSO Si se crea o no un gráfico dirigido.
  • bucles = VERDADERO/FALSO Si se deben agregar bucles automáticos al gráfico o no.

Ejemplo:

library(igraph)
Full_Graph <- make_full_graph(8, directed = FALSE)
plot(Full_Graph)

Producción:
gráfico_completo

Gráfico de anillo

El gráfico de anillo es una red unidimensional y es un caso especial de la función make_lattice.

Sintaxis:

make_ring ()

Parámetros:

  • Número de vértices.
  • dirigido = VERDADERO/FALSO Si se crea o no un gráfico dirigido.
  • mutuo =VERDADERO/FALSO Si los bordes dirigidos son mutuos o no. Se ignora en el gráfico no dirigido.
  • circular =VERDADERO/FALSO Si se crea un anillo circular.

Ejemplo:

library(igraph)
Ring_Graph <- make_ring(12, directed = FALSE, mutual = FALSE, circular = TRUE)
plot(Ring_Graph)

Producción:
anillo_grafo1

ring_graph2

Gráfico de estrellas

Un gráfico de estrellas es donde cada vértice está conectado al vértice central y nadie más.

Sintaxis:

make_star()

Parámetros:

  • Número de vértices
  • center = Id del vértice central
  • modo = Define la dirección de los bordes de entrada/salida/mutua/no dirigida.
    • in – Los bordes apuntan al centro.
    • hacia afuera: los bordes apuntan desde el centro.
    • mutuo: se crea un gráfico de estrella dirigido con bordes mutuos.
    • undirected: los bordes no están dirigidos.

Ejemplo:

library(igraph)
Star_Graph <- make_star(10, center = 1)
plot(Star_Graph)

Producción:
star_graph

Generar gráficos aleatorios (gnp)

Los gráficos a continuación se generan aleatoriamente con una probabilidad constante dada para crear una ventaja.

Sintaxis:

sample_gnp()

Parámetros:

  • Número de vértices en el gráfico
  • probabilidad de dibujar un borde entre vértices aleatorios
  • dirigido = FALSO/VERDADERO
  • bucles = FALSO/VERDADERO

Ejemplo:

library(igraph)
gnp_Graph <- sample_gnp(20, 0.3, directed = FALSE, loops = FALSE)
plot(gnp_Graph)

De manera similar, puede probar diferentes gráficos cambiando sus argumentos como se hace a continuación.

Producción :
gnp1

gnp2

gnp3

gnp4

Analizando gráficos

Conectividad del gráfico

Una de las medidas básicas de los vértices en un gráfico es cuántas conexiones tienen con otros vértices. Esta medida puede ser tanto el número de conexiones como el total de conexiones posibles, también llamado densidad.
Ahora busquemos el grado de cada Node/vértice en un gráfico aleatorio.

Sintaxis:

degree(graph)

La función de grado se utiliza para averiguar el número de vértices a los que está conectado cada vértice.

Ejemplo:

library(igraph)
gnp_Graph <- sample_gnp(7, 0.4, directed = FALSE, loops = FALSE)
plot(gnp_Graph)
degree(gnp_Graph)

Producción:

degree

Intermediación del gráfico

En las redes sociales, la intermediación se define como puentes entre grupos de miembros de la red. Una forma de calcular la intermediación es calcular la intermediación de cada vértice. En general, cuanto mayor sea la puntuación de intermediación asociada con un vértice, mayor será el control sobre la red.

Sintaxis:

betweenness(graph)

betweenness()La función se define por el número de caminos más cortos que pasan por un vértice o una arista.

Ejemplo:

library(igraph)
gnp_Graph <- sample_gnp(7, 0.4, directed = FALSE, loops = FALSE)
plot(gnp_Graph)
betweenness(gnp_Graph)

Producción:

betwenness

Densidad de red

La densidad de la Red se define como el número de conexiones sobre el número total de conexiones posibles. Un gráfico completo tiene densidad = 1 mientras que otras redes pueden tener un valor decimal.

Sintaxis:

edge_density(graph)

Es la relación entre el número de aristas y el número total de aristas posibles.

Ejemplo:

library(igraph)
sample_graph <- sample_gnp(10, 0.3, directed = FALSE)
plot(sample_graph)
sample_density <- edge_density(sample_graph, loops = FALSE)
sample_density

Producción:

network_density

Identificar camarillas en una red

Una camarilla se puede definir como un grupo de vértices donde están presentes todos los vínculos posibles.

Sintaxis:

cliques(graph, min=NULL,max=NULL)

Esta función encuentra todas las camarillas más grandes o máximas en un gráfico no dirigido.

Ejemplo:

library(igraph)
sample_graph <- sample_gnp(20, 0.3, directed = FALSE, loops = FALSE)
plot(sample_graph)
clique_num(sample_graph, min=4)

Producción:

cliques

Encontrar los componentes de un gráfico

Un grupo de vértices de red conectados se denomina componente. Por lo tanto, es posible que pueda tener varios componentes que no estén interconectados.

Sintaxis:

components(graph)

Esto calculará los componentes fuertemente o débilmente conectados de un gráfico.

Ejemplo:

library(igraph)
sample_graph <- sample_gnp(30, 0.07, directed = FALSE, loops = FALSE)
plot(sample_graph)
components(sample_graph)

Producción:

components

Un paseo aleatorio en un gráfico

Ahora generemos un gráfico aleatorio y caminemos a través de él usando la función random_walk.

Sintaxis:

random_walk(
  graph,
  start_node,
  Number_of_steps,
  stuck = "return"/"error"
)

Esta función nos permite hacer una caminata aleatoria desde start_node hasta Number_of_steps y, en caso de que se atasque o no pueda avanzar, regresa o da un error.

Ejemplo:

library(igraph)
sample_graph <- sample_gnp(30, 0.07, directed = FALSE, loops = FALSE)
plot(sample_graph)
random_walk(sample_graph, 8, 10, stuck = "return")

Producción:

random_walk

Visualización de una red

Cambio de color de aristas y vértices

Ahora intentaremos aprender a modificar los colores de Vertices y Edges y hacer que el gráfico sea más colorido.

change_color

change_color2

set_vertex_attr(graph, name_attr, value)

Intentaremos establecer un valor de atributo particular de los vértices usando esta función.

set_edge_attr(graph, name, value)

Esta será una función similar, pero la diferencia será que establece los atributos de los bordes.

Escribir un gráfico

Usando las siguientes funciones, puede guardar la lista de bordes del gráfico en su computadora especificando la ruta.

write.graphs()

write_out

edge_list

setwd(dir)

La función de configuración del directorio de trabajo le permite configurar el directorio deseado para trabajar con él.

Nota: Al configurar la ruta, todas las barras diagonales inversas deben cambiarse a barras diagonales.

getwd()

Esta función devuelve la ruta de directorio actual que está utilizando.

write_graph(graph, format)

Esta función le permite exportar gráficos en un formato específico, como edgelist/pajek/ncol/lgl/graphml/dimacs/gml, etc.

Publicación traducida automáticamente

Artículo escrito por nimma_shravan_kumar_reddy y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *