robin

ROBustness in Network


License
MIT

Documentation

robin

Available on CRAN https://CRAN.R-project.org/package=robin



ROBIN (ROBustness In Network) is an R package for the validation of community detection. It has a double aim: it studies the robustness of a community detection algorithm and it compares the robustness of two community detection algorithms.

The package implements a methodology that detects if the community structure found by a detection algorithm is statistically significant or is a result of chance, merely due to edge positions in the network.

The package:
  1. Examine the robustness of a community detection algorithm against random perturbations of the original graph

  2. Tests the statistical difference between the stability measure curves created

  3. Makes a comparison between different community detection algorithms to choose the one that better fits the network of interest

  4. Gives a graphical interactive representation


Example 1: "Robustness of a community detection algorithm"

my_network <- system.file("example/football.gml", package="robin")
graph <- prepGraph(file=my_network, file.format="gml")
graphRandom <- random(graph=graph)
proc <- robinRobust(graph=graph, graphRandom=graphRandom, measure="vi", 
                  method="louvain", type="independent")               
plotRobin(graph=graph, model1=proc$Mean, model2=proc$MeanRandom, 
legend=c("real data", "null model"), measure="vi")

#For the testing:
robinFDATest(graph=graph, model1=proc$Mean, model2=proc$MeanRandom, 
             measure="vi")
robinGPTest(model1=proc$Mean, model2=proc$MeanRandom)

Example 2: "Comparison of two community detection algorithms"

my_network <- system.file("example/football.gml", package="robin")
graph <- prepGraph(file=my_network, file.format="gml")
comp <- robinCompare(graph=graph, method1="fastGreedy",
                method2="louvain", measure="vi", type="independent")                
plotRobin(graph=graph, model1=comp$Mean1, model2=comp$Mean2, measure="vi", 
legend=c("fastGreedy", "louvain"), title="FastGreedy vs Louvain")

In this example, the Louvain algorithm fits better the network of interest, as the curve of the stability measure varies less than the one obtained by the Fast greedy method.
#For the testing:
robinFDATest(graph=graph, model1=comp$Mean1, model2=comp$Mean2, measure="vi")
robinGPTest(model1=comp$Mean1, model2=comp$Mean2)

License

Copyright (c) 2019 V. Policastro, A. Carissimo, L. Cutillo, I. De Feis and D. Righelli.