Estimado Luisfo Chiroque Hay aristas múltiples, eso es por la preparación de los datos, es que separe por componentes, no me refiero al término componente estadístico, sino a descomposición de algo en los componentes que lo construyen, algunos son comunes y otros no, cuándo son comunes hay una relación en la red. Voy a probar con simplify, cuándo lo leí yo lo descarté, lo releeré, ¿Qué opina de usar weighted=TRUE?, ¿Esto contaría las aristas duplicadas simplificando en un peso o el enfoque es diferente? Javier Rubén Marcuzzi De: Luisfo Chiroque Enviado: viernes, 1 de abril de 2016 2:59 Para: Javier Marcuzzi CC: r-help-es en r-project.org Asunto: Re: [R-es] R igraph Estimado Javier, En mensaje de error la función se queja de que sólo funciona con grafos sin aristas multiples. Seguramente haya más de una arista entre algún par de nodos. Esto, se puede solucionar usando simplify() fastgreedy.community(simplify(udatos)) No sé qué implicaciones tendrá en cuanto al resultado que saque. Depende de la importancia de las aristas múltiples en lo que estés haciendo. En cualquier caso, si te interesara, creo que a simplify se le puede añadir la forma en la que quieres que te ?combine? las aristas cuando son múltiples. Espero que te sirva. Un saludo, Luisfo> El 1 abr 2016, a las 1:31, Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com> escribió: > > Estimados > > Copio un mensaje de error que da igraph, es más fácil verlo que explicarlo. > >> fastgreedy.community(udatos) > Error in .Call("R_igraph_community_fastgreedy", graph, as.logical(merges), : > At fast_community.c:553 : fast-greedy community finding works only on graphs without multiple edges, Invalid value >> cluster_louvain(udatos) > IGRAPH clustering multi level, groups: 7, mod: 0.26 > + groups: > $`1` > [1] "Ficha 1127" "Ficha 1309" "Ficha 1530" "Ficha 603" "mes 2" > > Los datos están de esta forma: (udatos son los mismos pero - udatos <-as.undirected(datos.network)) >> head(get.data.frame(dIgraph.network)) > from to Descripcion A Descripcion B Relacion > 1 Ficha 1022 mes 10 Ficha Mes Ficha Mes > 2 Ficha 1024 mes 8 Ficha Mes Ficha Mes > 3 Ficha 1028 mes 2 Ficha Mes Ficha Mes > ? > > Esperando que sea entendible mi correo, ¿Dónde tendré el problema? ¿En la preparación de los datos? > Desde ya, gracias. > > Javier Rubén Marcuzzi > > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es[[alternative HTML version deleted]]
Estimado Javier, El problema de simplify es que no sabe cómo mezclar las aristas a no ser que se lo indiques explícitamente. No sé si por defecto se quedará con la primera o la última arista. En cualquier caso, como parece que para tu objetivo esto es algo crítico, tiene remedio. Tú sólo quieres calcular fastgreedey.community pero teniendo en cuenta si existen más de una arista entre dos nodos. Esta función tiene en cuenta los pesos si existe una variable ?weight?. 1) Añade una variable weight a tu grafo, a todas las aristas, con peso 1 E(udatos)$weight <- 1 2) Simplifica el grafo. Por defecto, simplify suma las variables weight, si existen. udatos.simple <- simplify(udatos, edge.attr.comb = list(weight="sum?)) Pero puedes añadir la función que quieras: udatos.simple <- simplify(udatos, edge.attr.comb = list(weight=function(w) {1 / sum(w)} )) Dependiendo de si quieres dar un efecto positivo o negativo al hecho de que hayan más de una arista entre dos nodos. De igual forma, podrías añadir funciones específicas para que simplify sepa cómo combinar atributos de aristas repetidas: udatos.simple <- simplify(udatos, edge.attr.comb = list(weight="sum", "Descripcion A"=function(descr) {?}, ?DescripcionB"=function(descr) {...})) 3) Ejecutas fastgreedy.community fastgreedy.community(udatos.simple) Si tuvieras que usar una relación de pesos más compleja, siempre la puedes indicar explícitamente en la función: fastgreedy.community(udatos.simple, weights = weights.vector) donde weights.vector es es un vector de valores, de tamaño ecount(udatos.simple); un valor por arista. Espero que esto te sea de ayuda y solucione tu problema. Un cordial saludo, Luisfo Chiroque PhD Student IMDEA Networks Institute http://fourier.networks.imdea.org/people/~luis_nunez/ <http://fourier.networks.imdea.org/people/~luis_nunez/>> El 1 abr 2016, a las 15:13, Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com> escribió: > > Estimado Luisfo Chiroque > > Hay aristas múltiples, eso es por la preparación de los datos, es que separe por componentes, no me refiero al término componente estadístico, sino a descomposición de algo en los componentes que lo construyen, algunos son comunes y otros no, cuándo son comunes hay una relación en la red. > > Voy a probar con simplify, cuándo lo leí yo lo descarté, lo releeré, ¿Qué opina de usar weighted=TRUE?, ¿Esto contaría las aristas duplicadas simplificando en un peso o el enfoque es diferente? > > Javier Rubén Marcuzzi > > De: Luisfo Chiroque <mailto:luisfo89 en yahoo.es> > Enviado: viernes, 1 de abril de 2016 2:59 > Para: Javier Marcuzzi <mailto:javier.ruben.marcuzzi en gmail.com> > CC: r-help-es en r-project.org <mailto:r-help-es en r-project.org> > Asunto: Re: [R-es] R igraph > > Estimado Javier, > > En mensaje de error la función se queja de que sólo funciona con grafos sin aristas multiples. > Seguramente haya más de una arista entre algún par de nodos. > Esto, se puede solucionar usando simplify() > fastgreedy.community(simplify(udatos)) > No sé qué implicaciones tendrá en cuanto al resultado que saque. Depende de la importancia de las aristas múltiples en lo que estés haciendo. > En cualquier caso, si te interesara, creo que a simplify se le puede añadir la forma en la que quieres que te ?combine? las aristas cuando son múltiples. > > Espero que te sirva. > > Un saludo, > Luisfo > > > > El 1 abr 2016, a las 1:31, Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com> escribió: > > > > Estimados > > > > Copio un mensaje de error que da igraph, es más fácil verlo que explicarlo. > > > >> fastgreedy.community(udatos) > > Error in .Call("R_igraph_community_fastgreedy", graph, as.logical(merges), : > > At fast_community.c:553 : fast-greedy community finding works only on graphs without multiple edges, Invalid value > >> cluster_louvain(udatos) > > IGRAPH clustering multi level, groups: 7, mod: 0.26 > > + groups: > > $`1` > > [1] "Ficha 1127" "Ficha 1309" "Ficha 1530" "Ficha 603" "mes 2" > > > > Los datos están de esta forma: (udatos son los mismos pero - udatos <-as.undirected(datos.network)) > >> head(get.data.frame(dIgraph.network)) > > from to Descripcion A Descripcion B Relacion > > 1 Ficha 1022 mes 10 Ficha Mes Ficha Mes > > 2 Ficha 1024 mes 8 Ficha Mes Ficha Mes > > 3 Ficha 1028 mes 2 Ficha Mes Ficha Mes > > ? > > > > Esperando que sea entendible mi correo, ¿Dónde tendré el problema? ¿En la preparación de los datos? > > Desde ya, gracias. > > > > Javier Rubén Marcuzzi > > > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es[[alternative HTML version deleted]]
Estimado Luisfo Chiroque Muchas, gracias, creo que lo entendí, en estos momentos no puedo probarlo como para decir "ya está". Para comentarle, desconozco si fastgreedy es la función que necesito, pero como mi objetivo es realizar un gráfico donde agrupo elementos que están relacionados, tendré mucha prueba y error hasta que encuentre una forma entendible visualmente para los no estadísticos, y con números estadísticos que avalen esas relaciones y agrupaciones. Muchas gracias Javier Rubén Marcuzzi El 1 de abril de 2016, 10:03, Luisfo Chiroque <luisfo89 en yahoo.es> escribió:> Estimado Javier, > > El problema de simplify es que no sabe cómo mezclar las aristas a no ser > que se lo indiques explícitamente. > No sé si por defecto se quedará con la primera o la última arista. > En cualquier caso, como parece que para tu objetivo esto es algo crítico, > tiene remedio. > Tú sólo quieres calcular fastgreedey.community pero teniendo en cuenta si > existen más de una arista entre dos nodos. Esta función tiene en cuenta los > pesos si existe una variable ?weight?. > 1) Añade una variable weight a tu grafo, a todas las aristas, con peso 1 > E(udatos)$weight <- 1 > 2) Simplifica el grafo. Por defecto, simplify suma las variables weight, > si existen. > udatos.simple <- simplify(udatos, edge.attr.comb = list(weight="sum?)) > Pero puedes añadir la función que quieras: > udatos.simple <- simplify(udatos, edge.attr.comb = list(weight=function(w) > {1 / sum(w)} )) > Dependiendo de si quieres dar un efecto positivo o negativo al hecho de > que hayan más de una arista entre dos nodos. > De igual forma, podrías añadir funciones específicas para que simplify > sepa cómo combinar atributos de aristas repetidas: > udatos.simple <- simplify(udatos, edge.attr.comb = list(weight="sum", > "Descripcion A"=function(descr) {?}, ?DescripcionB"=function(descr) {...})) > 3) Ejecutas fastgreedy.community > fastgreedy.community(udatos.simple) > Si tuvieras que usar una relación de pesos más compleja, siempre la puedes > indicar explícitamente en la función: > fastgreedy.community(udatos.simple, weights = weights.vector) > donde weights.vector es es un vector de valores, de tamaño > ecount(udatos.simple); un valor por arista. > > Espero que esto te sea de ayuda y solucione tu problema. > > Un cordial saludo, > > Luisfo Chiroque > > PhD Student > IMDEA Networks Institute > > http://fourier.networks.imdea.org/people/~luis_nunez/ > > > El 1 abr 2016, a las 15:13, Javier Marcuzzi < > javier.ruben.marcuzzi en gmail.com> escribió: > > Estimado Luisfo Chiroque > > Hay aristas múltiples, eso es por la preparación de los datos, es que > separe por componentes, no me refiero al término componente estadístico, > sino a descomposición de algo en los componentes que lo construyen, algunos > son comunes y otros no, cuándo son comunes hay una relación en la red. > > Voy a probar con simplify, cuándo lo leí yo lo descarté, lo releeré, ¿Qué > opina de usar weighted=TRUE?, ¿Esto contaría las aristas duplicadas > simplificando en un peso o el enfoque es diferente? > > Javier Rubén Marcuzzi > > *De: *Luisfo Chiroque <luisfo89 en yahoo.es> > *Enviado: *viernes, 1 de abril de 2016 2:59 > *Para: *Javier Marcuzzi <javier.ruben.marcuzzi en gmail.com> > *CC: *r-help-es en r-project.org > *Asunto: *Re: [R-es] R igraph > > Estimado Javier, > > En mensaje de error la función se queja de que sólo funciona con grafos > sin aristas multiples. > Seguramente haya más de una arista entre algún par de nodos. > Esto, se puede solucionar usando simplify() > fastgreedy.community(simplify(udatos)) > No sé qué implicaciones tendrá en cuanto al resultado que saque. Depende > de la importancia de las aristas múltiples en lo que estés haciendo. > En cualquier caso, si te interesara, creo que a simplify se le puede > añadir la forma en la que quieres que te ?combine? las aristas cuando son > múltiples. > > Espero que te sirva. > > Un saludo, > Luisfo > > > > El 1 abr 2016, a las 1:31, Javier Marcuzzi < > javier.ruben.marcuzzi en gmail.com> escribió: > > > > Estimados > > > > Copio un mensaje de error que da igraph, es más fácil verlo que > explicarlo. > > > >> fastgreedy.community(udatos) > > Error in .Call("R_igraph_community_fastgreedy", graph, > as.logical(merges), : > > At fast_community.c:553 : fast-greedy community finding works only on > graphs without multiple edges, Invalid value > >> cluster_louvain(udatos) > > IGRAPH clustering multi level, groups: 7, mod: 0.26 > > + groups: > > $`1` > > [1] "Ficha 1127" "Ficha 1309" "Ficha > 1530" "Ficha 603" "mes > 2" > > > > Los datos están de esta forma: (udatos son los mismos pero - udatos > <-as.undirected(datos.network)) > >> head(get.data.frame(dIgraph.network)) > > from to Descripcion A > Descripcion B Relacion > > 1 Ficha 1022 mes 10 Ficha Mes > Ficha Mes > > 2 Ficha 1024 mes 8 Ficha Mes > Ficha Mes > > 3 Ficha 1028 mes 2 Ficha Mes > Ficha Mes > > ? > > > > Esperando que sea entendible mi correo, ¿Dónde tendré el problema? ¿En > la preparación de los datos? > > Desde ya, gracias. > > > > Javier Rubén Marcuzzi > > > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > >[[alternative HTML version deleted]]