1 Introducción

La conexión selectiva entre vértices de acuerdo con sus características se denomina mezcla asortativa (assortative mixing).

La homofilia se refiere a que nodos similares tienen a relacionarse entre sí.

Los coeficientes de asortatividad miden el nivel de homofilia (homophily) del grafo, basándose en las etiquetas o valores asignados a los vértices.

Los coeficientes de asortatividad son positivos si vértices similares tienden a conectarse entre ellos, y negativo en caso contrario.

Si el coeficiente es alto, significa que los vértices conectados tienden a tener las mismas etiquetas o valores asignados similares.

2 Características categóricas

Cada vértice de un grafo \(G=(V,E)\) se puede etiquetar de acuerdo con una de \(M\) categorías. En este caso, el coeficiente de asortividad (assortativity coefficient) se define como \[ r_a = \frac{\sum_{i=1}^n f_{i,i} - \sum_{i=1}^n f_{i\bullet}f_{\bullet i}}{1 - \sum_{i=1}^n f_{i\bullet}f_{\bullet i}} \] donde:

Propiedades:

Ver assortativity_nominal en igraph.

3 Características numéricas

Cuando la característica de interés es continua, se denota con \((x_e, y_e)\) los valores de esa característica para los vértices unidos por la arista \(e \in E\). En este caso, el coeficiente de assortividad se define como \[ r_a = \frac{\sum_{e\in E} xy(f_{x,y} - f_{x\bullet}f_{\bullet y})}{\sigma_x \sigma_y} \] donde:

Comúnmente la característica continua se toma como el grado.

Ver assortativity y assortativity_degree en igraph.

4 Ejemplo: Interacciones proteína-proteína

Red de interacción de proteínas de levadura.

Las interacciones proteína-proteína prometen revelar aspectos del sistema regulatorio que subyace a la función celular.

Los nodos corresponden a proteínas y solo se consideran aquellas interacciones que tienen una confianza “moderada” y “alta”.

Una descripción completa de los datos se puede encontrar aquí.

Disponible en el paquete igraphdata de R.

Von Mering, C., Krause, R., Snel, B., Cornell, M., Oliver, S. G., Fields, S., & Bork, P. (2002). Comparative assessment of large-scale data sets of protein–protein interactions. Nature, 417(6887), 399-403.

# librerías
suppressMessages(suppressWarnings(library(igraph)))
suppressMessages(suppressWarnings(library(igraphdata)))
# datos
data(yeast)
yeast <- upgrade_graph(yeast)
# la representación de datos internos a veces cambia entre versiones
# orden
vcount(yeast)
## [1] 2617
# tamaño
ecount(yeast)
## [1] 11855
# dirigida?
is_directed(yeast)
## [1] FALSE
# ponderada?
is_weighted(yeast)
## [1] FALSE
# clases
table(V(yeast)$Class)
## 
##   A   B   C   D   E   F   G   M   O   P   R   T   U 
##  60 109 148 261  99 200 101 295 193 256  48 249 558
sum(table(V(yeast)$Class))
## [1] 2577
# hay NAs?
table(is.na(V(yeast)$Class))
## 
## FALSE  TRUE 
##  2577    40
# clase P: desempeñan un papel en la síntesis de proteínas
v.types <- (V(yeast)$Class == "P") + 1
v.types[is.na(v.types)] <- 1
table(v.types)
## v.types
##    1    2 
## 2361  256
# asortatividad nominal
assortativity_nominal(graph = yeast, types = v.types, directed = F)
## [1] 0.5232879
# asortatividad grado
assortativity_degree(yeast)
## [1] 0.4610798

4.1 Ejemplo: Interacciones sociales

Red de interacciones sociales entre los miembros de un club de karate.

Estos datos fueron recolectados para estudiar la fragmentación que sufrió el club en dos clubes diferentes debido a una disputa entre el director y el administrador.

\(y_{i,j} = 1\) si los miembros \(i\) y \(j\) tuvieron una interacción social en el club y \(y_{i,j} = 0\) en otro caso.

Una descripción completa de los datos se puede encontrar aquí.

Disponible en el paquete igraphdata de R.

Zachary, W. W. (1977). An information flow model for conflict and fission in small groups. Journal of anthropological research, 33(4), 452-473.

# datos
data(karate)
karate <- upgrade_graph(karate)
# la representación de datos internos a veces cambia entre versiones
Y <- as.matrix(get.adjacency(graph = karate, names = F))
# orden
vcount(karate)
## [1] 34
# tamaño
ecount(karate)
## [1] 78
# dirigida?
is_directed(karate)
## [1] FALSE
# ponderada?
is_weighted(karate)
## [1] TRUE
# visualización
par(mfrow = c(1,1), mar = c(4, 3, 3, 1))
set.seed(123)
plot(karate, layout = layout_with_dh, vertex.size = 10, vertex.frame.color = "black", vertex.label.color = "black", main = "")

# clase
v.types <- V(karate)$Faction
# asortatividad nominal
assortativity_nominal(graph = karate, types = v.types, directed = F)
## [1] 0.7434211
# asortatividad grado
assortativity_degree(karate)
## [1] -0.4756131

5 Ejemplo: Trabajo colaborativo

Red de relaciones de trabajo colaborativo entre los miembros de una firma de abogados (SG&R).

Estos datos fueron recolectados para estudiar la cooperación entre los actores de una organización.

\(y_{i,j} = 1\) si los miembros \(i\) y \(j\) trabajaron juntos en al menos un caso y \(y_{i,j} = 0\) en otro caso.

Una descripción completa de los datos se puede encontrar aquí.

Disponible en el paquete sand de R.

Lazega, E. (2001). The collegial phenomenon: The social mechanisms of cooperation among peers in a corporate law partnership. Oxford University Press on Demand.

# install.packages("sand")
suppressMessages(suppressWarnings(library(sand)))
# datos
lazega <- graph_from_data_frame(d = elist.lazega, directed = "F", vertices = v.attr.lazega)
V(lazega)$label <- sub("V", "", V(lazega)$name)
# simple?
is_simple(lazega)
## [1] TRUE
# ponderado?
is_weighted(lazega)
## [1] FALSE
# orden
vcount(lazega)
## [1] 36
# tamaño
ecount(lazega)
## [1] 115

# asortatividad nominal
assortativity(graph = lazega, types1 = V(lazega)$Office)
## [1] 0.2823909
assortativity(graph = lazega, types1 = V(lazega)$Practice)
## [1] 0.2409241
assortativity(graph = lazega, types1 = V(lazega)$School)
## [1] -0.06008441
# asortatividad continua
assortativity(graph = lazega, types1 = V(lazega)$Years)
## [1] -0.07569942
# asortatividad grado
assortativity(graph = lazega, types1 = degree(lazega))
## [1] -0.1681201
assortativity_degree(graph = lazega, directed = F)
## [1] -0.1681201

6 Referencias