4 votos

Agrupación de datos para la ocurrencia

Tengo un conjunto de datos que representan los nodos y la frecuencia con la que se han relacionado entre sí. He procesado esto en una tabla que contiene los nodos en X e Y con los datos siendo el número de interacciones, por ejemplo

   A    B    C    D
A  2    2    0    0
B  2    2    0    0
C  0    0    2    1
D  0    0    1    2

Por lo tanto, los datos pueden verse de cualquier manera. Ahora me gustaría realizar algún tipo de agrupación de estos para encontrar grupos de nodos relacionados a través de su nivel de interacción, así como alguna visualización. Tengo R, que es lo ideal, pero no tengo inconveniente en utilizar otro programa si es más fácil.

Todo el clustering for-noddy que veo no tiene este tipo de datos: diría que tiene un conjunto de nodos y para cada uno un conjunto de variables y el clustering es por similitud en esas variables - un problema diferente al que estoy intentando.

2voto

Alaric Puntos 649

Por lo que dices parece que quieres usar igraph y encontrar grupos de individuos utilizando moduarity , puedes mira aquí para más detalles .

Por ejemplo

dat <-
structure(list(ID = structure(1:4, .Label = c("A", "B", "C", 
"D"), class = "factor"), A = c(2L, 2L, 0L, 0L), B = c(2L, 2L, 
0L, 0L), C = c(0L, 0L, 2L, 1L), D = c(0L, 0L, 1L, 2L)), .Names = c("ID", 
"A", "B", "C", "D"), class = "data.frame", row.names = c(NA, 
-4L))

#> dat
#  ID A B C D
#1  A 2 2 0 0
#2  B 2 2 0 0
#3  C 0 0 2 1
#4  D 0 0 1 2

library(igraph)
library(reshape2)
g <- melt(dat)
g <- g[g$ID != g$variable ,]
names(g) <- c("from", "to", "weight")

g <- graph.data.frame(g, vertices = unique(g[1]))

wtc <- walktrap.community(g)
modularity(wtc)
#[1] 0.4444444

wtc
#Graph community structure calculated with the walktrap algorithm
#Number of communities (best split): 2 
#Modularity (best split): 0.4444444 
#Membership vector:
#B C D A 
#2 1 1 2 

modularity(g, membership(wtc))
#[1] -0.1666667

Esto también tiene visualización y puedes colorear fácilmente las cosas según la pertenencia a la comunidad :)

plot(g, vertex.color = wtc$membership)

enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X