Cómo crear una red bipartita en R con igraph o tnet

Tengo un edgelist para una red de dos modos, similar a esto:

person Event Amy football_game Sam picnic Bob art_show 

Quiero realizar un análisis sobre esto en R, pero aparentemente todo lo que bash falla. Convertirlo a una red de un modo se topa con limitaciones de memoria, y no puedo entender cómo analizarlo como bipartito en igraph o tnet.

En igraph, bipartite.projection me da todo FALSE , en el objeto igraph creado utilizando

 net <- graph.edgelist(myobject) 

En tnet, no puedo convertir la red de igraph en una de tnet, y cuando trato de usar el dataframe original, se niega debido a los duplicados en el gráfico.

Así que las respuestas a cualquiera de los siguientes serían muy apreciadas:

  1. ¿Cómo uso la función bipartite.mapping ?
  2. ¿Cómo ingreso un objeto igraph en tnet?
  3. Si todo lo demás falla, ¿cómo puedo ingresar un dataframe con bordes duplicados en tnet?

Lo siento si estas son preguntas básicas, pero hay muy poca documentación.

EDITAR

Ejemplo:

 edgelist <- read.table(text="Person Event Amy football Bob picnic Sam artshow", header=TRUE) edgelist <- as.matrix(edgelist) ## Igraph Issues igraph <- graph.edgelist(edgelist) typevector <- bipartite.projection(igraph) # gets all FALSE edgelist2 <- get.edgelist(igraph) typevector <- bipartite.projection(edgelist2) # same thing ## tnet issues tnet <- as.tnet(edgelist) # gives error: "There are duplicate events in the edgelist" tnet <- as.tnet(edgelist2) clusterMat <- clustering_local_tm(tnet) # gives error: "max not meaningful for factors" onemode <- projecting_tm(tnet, method="Newman") # gives error: "arguments must have same length" 

En igraph, una red bipartita es aquella que tiene un atributo de vértice de type . Este atributo debe ser lógico y debe ser TRUE para uno de los tipos de nodo y FALSE para los demás. Entonces, para crear una red bipartita a partir de su lista de bordes, simplemente cree un gráfico regular y luego agregue el atributo de vértice de type :

 edgelist <- read.table(text="Person Event Amy football Bob picnic Sam artshow", header=TRUE) igraph <- graph.data.frame(edgelist) V(igraph)$type <- V(igraph)$name %in% edgelist[,1] igraph # IGRAPH DN-B 6 3 -- # + attr: name (v/c), type (v/x) 

La letra 'B' te dice que este es un gráfico bipartito. Puede crear las proyecciones unipartitas de esta red a través de:

 bipartite.projection(igraph) # $proj1 # IGRAPH UN-B 3 0 -- # + attr: name (v/c), type (v/x) # # $proj2 # IGRAPH UN-B 3 0 -- # + attr: name (v/c), type (v/x) 

Esto devolverá una lista de dos gráficos. Si crees que la proyección puede ser demasiado grande, primero puedes llamar a la función bipartite.projection.size , esto te dará el número de vértices y bordes en ambas proyecciones. El requisito de memoria para un gráfico de igrafo es (4m + 2n) * 8 + O (1) bytes, donde 'n' es el número de vértices y 'm' es el número de aristas.

    Intereting Posts