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 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:
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:
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 :
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:
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:
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:
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:
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:
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:
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.
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()
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