The main reason why
After all, I am still an Internal Auditor. Therefore I often face one of the typical internal auditors problems: understand links between people and companies, in order to discover the existence of hidden communities that could expose the company to unknown risks.
the solution: linker
In order to address this problem I am developing Linker, a lean shiny app that take 1 to 1 links as an input and gives as output a network map:
Linker is packed with a demo network, but you can easily load your dataset following the tutorial below.
how to use linker ( and some code specs)
the one that follow is a tutorial with some focus on code, if you are interested in giving a look to the full reprocudibile Rstudio project, I make it available at the end of the post.
Linker is only able to read .csv datasets, structured as “hedge-to-hedge” tables.
This mean you will have to create a two-column table, having on each row a link.
For instance, suppose A is linked with B, C is linked with A and B is linked with D; this will be your dataset:
be sure to set “;” as a separator in your .csv file.
using the ‘load file’ control you can choose the dataset to load.
Linker leverages the great features builted in the linkComm package by Alex T. Kalinka and Alain Guenoche .
Therefore, the first step required is to create a linkComm object, containing the network map and informations about founded communities.
This object is obtained through the getLinksCommunities() function. This function takes your dataset as an input and, applying a clustering method, gives as an output the network map aggregated by community.
links_graph <- getLinkCommunities(links_file(),hcmethod="mcquitty", use.all.edges = TRUE)
just note that:
- Linker use as hierarchical clustering method the mcquitty method. There are other clustering methods available. just type ?getLinkCommunities() in your console to discover them;
- the parameter use.all.edges is set to TRUE in order to show in the network all member of your networks.
Plotting the map
as soon as Linker creates the getLinkCommunities object, it will return, in the”network map” area, a visual representation of your network.
the default graph is the spencer circle, a graph developed by Rob Spencer starting from a 2010 paper by Yong-Yeol Ahn , James P. Bagrow and Sune Lehmann .
If you prefer, you can change the graphing layout to circle.
I think this second way is a bit more clearer, even if is not as impacting as the Spencer Circle.
highligthing most relevant subjects
not all the subjects in your network have got the same relevance. If you want to focus just on the most influent subjects, you can use the “number of communities” option.
This option lets you focus on subjects being part of at least n communities, starting from one to infinite.
the option uses the shownodesin argument
shownodesin = input$"n_input"
focusing on a single community
If you want to focus on a single community, you can just type the community id into the ‘community to focus on’.
Community’s id are printed around the circle in the spencer circle layout.
these option is builted using the clusterids argumenti within the plot function:
clusterids = c(as.numeric(input$selected_communities))
export your map
this is not actually a feature created within the application, but could be better described as a trick:
if you want to export your map, just right-click on the map and select “save image”.
the Rstudio Project.
to download the full project, just click the button below.
If you found Linker useful, you may be interested in other Shiny Apps I developed for analytics and productivity purposes. Find them out at software page