Take Home Ex3: VAST Challenge 2024 Mini-Challenge 3

Author

Kristine Joy Paas

Published

May 22, 2024

Modified

June 13, 2024

1 Overview

In this exercise, we will be tacking Mini-case 3 of VAST Challenge 2024.

We will answer Questions 3 and 4 from the mini-challenge:

  1. Develop a visual approach to examine inferences. Infer how the influence of a company changes through time. Can you infer ownership or influence that a network may have?

  2. Identify the network associated with SouthSeafood Express Corp and visualize how this network and competing businesses change as a result of their illegal fishing behavior. Which companies benefited from SouthSeafood Express Corp legal troubles? Are there other suspicious transactions that may be related to illegal fishing? Provide visual evidence for your conclusions.

If you want to skip through all the exploration and go straight to the answer, go to 9 Mini-Challenge 3.

1.1 The data

We will use the dataset provided by VAST Challenge. It is a network data that contains nodes that represent the different entities in the fishing business industry, and edges which represent the relationships between different entities.

1.2 Methodology

To answer this questions, we will investigate the changes in the fishing business community through time. We will do this by creating animations of the network through time.

Unfortunately, animations cannot be generated due to the limitations of compatibility of plotly and gganimate with ggraph.

See 5.3 Animations for details.

Secondly, we will identify the influential entities in the network. We will do this by first visually inspecting the network and making inferences.

Lastly, we will use measures of centrality to verify our inferences.

For the purposes of this exercise we will define 2 types of influential entity:

  • Power holders - Those who hold the most power and beneficiary of resources in the network. We will use pagerank centrality to identify power holders.

  • Power brokers - Those who facilitate the transfer of power/resources from a less powerful entity to another. We will use betweenness centrality to identify power brokers.

2 Setup

2.1 Loading Packages

Utility Tools

Graphing Tools

  • patchwork - For combining ggplot plots

  • ggraph - For plotting network data

  • tidygraph - For graph manipulations

  • igraph - Contains functions for network analysis

  • ggiraph - Interactive plots

pacman::p_load(
  jsonlite,
  tidyverse,
  ggtext,
  knitr,
  lubridate,
  patchwork,
  ggraph,
  tidygraph,
  igraph,
  ggiraph
)

2.2 Loading Data

mc3_data <- fromJSON("data/mc3.json")
glimpse(mc3_data)
List of 5
 $ directed  : logi TRUE
 $ multigraph: logi TRUE
 $ graph     : Named list()
 $ nodes     :'data.frame': 60520 obs. of  15 variables:
  ..$ type             : chr [1:60520] "Entity.Organization.Company" "Entity.Organization.Company" "Entity.Organization.Company" "Entity.Organization.Company" ...
  ..$ country          : chr [1:60520] "Uziland" "Mawalara" "Uzifrica" "Islavaragon" ...
  ..$ ProductServices  : chr [1:60520] "Unknown" "Furniture and home accessories" "Food products" "Unknown" ...
  ..$ PointOfContact   : chr [1:60520] "Rebecca Lewis" "Michael Lopez" "Steven Robertson" "Anthony Wyatt" ...
  ..$ HeadOfOrg        : chr [1:60520] "Émilie-Susan Benoit" "Honoré Lemoine" "Jules Labbé" "Dr. Víctor Hurtado" ...
  ..$ founding_date    : chr [1:60520] "1954-04-24T00:00:00" "2009-06-12T00:00:00" "2029-12-15T00:00:00" "1972-02-16T00:00:00" ...
  ..$ revenue          : num [1:60520] 5995 71767 0 0 4747 ...
  ..$ TradeDescription : chr [1:60520] "Unknown" "Abbott-Gomez is a leading manufacturer and supplier of high-quality furniture and home accessories, catering to"| __truncated__ "Abbott-Harrison is a leading manufacturer of high-quality food products, including baked goods, snacks, and bev"| __truncated__ "Unknown" ...
  ..$ _last_edited_by  : chr [1:60520] "Pelagia Alethea Mordoch" "Pelagia Alethea Mordoch" "Pelagia Alethea Mordoch" "Pelagia Alethea Mordoch" ...
  ..$ _last_edited_date: chr [1:60520] "2035-01-01T00:00:00" "2035-01-01T00:00:00" "2035-01-01T00:00:00" "2035-01-01T00:00:00" ...
  ..$ _date_added      : chr [1:60520] "2035-01-01T00:00:00" "2035-01-01T00:00:00" "2035-01-01T00:00:00" "2035-01-01T00:00:00" ...
  ..$ _raw_source      : chr [1:60520] "Existing Corporate Structure Data" "Existing Corporate Structure Data" "Existing Corporate Structure Data" "Existing Corporate Structure Data" ...
  ..$ _algorithm       : chr [1:60520] "Automatic Import" "Automatic Import" "Automatic Import" "Automatic Import" ...
  ..$ id               : chr [1:60520] "Abbott, Mcbride and Edwards" "Abbott-Gomez" "Abbott-Harrison" "Abbott-Ibarra" ...
  ..$ dob              : chr [1:60520] NA NA NA NA ...
 $ links     :'data.frame': 75817 obs. of  11 variables:
  ..$ start_date       : chr [1:75817] "2016-10-29T00:00:00" "2035-06-03T00:00:00" "2028-11-20T00:00:00" "2024-09-04T00:00:00" ...
  ..$ type             : chr [1:75817] "Event.Owns.Shareholdership" "Event.Owns.Shareholdership" "Event.Owns.Shareholdership" "Event.Owns.Shareholdership" ...
  ..$ _last_edited_by  : chr [1:75817] "Pelagia Alethea Mordoch" "Niklaus Oberon" "Pelagia Alethea Mordoch" "Pelagia Alethea Mordoch" ...
  ..$ _last_edited_date: chr [1:75817] "2035-01-01T00:00:00" "2035-07-15T00:00:00" "2035-01-01T00:00:00" "2035-01-01T00:00:00" ...
  ..$ _date_added      : chr [1:75817] "2035-01-01T00:00:00" "2035-07-15T00:00:00" "2035-01-01T00:00:00" "2035-01-01T00:00:00" ...
  ..$ _raw_source      : chr [1:75817] "Existing Corporate Structure Data" "Oceanus Corporations Monthly - Jun '35" "Existing Corporate Structure Data" "Existing Corporate Structure Data" ...
  ..$ _algorithm       : chr [1:75817] "Automatic Import" "Manual Entry" "Automatic Import" "Automatic Import" ...
  ..$ source           : chr [1:75817] "Avery Inc" "Berger-Hayes" "Bowers Group" "Bowman-Howe" ...
  ..$ target           : chr [1:75817] "Allen, Nichols and Thompson" "Jensen, Morris and Downs" "Barnett Inc" "Bennett Ltd" ...
  ..$ key              : int [1:75817] 0 0 0 0 0 0 0 0 0 0 ...
  ..$ end_date         : chr [1:75817] NA NA NA NA ...

It contains graph data, where nodes can be accessed via nodes and edges via links. This dataset has a lot of columns but we will only filter the relevant data during wrangling..

2.3. Defining common variables

We will also set some values to have consistency throughout all graphs. This is also so that we only need to change them in one place

We are going to define styles for plotting our different kind of graphs. This is to provide consistency and reduce mistakes when changing how plots are rendered.

STYLES = list(
  font_family = "Roboto Condensed",
  # Colors
  primary_color = "blue",
  #primary_light_color = "#e6e6ff",
  primary_light_color = "white",
  secondary_color = "darkorange",
  secondary_light_color = "white",
  muted_color = "grey50",
  title_color = "grey25",
  normal_text_color = "grey50",
  # Graph
  node_size = 7.5,
  node_border_color = "grey50",
  node_border_stroke = 0.5,
  node_emphasized_border_color = "black",
  node_emphasized_border_stroke = 1,
  arrow_margin = 3.2,
  arrow_style = arrow(type = "closed", length = unit(2, "pt")),
  base_edge_thickness = 0.2,
  # Panel
  panel_border_color = "grey50",
  panel_border_thickness = 0.5,
  # Texts
  node_label_size = 2,
  node_label_dark = "black",
  node_label_light = "white",

  default_caption = "Hover on the nodes to see more details.",
  # Interactive elemnents
  tooltip_css = paste0(
    "background-color:black;color:white;",
    "font-family:Roboto Condensed;font-size:10pt;",
    "padding:4px;text-align:center;"
  ),
  svg_width = 6,
  svg_height = 6 * 0.618
)

Common theme elements, another theme() definition can be used if these elements need to be overridden.

COMMON_THEME = theme(
  text = element_text(family = STYLES$font_family, color = STYLES$normal_text_color),
  plot.title = element_markdown(
    color = STYLES$title_color,
    face = "bold",
    size = unit(10, "pt")
  ),
  plot.subtitle = element_markdown(size = unit(8, "pt")),
  plot.caption = element_markdown(size = unit(6, "pt"), hjust = 0),
  plot.margin = margin(2, 0, 0, 0, unit = "pt"),
  
  # Legend styles
  legend.position = "right",
  legend.location = "plot",
  legend.justification = "top",
  legend.title = element_markdown(
    color = STYLES$title_color,
    face = "bold",
    size = unit(8, "pt")
  ),
  legend.text = element_text(size = unit(6, "pt"), vjust = 0.5),
  legend.box.spacing = unit(4, "pt"),
  legend.margin = margin(0),
  legend.spacing.x = unit(2, "pt"),
  legend.spacing.y = unit(8, "pt"),
  legend.key.size = unit(12, "pt"),
  
  panel.border = element_rect(
    color = STYLES$panel_border_color,
    fill = NA,
    linewidth = STYLES$panel_border_thickness
  )
)
MAPPINGS = list(
  # Available shapes: https://www.datanovia.com/en/blog/ggplot-point-shapes-best-tips/
  node_supertype_to_shape = c(
    "Person" = 24, # Triangle
    "Organization" = 21 # Circle
  ),
  # Color schemes
  # Colorblind pallettes from https://davidmathlogic.com/colorblind
  node_subtype_to_color = c(
    "Person" = "#44AA99",
    "CEO" = "#117733",
    "Company" = "#DDCC77",
    "FishingCompany" = "#88CCEE",
    "LogisticsCompany" = "#332288",
    "FinancialCompany" = "#AA4499",
    "NGO" = "#CC6677",
    "NewsCompany" = "#882255"
  ),
  edge_relationship_subtype_to_color = c(
    "WorksFor" = "#D81B60",
    "Shareholdership" = "#FFC107",
    "BeneficialOwnership" = "#004D40",
    "FamilyRelationship" = "#1E88E5"
  ),
  edge_power_subtype_to_color = c(
    "WorksFor" = "#D81B60",
    "HasShareholder" = "#FFC107",
    "OwnedBy" = "#004D40",
    "FamilyRelationship" = "#1E88E5"
  )
)
CONFIGS = list(
  default_seed = 4231 # For reproduceability
)

3 Data Wrangling

3.1 Extracting Graph Elements

We need to do time and network analysis so we will only include the columns needed to do these analysis.

The nodes represent the entities in the network. They can be people or companies.

mc3_nodes_raw <- as_tibble(mc3_data$nodes)
glimpse(mc3_nodes_raw)
Rows: 60,520
Columns: 15
$ type                <chr> "Entity.Organization.Company", "Entity.Organizatio…
$ country             <chr> "Uziland", "Mawalara", "Uzifrica", "Islavaragon", …
$ ProductServices     <chr> "Unknown", "Furniture and home accessories", "Food…
$ PointOfContact      <chr> "Rebecca Lewis", "Michael Lopez", "Steven Robertso…
$ HeadOfOrg           <chr> "Émilie-Susan Benoit", "Honoré Lemoine", "Jules La…
$ founding_date       <chr> "1954-04-24T00:00:00", "2009-06-12T00:00:00", "202…
$ revenue             <dbl> 5994.73, 71766.67, 0.00, 0.00, 4746.67, 46566.67, …
$ TradeDescription    <chr> "Unknown", "Abbott-Gomez is a leading manufacturer…
$ `_last_edited_by`   <chr> "Pelagia Alethea Mordoch", "Pelagia Alethea Mordoc…
$ `_last_edited_date` <chr> "2035-01-01T00:00:00", "2035-01-01T00:00:00", "203…
$ `_date_added`       <chr> "2035-01-01T00:00:00", "2035-01-01T00:00:00", "203…
$ `_raw_source`       <chr> "Existing Corporate Structure Data", "Existing Cor…
$ `_algorithm`        <chr> "Automatic Import", "Automatic Import", "Automatic…
$ id                  <chr> "Abbott, Mcbride and Edwards", "Abbott-Gomez", "Ab…
$ dob                 <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…

We will only retain the following columns:

  • id - to serve as the identifier for the node

  • type - to differentiate people from companies in the graph.

mc3_nodes_lite <- mc3_nodes_raw %>% select(id, type)

The edges represent the relationship between different nodes.

mc3_edges_raw <- as_tibble(mc3_data$links)
glimpse(mc3_edges_raw)
Rows: 75,817
Columns: 11
$ start_date          <chr> "2016-10-29T00:00:00", "2035-06-03T00:00:00", "202…
$ type                <chr> "Event.Owns.Shareholdership", "Event.Owns.Sharehol…
$ `_last_edited_by`   <chr> "Pelagia Alethea Mordoch", "Niklaus Oberon", "Pela…
$ `_last_edited_date` <chr> "2035-01-01T00:00:00", "2035-07-15T00:00:00", "203…
$ `_date_added`       <chr> "2035-01-01T00:00:00", "2035-07-15T00:00:00", "203…
$ `_raw_source`       <chr> "Existing Corporate Structure Data", "Oceanus Corp…
$ `_algorithm`        <chr> "Automatic Import", "Manual Entry", "Automatic Imp…
$ source              <chr> "Avery Inc", "Berger-Hayes", "Bowers Group", "Bowm…
$ target              <chr> "Allen, Nichols and Thompson", "Jensen, Morris and…
$ key                 <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
$ end_date            <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…

We will only retain the following columns:

  • source - to identify the actor of the relationship, corresponds to id in nodes.

  • target - to identify the receiver of the relationship, corresponds to id in nodes.

  • type - to identify the type of the relationship

  • start_date - to identify when the relationship started

  • end_date - to identify when the relationship ended

mc3_edges_lite <- mc3_edges_raw %>% select(source, target, type, start_date, end_date)

3.2 Closer look at type

Both the nodes and edges have type which contains the type of the nodes and edges. We will assign a supertype and a subtype from type.

(mc3_nodes_lite$type) %>% unique()
[1] "Entity.Organization.Company"         
[2] "Entity.Organization.LogisticsCompany"
[3] "Entity.Organization.FishingCompany"  
[4] "Entity.Organization.FinancialCompany"
[5] "Entity.Organization.NewsCompany"     
[6] "Entity.Organization.NGO"             
[7] "Entity.Person"                       
[8] "Entity.Person.CEO"                   

supertype - type of entity, either Person or Organization

subtype - subcategory of supertype, e.g., Company, FishingCompany, CEO

(mc3_edges_lite$type) %>% unique()
[1] "Event.Owns.Shareholdership"      "Event.Owns.BeneficialOwnership" 
[3] "Event.WorksFor"                  "Relationship.FamilyRelationship"

supertype - type of relationship, either Ownership, Employment, Relationship.

subtype - subcategory of supertype, e.g., Shareholdership, BeneficialOwnership, FamilyRelationship

3.3 Preparing the data

With the considerations above, we will shape the data needed for our graph visualization.

For nodes, we will also assign a shape for visualization depending on supertype. For people, we will use 📐, while we use 🔴 for organizations.

Lastly, we will assign alias to each node as an alternative label to the names (as they are long). This will be generated using the first 4 initials of the name

to_initials <- function(name) {
  strsplit(name, "[^[:alnum:]]")[[1]] %>%  # Split when non-alphanumeric
    substr(1, 1) %>% # Get first letter
    paste0(collapse = "") %>%
    substr(1, 4) # Get first 4 letters only as some names are still too long
}
mc3_nodes_clean <- mc3_nodes_lite %>%
  mutate(
    name = id,
    alias = sapply(name, to_initials),
    supertype = strsplit(type, ".", fixed=TRUE) %>% sapply('[', 2),
    # Get the last type as subtype. In the case of Entity.Person,
    # both supertype and subtype are "Person".
    subtype = strsplit(type, ".", fixed=TRUE) %>% sapply(tail, n=1)
    # Names are long so will create alias from initials of name for display in graph
  ) %>%
  select(name, alias, supertype, subtype)

kable(head(mc3_nodes_clean))
name alias supertype subtype
Abbott, Mcbride and Edwards AMaE Organization Company
Abbott-Gomez AG Organization Company
Abbott-Harrison AH Organization Company
Abbott-Ibarra AI Organization Company
Abbott-Sullivan AS Organization Company
Acevedo and Sons AaS Organization Company

Let’s also check if supertype, subtype, have been mapped correctly.

mc3_nodes_clean %>%
  group_by(supertype, subtype) %>%
  summarize(count = n()) %>%
  arrange(-count) %>%
  kable()
supertype subtype count
Person Person 50356
Organization Company 7927
Person CEO 1293
Organization FishingCompany 600
Organization LogisticsCompany 311
Organization FinancialCompany 23
Organization NGO 5
Organization NewsCompany 5

For ggraph to plot the edges correctly, we need to assigns weights to the edges. For simplicity, let us assign the number of edges with the same source, target and type.

Lastly, we will change source and target to from and to, respectively for compatibility with network functions we will use.

mc3_edges_clean <- mc3_edges_lite %>%
  rename(from = source, to = target, ) %>%
  mutate(
    supertype = ifelse(
      grepl("Event.Owns", type),
      "Ownership",
      ifelse(grepl("Relationship", type), "Relationship", "Employment")
    ),
    subtype = strsplit(type, ".", fixed = TRUE) %>% sapply(tail, n = 1),
    # Convert date strings to datetime
    start_date = as_datetime(start_date),
    end_date = as_datetime(end_date)
  ) %>%
  filter(from != to) %>%
  group_by(from, to, supertype, subtype, start_date, end_date) %>%
  summarize(weight = n())

kable(head(mc3_edges_clean))
from to supertype subtype start_date end_date weight
4. SeaCargo Ges.m.b.H. Dry CreekRybachit Marine A/S Ownership Shareholdership 2034-12-31 NA 1
4. SeaCargo Ges.m.b.H. KambalaSea Freight Inc Ownership Shareholdership 2033-04-12 NA 1
9. RiverLine CJSC SumacAmerica Transport GmbH & Co. KG Ownership Shareholdership 2028-12-02 NA 1
Aaron Acosta Manning-Pratt Employment WorksFor 2008-07-30 NA 1
Aaron Acosta Manning-Pratt Ownership Shareholdership 2008-09-14 NA 1
Aaron Allen Hicks-Calderon Ownership BeneficialOwnership 2025-03-06 NA 1

Lastly, let’s check if type has been mapped correctly to supertype and subtype.

mc3_edges_clean %>%
  group_by(supertype, subtype) %>%
  summarize(count = n()) %>%
  arrange(-count) %>%
  kable()
supertype subtype count
Ownership Shareholdership 39378
Ownership BeneficialOwnership 21529
Employment WorksFor 14817
Relationship FamilyRelationship 91

3.4 Preparing the supernetwork

We will prepare the supernetwork from the nodes and edges we prepared.

supernetwork = tbl_graph(edges = mc3_edges_clean,
                             nodes = mc3_nodes_clean,
                             directed = TRUE)

We call this a supernetwork as this covers the entire network of entities within the fishing business community.

4 Extracting subnetworks

4.1 Extracting for ease of analysis

As the supernetwork is very large, we will need to extract part of it to perform analysis effectively. To do this, we will need to extract subnetworks from this bigger network.

We will extract subnetworks based on distance from a given node. By default, we will get the network of all connected nodes to the reference node.

We will use the following functions:

  • ego() from igraph to get a list of nodes within a given distance from the given node

  • induced_subgraph() to extract the subgraph containing only the nodes from the result of ego(). This will return an igraph type.

  • as_data_frame() to extract the nodes and edges so we can generate a tbl_graph which is compatible to both igraph and ggraph functions.

extract_subnetwork <- function(graph, node_name, distance=NULL) {
  node <- which(V(graph)$name == node_name)
  distance <- ifelse(is.null(distance), length(graph), distance)
  vertices <- ego(graph, nodes = node, order = distance)[[1]]
  igraph_subgraph <- induced_subgraph(graph, vids = vertices)
  nodes_df <- as_data_frame(igraph_subgraph, what = "vertices")
  edges_sf <- as_data_frame(igraph_subgraph, what = "edges")
  tbl_graph(nodes=nodes_df, edges=edges_sf, directed=is_directed(graph))
}

4.2 Plotting the subnetworks

To demonstrate what this function does, we will look at 3 subnetworks related to SouthSeafood Express Corp.

  1. Direct neighbors - They have the strongest influence on and can be influenced the most by SouthSeafood Express Corp.
  2. Sphere of influence - Based on Nicholas A. Christakis and James H. Fowler’s theory of Three Degrees of Influence, which states that that influence gradually dissipates and eventually cease to be notable beyond the 3rd degree of separation. This contains the nodes where SouthSeafood Express Corp have notable influence.
  3. Connected network - We will look at the entire network containing the nodes that are connected to SouthSeafood Express Corp in any way.

We will use plot_fishing_relationships() to plot the relationship graph of the network.

Show the code for plot_fishing_relationships()
plot_fishing_relationships <- function(graph,
                                       # Name of nodes to emphasize
                                       emphasize_nodes = c(),
                                       # Date where to get the snapshot
                                       datestring = NULL,
                                       # Layout options
                                       layout = "nicely",
                                       circular = FALSE,
                                       # Texts
                                       title = NULL,
                                       subtitle = NULL,
                                       caption = STYLES$default_caption,
                                       # Plot styling
                                       node_size = STYLES$node_size,
                                       arrow_margin = STYLES$arrow_margin,
                                       # Seed
                                       seed_num = CONFIGS$default_seed) {
  set.seed(seed_num)
  
  date <- NULL
  if(!is.null(datestring)) { date <- as_date(datestring) }
  nodes <- as_data_frame(graph, what = "vertices")
  
  g <- ggraph(graph, layout = layout, circular = circular) +
    # Render nodes
    geom_point_interactive(
      aes(
        x = x,
        y = y,
        data_id = name,
        tooltip = sprintf("%s<br/>(%s)", name, subtype),
        fill = subtype,
        # To show people as triangle, organizations as circle
        # See scale_shape_manual code below
        shape = supertype,
      ),
      size = node_size,
      # Thicken border if emphasized
      color = ifelse(
        nodes$name %in% emphasize_nodes,
        STYLES$node_emphasized_border_color,
        STYLES$node_border_color
      ),
      stroke = ifelse(
        nodes$name %in% emphasize_nodes,
        STYLES$node_emphasized_border_stroke,
        STYLES$node_border_stroke
      ),
    ) +
    geom_node_text(
      aes(label = alias),
      family = STYLES$font_family,
      size = STYLES$node_label_size,
      color = STYLES$node_label_light,
      fontface = ifelse(nodes$name %in% emphasize_nodes, "bold", "plain"),
    ) +
    
    # Render edges. Use geom_edge fan so edges along the same path don't overlap
    geom_edge_fan(
      aes(
        color = subtype,
        # Will identify if the edge is active at this date, if not do not display
        # Ideally this should be in a function but I can't figure out how to make it work inside aes
        # Logic is same as is extract_network_snapshot.R
        filter = ifelse(is.null(date) | is.na(start_date), TRUE,
          ifelse(start_date <= date & (is.na(end_date) | end_date > date),
                 TRUE,
                 FALSE
                 )
        )
      ),
      strength = 0.5,
      arrow = STYLES$arrow_style,
      end_cap = circle(arrow_margin, "mm"),
      start_cap = circle(arrow_margin, "mm"),
      alpha = 0.8
    ) +
    scale_shape_manual(values = MAPPINGS$node_supertype_to_shape) +
    scale_fill_manual(values = MAPPINGS$node_subtype_to_color) +
    scale_edge_color_manual(values = MAPPINGS$edge_relationship_subtype_to_color) +
    
    # Change legend names
    labs(shape = "Node Supertypes",
         fill = "Node Subtypes",
         edge_color = "Edge Subtypes") +
    
    # Make sure the plot is not clipped
    scale_x_continuous(expand = expansion(mult = c(0.10, 0.10))) +
    scale_y_continuous(expand = expansion(mult = c(0.10, 0.10))) +
    
    # Style legend keys
    guides(
      shape = guide_legend(
        override.aes = list(size = 3, fill = STYLES$primary_color),
        order = 1
      ),
      fill = guide_legend(
        override.aes = list(
          size = 4,
          shape = 22,
          color = NA
        ),
        order = 2
      ),
      edge_color = guide_legend(order = 3),
    ) +
    
    # Style graph
    unset_graph_style() +
    theme_graph(base_family = STYLES$font_family,
                plot_margin = margin(0)) +
    
    plot_annotation(title = title,
                    subtitle = subtitle,
                    caption = caption) &
    COMMON_THEME
  
  girafe(
    ggobj = g,
    width_svg = STYLES$svg_width,
    height_svg = STYLES$svg_height,
    options = list(opts_tooltip(css = STYLES$tooltip_css))
  )
}

We call this the Relationship Graph as the provided graph shows the different relationships among the different entities.

Later, we will tackle how to generate the Power Graph which will represent the power and flow of resources within the network.

No time component yet

In this part, we just want to make a basic visualization so we can see earlier if we have processed the data appropriate for analysis.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp",
  distance=1
) %>% plot_fishing_relationships(
  emphasize_nodes = c("SouthSeafood Express Corp"),
  layout = "linear",
  circular = TRUE,
  node_size = 12,
  arrow_margin = 5.5,
  title = "Relationship Graph: SouthSeafood Express Corp's Direct Neighbors",
  subtitle = "Two other fishing companies, <span style='color:blue;'>**AguaLeska Transit N.V.**</span> and <span style='color:blue;'>**Tainamarine Fishing Co**</span> hold shares in<br />SouthSeafood Express Corp. They are posed to benefit the most from the company's illegal fishing activities."
)
ATNV SEC TFC Node Supertypes Organization Node Subtypes FishingCompany Edge Subtypes Shareholdership Hover on the nodes to see more details. Two other fishing companies, AguaLeska Transit N.V. and Tainamarine Fishing Co hold shares in SouthSeafood Express Corp. They are posed to benefit the most from the company’s illegal fishing activities. Relationship Graph: SouthSeafood Express Corp’s Direct Neighbors
Insights

As shareholders, AguaLeska Transit N.V. and Tainamarine Fishing Co have big influence on where the resources of SouthSeafood Express Corp go.

In this case, most of it will most likely opposite of the arrow direction, i.e. benefiting the shareholders.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp",
  distance=3
) %>% plot_fishing_relationships(
  emphasize_nodes = c(
    "SouthSeafood Express Corp",
    "Tainamarine Fishing Co",
    "AguaLeska Transit N.V.",
    "StichtingMarine Shipping Company",
    "SavanetaCreek Solutions NV",
    "Liam Conti",
    "Fintan Park",
    "Nadia Conti"
    ),
  title = "Relationship Graph: SouthSeafood Express Corp's Sphere of Influence",
  subtitle = "Entities with 3 degrees of separation from **SouthSeafood Express Corp**. This is where the influence of the<br />company is noticeable."
)
ATNV NTL SSN SEC SSC TFC VMS LC NC FP SEA EH Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. Entities with 3 degrees of separation from SouthSeafood Express Corp . This is where the influence of the company is noticeable. Relationship Graph: SouthSeafood Express Corp’s Sphere of Influence
Insights

The network map is comprised mostly of Shareholderships and BenificialOwnerships.

SouthSeafood Express Corp’s shareholders, AguaLeska Transit N.V. and Tainamarine Fishing Co have additional shareholders.

StichtingMarine Shipping Company holds shares in these companies (via other entities). SavanetaCreek Solutions N.V., a Logistics Company, also holds a shareholdership in StichtingMarine Shipping Company. These two nodes serve as resource hubs, gathering resources from the companies in which they hold shares, ultimately benefiting their owners and shareholders.

Moreover, Liam Conti and Fintan Park are the beneficial owners of these companies, giving them final decision-making power and likely the greatest benefits from the network’s resources. Additionally, as a family member of Liam Conti, Nadia Conti may also benefit from Liam’s ownership of these companies.

Intuitively, these five nodes are likely candidates for the most influential entities within the network.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c(
    "SouthSeafood Express Corp",
    "Tainamarine Fishing Co",
    "AguaLeska Transit N.V.",
    "StichtingMarine Shipping Company",
    "SavanetaCreek Solutions NV",
    "Liam Conti",
    "Fintan Park",
    "Nadia Conti"
    ),
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network
Insights

With this sheer number of nodes, it is hard to easily infer any relationships aside from general estimate of how many of each entity and the type of relationships present in the system.

To more easily make inferences about the network, we need to do 2 things:

  • Narrow down the relationships through time so we can make sense of the transactions in the network

  • Use appropriate measures of centrality based on what we have in the 1.2 Methodology

5 Investigating network changes

The plots we generated so far ignored the time component. However, the fishing business network is dynamic and changes through time.

We need to visualize these changes.

5.1 Extracting snapshots

The base of this analysis is to capture a snapshot of a relationship in time.

We will define a 2 functions to enable this:

  • extract this network, which accepts a graph and date of the snapshot.

  • figure out if an edge is active at that point in time

extract_network_snapshot <- function(graph, datestring) {
  date <- as_date(datestring)
  
  graph_nodes = as_data_frame(graph, what = "vertices")
  graph_edges = as_data_frame(graph, what = "edges")
  
  # Assume transition is at 12 AM of given date
  filtered_edges <- graph_edges %>%
    filter(is.na(start_date) | (
      start_date <= date &
        (is.na(end_date) |
           end_date > date)
    ))
  
  tbl_graph(nodes = graph_nodes,
            edges = filtered_edges,
            directed = is_directed(graph))
}
extract_network_snapshot <- source("helpers/extract_network_snapshot.R", local = knitr::knit_global())$value

5.2 Change in SouthSeafood Express Corp network

Let us look at the relationships of SouthSeafood Express Corp.

supernetwork %>%
  as_data_frame(what = "edges") %>%
  filter(from == "SouthSeafood Express Corp" | to == "SouthSeafood Express Corp") %>%
  kable()
from to supertype subtype start_date end_date weight
AguaLeska Transit N.V. SouthSeafood Express Corp Ownership Shareholdership 2033-10-29 2035-05-25 1
Tainamarine Fishing Co SouthSeafood Express Corp Ownership Shareholdership 2035-05-25 NA 1

This indicates a Transfer of Shareholdership from AguaLeska Transit N.V. to Tainamarine Fishing Co on 2035-05-25.

We will visualize relationships based on this date using 2 approaches:

  1. Using extract_network_snapshot() to filter the active edges at that point in time, or
  2. Making use of filter aesthetic in geom_edge_fan to hide the inactive edges

5.2.1 By filtering our edges using extract_network_snapshot()

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>%
  extract_network_snapshot("2035-05-24") %>%
  plot_fishing_relationships(
  emphasize_nodes = c("SouthSeafood Express Corp",
                      "Tainamarine Fishing Co",
                      "AguaLeska Transit N.V.",
                      "StichtingMarine Shipping Company"),
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 24, 2035)",
  subtitle = "This shows the full view of the network around SouthSeafood Express Corp in any way **after** the transfer of<br />shareholdership from <span style='color:blue;'>**AguaLeska Transit N.V.**</span> to <span style='color:blue;'>**Tainamarine Fishing Co**</span>."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network around SouthSeafood Express Corp in any way after the transfer of shareholdership from AguaLeska Transit N.V. to Tainamarine Fishing Co . Relationship Graph: SouthSeafood Express Corp’s Full Network (May 24, 2035)
Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>%
  extract_network_snapshot("2035-05-25") %>%
  plot_fishing_relationships(
  emphasize_nodes = c("SouthSeafood Express Corp",
                      "Tainamarine Fishing Co",
                      "AguaLeska Transit N.V.",
                      "StichtingMarine Shipping Company"),
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 25, 2035)",
  subtitle = "This shows the full view of the network around SouthSeafood Express Corp in any way **after** the transfer of<br />shareholdership from <span style='color:blue;'>**AguaLeska Transit N.V.**</span> to <span style='color:blue;'>**Tainamarine Fishing Co**</span>."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network around SouthSeafood Express Corp in any way after the transfer of shareholdership from AguaLeska Transit N.V. to Tainamarine Fishing Co . Relationship Graph: SouthSeafood Express Corp’s Full Network (May 25, 2035)

This visualization is difficult to compare as the layout changed due to the different edges.

5.2.2 By hiding inactive edges

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>%
  plot_fishing_relationships(
  datestring = "2035-05-24",
  emphasize_nodes = c("SouthSeafood Express Corp",
                      "Tainamarine Fishing Co",
                      "AguaLeska Transit N.V.",
                      "StichtingMarine Shipping Company"),
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 24, 2035)",
  subtitle = "This shows the full view of the network around SouthSeafood Express Corp in any way **before** the transfer of<br />shareholdership from <span style='color:blue;'>**AguaLeska Transit N.V.**</span> to <span style='color:blue;'>**Tainamarine Fishing Co**</span>."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network around SouthSeafood Express Corp in any way before the transfer of shareholdership from AguaLeska Transit N.V. to Tainamarine Fishing Co . Relationship Graph: SouthSeafood Express Corp’s Full Network (May 24, 2035)
Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>%
  plot_fishing_relationships(
  datestring = "2035-05-25",
  emphasize_nodes = c("SouthSeafood Express Corp",
                      "Tainamarine Fishing Co",
                      "AguaLeska Transit N.V.",
                      "StichtingMarine Shipping Company"),
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 25, 2035)",
  subtitle = "This shows the full view of the network around SouthSeafood Express Corp in any way **after** the transfer of<br />shareholdership from <span style='color:blue;'>**AguaLeska Transit N.V.**</span> to <span style='color:blue;'>**Tainamarine Fishing Co**</span>."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network around SouthSeafood Express Corp in any way after the transfer of shareholdership from AguaLeska Transit N.V. to Tainamarine Fishing Co . Relationship Graph: SouthSeafood Express Corp’s Full Network (May 25, 2035)

The layout is intact, making it easier to identify which relationships changed.

Insights

The change of shareholders put SouthSeafood Express Corp farther away (distance of 2 to 4) from StichtingMarine Shipping Company, a company owned by Liam Conti and Fintan Park. This puts StichtingMarine Shipping Company outside of SouthSeafood Express Corp’s sphere of influence.

This can be an effort to distance the owners from SouthSeafood Express Corps illegal activity, especially as it is put under the non-fishing company branch of StichtingMarine Shipping Company (under Namorna Transit Ltd and V. Miesel Shipping).

Decision

We will hide inactive edges so that the nodes don’t move upon re-rendering, and makes it easy to compare.

5.3 Animations

In our 1.2 Methodology, we indicated that we wanted to animate the plot so that we can see how the network changes through time.

However, we encountered issues in animating as the available libraries (plotly and gganimate) do not fully support animations especially with the level of details that our static but interactive plots provide.

For example, plotly cannot translate the ggraph plots with the full detail, especially on the edges. In addition, gganimate does not accept ggraph plots as frames.

As a workaround, we will just use Quatro’s tabset to visualize the changes via tab switches.

6 Generating Power Graph

To figure out who are the most influential or greatest beneficiaries within the network, we have to look at the power dynamics in each relationship.

6.1 Direction

As we want to investigate the flow of power and resources, the direction will be from the less powerful to more powerful entity.

6.2 Weights

For the purpose of our analysis, we will score each relationship flow according to the following:

  • Benefits from the resources: 1 (+1 if they are the owner of a company)

  • A decision-maker on where resources go: 2 (+1 if they are the ultimate decision maker)

  • Influential on the other person: 1 (only if target is a person)

We will use the total as the weights for each edge. Lastly, we will rename the relationship to prevent confusion in case of direction reversal.

6.3 Score tables

Beneficial owners benefit from the resources of the company.

While BeneficialOwners may or may not be Shareholders in the same company, they hold the ultimate decision-making power.

Current From

Owner
Current From Owner
Current To Company
New From
(Lower power)
Company
New To
(Higher power)
Owner
New subtype OwnedBy
Beneficiary 1 + 1
Decision-maker 2 + 1
Influential (on person) 0
Total 5

Shareholders may receive proceeds from the profits of the company.

They have some decision-making power within the company. However, it is the Beneficial Owner that ultimately gets the final say in decisions.

Current From Shareholder
Current To Company
New From
(Lower power)
Company
New To
(Higher power)
Shareholder
New subtype HasShareholder
Beneficiary 1
Decision-maker 2
Influential (on person) 0
Total 3

Employees are contractually obligated to act in the interests of their employer.

Employers also influence what their employees do in the business.

Current From Owner
Current To Company
New From
(Lower power)
Company
New To
(Higher power)
Owner
New subtype OwnedBy
Beneficiary 1 + 1
Decision-maker 2 + 1
Influential (on person) 0
Total 5

Assuming that family members have a healthy relationship, they share resources and confide in each other.

Due to this, they have power over each other.

Current From Person 1
Current To Person 2
New From
(Lower power)
Person 2 (additional)
New To
(Higher power)

Person 2

(additional)

New subtype FamilyRelationship
Beneficiary 1
Decision-maker 0
Influential (on person) 1
Total 2

These scores are subjective and based on general assumptions. We also lack the information to model the power dynamics accurately.

6.4 Converting relationship edges to power flow

Using the table above, we will create a function to convert relationship edges to power flow.

convert_edges_to_power_flow <- function(edges) {
  # Employee -> Employer, weight: 2
  works_for <- edges %>% filter(subtype == "WorksFor") %>% mutate(weight = 2)
  
  # Person1 <-> Person2, weight: 1
  family <- edges %>% filter(subtype == "FamilyRelationship") %>% mutate(weight = 2)
  family_rev <- family %>%
    mutate(temp = from, from = to, to = temp) %>%
    select(from, to, supertype, subtype, start_date, end_date, weight)
  
  # Shareholder <- Company, weight: 2
  shareholder <- edges %>% filter(subtype == "Shareholdership") %>%
    mutate(
      temp = from,
      from = to,
      to = temp,
      weight = 3,
      # Rename to prevent confusion due to reversed arrows
      subtype = "HasShareholder",
    ) %>%
    select(from, to, supertype, subtype, start_date, end_date, weight)
  
  # BeneficialOwner <- Company, weight: 3
  owner <- edges %>% filter(subtype == "BeneficialOwnership") %>%
    mutate(
      temp = from,
      from = to,
      to = temp,
      weight = 5,
      # Rename to prevent confusion due to reversed arrows
      subtype = "OwnedBy",
    ) %>%
    select(from, to, supertype, subtype, start_date, end_date, weight)
  
  works_for %>%
    rbind(family) %>%
    rbind(family_rev) %>%
    rbind(shareholder) %>%
    rbind(owner)
}

Let us check the resulting edges table. We are expecting that all edge types would have the same number, expect for FamilyRelationship, which is expected to double.

supernetwork %>%
  as_data_frame(what = "edges") %>%
  group_by(supertype, subtype) %>%
  summarize(count = n()) %>%
  arrange(-count) %>%
  kable()
supertype subtype count
Ownership Shareholdership 39378
Ownership BeneficialOwnership 21529
Employment WorksFor 14817
Relationship FamilyRelationship 91
supernetwork %>%
  as_data_frame(what = "edges") %>%
  convert_edges_to_power_flow() %>%
  group_by(supertype, subtype) %>%
  summarize(count = n()) %>%
  arrange(-count) %>%
  kable()
supertype subtype count
Ownership HasShareholder 39378
Ownership OwnedBy 21529
Employment WorksFor 14817
Relationship FamilyRelationship 182

6.5 Converting relationship graphs to power flow

Using the edge converter, we will generate a new tbl_graph with the power flow edges.

convert_graph_to_power_flow <- function(graph) {
  nodes_df <- as_data_frame(graph, what = "vertices")
  edges_sf <- as_data_frame(graph, what = "edges")
  
  resource_edges <- convert_edges_to_power_flow(edges_sf)
  tbl_graph(nodes=nodes_df, edges=resource_edges, directed=TRUE)
}

6.6 Plotting the power graph

Similar to [4.3 Plotting the subnetworks], we will look at 3 subnetworks related to SouthSeafood Express Corp.

We will use plot_fishing_power() to plot the relationship graph of the network.

Show the code for plot_fishing_power()
plot_fishing_power <- function(graph,
                               # Name of nodes to emphasize
                               emphasize_nodes = c(),
                               # Date where to get the snapshot
                               datestring = NULL,
                               # Layout options
                               layout = "nicely",
                               circular = FALSE,
                               # Texts
                               title = NULL,
                               subtitle = NULL,
                               caption = STYLES$default_caption,
                               # Plot styling
                               node_size = STYLES$node_size,
                               arrow_margin = STYLES$arrow_margin,
                               edge_thickness = STYLES$base_edge_thickness,
                               # Seed
                               seed_num = CONFIGS$default_seed) {
  set.seed(seed_num)
  nodes <- as_data_frame(graph, what = "vertices")
  edges <- as_data_frame(graph, what = "edges")
  max_weight <- edges$weight %>% max()
  min_weight <- edges$weight %>% min()
  
  date <- NULL
  if(!is.null(datestring)) { date <- as_date(datestring) }
  
  g <- ggraph(graph, layout = layout, circular = circular) +
    # Render nodes
    geom_point_interactive(
      aes(
        x = x,
        y = y,
        data_id = name,
        tooltip = sprintf("%s<br/>(%s)", name, subtype),
        fill = subtype,
        # To show people as triangle, organizations as circle
        # See scale_shape_manual code below
        shape = supertype,
      ),
      size = node_size,
      # Thicken border if emphasized
      color = ifelse(
        nodes$name %in% emphasize_nodes,
        STYLES$node_emphasized_border_color,
        STYLES$node_border_color
      ),
      stroke = ifelse(
        nodes$name %in% emphasize_nodes,
        STYLES$node_emphasized_border_stroke,
        STYLES$node_border_stroke
      ),
    ) +
    geom_node_text(
      aes(label = alias),
      family = STYLES$font_family,
      size = STYLES$node_label_size,
      color = STYLES$node_label_light,
      fontface = ifelse(nodes$name %in% emphasize_nodes, "bold", "plain"),
    ) +
    
    # Render edges. Use geom_edge fan so edges along the same path don't overlap
    geom_edge_fan(
      aes(
        color = subtype,
        edge_width = weight,
        # Will identify if the edge is active at this date, if not do not display
        # Ideally this should be in a function but I can't figure out how to make it work inside aes
        # Logic is same as is extract_network_snapshot.R
        filter = ifelse(
          is.null(date) | is.na(start_date),
          TRUE,
          ifelse(start_date <= date &
                   (is.na(end_date) | end_date > date), TRUE, FALSE)
        )
      ),
      strength = 0.5,
      arrow = STYLES$arrow_style,
      end_cap = circle(arrow_margin, "mm"),
      start_cap = circle(arrow_margin, "mm"),
      alpha = 0.8
    ) +
    scale_shape_manual(values = MAPPINGS$node_supertype_to_shape) +
    scale_fill_manual(values = MAPPINGS$node_subtype_to_color) +
    scale_edge_color_manual(values = MAPPINGS$edge_power_subtype_to_color) +
    
    # Make sure edge widths are consistent across diff graphs
    scale_edge_width(
      range = c(min_weight * edge_thickness, max_weight * edge_thickness),
      guide = "none"
    ) +
    
    # Change legend names
    labs(shape = "Node Supertypes",
         fill = "Node Subtypes",
         edge_color = "Edge Subtypes") +
    
    # Make sure the plot is not clipped
    scale_x_continuous(expand = expansion(mult = c(0.10, 0.10))) +
    scale_y_continuous(expand = expansion(mult = c(0.10, 0.10))) +
    
    # Style legend keys
    guides(
      shape = guide_legend(
        override.aes = list(size = 3, fill = STYLES$primary_color),
        order = 1
      ),
      fill = guide_legend(
        override.aes = list(
          size = 4,
          shape = 22,
          color = NA
        ),
        order = 2
      ),
      edge_color = guide_legend(order = 3),
    ) +
    
    # Style graph
    unset_graph_style() +
    theme_graph(base_family = STYLES$font_family,
                plot_margin = margin(0)) +
    
    plot_annotation(title = title,
                    subtitle = subtitle,
                    caption = caption) &
    COMMON_THEME
  
  girafe(
    ggobj = g,
    width_svg = STYLES$svg_width,
    height_svg = STYLES$svg_height,
    options = list(opts_tooltip(css = STYLES$tooltip_css))
  )
}

6.6.1 Direct Neighbors

Show the code
supernetwork %>%
  extract_subnetwork(node_name = "SouthSeafood Express Corp", distance = 1) %>%
  convert_graph_to_power_flow() %>%
  plot_fishing_power(
    emphasize_nodes = c("SouthSeafood Express Corp", "AguaLeska Transit N.V."),
    datestring = "2035-05-24",
    layout = "linear",
    circular = TRUE,
    node_size = 12,
    arrow_margin = 5.5,
    title = "Power Graph: SouthSeafood Express Corp's Direct Neighbors (May 24, 2035)",
    subtitle = "<span style='color:blue;'>**AguaLeska Transit N.V.**</span> is the sole shareholder in SouthSeafood Express Corp, having large control in the company.<br />They benefit the most from and could have controlled company's illegal fishing activities."
  )
ATNV SEC TFC Node Supertypes Organization Node Subtypes FishingCompany Edge Subtypes HasShareholder Hover on the nodes to see more details. AguaLeska Transit N.V. is the sole shareholder in SouthSeafood Express Corp, having large control in the company. They benefit the most from and could have controlled company’s illegal fishing activities. Power Graph: SouthSeafood Express Corp’s Direct Neighbors (May 24, 2035)
Show the code
supernetwork %>%
  extract_subnetwork(node_name = "SouthSeafood Express Corp", distance = 1) %>%
  convert_graph_to_power_flow() %>%
  plot_fishing_power(
    emphasize_nodes = c("SouthSeafood Express Corp", "Tainamarine Fishing Co"),
    datestring = "2035-05-25",
    layout = "linear",
    circular = TRUE,
    node_size = 12,
    arrow_margin = 5.5,
    title = "Power Graph: SouthSeafood Express Corp's Direct Neighbors (May 25, 2035)",
    subtitle = "On this day, shareholdership in SouthSeafood Express Corp transferred from <span style='color:blue;'>**AguaLeska Transit N.V.**</span> to  <span style='color:blue;'>**Tainamarine Fishing Co**</span>.<br />This also transferred the control, and consequently, responsibility over the company."
  )
ATNV SEC TFC Node Supertypes Organization Node Subtypes FishingCompany Edge Subtypes HasShareholder Hover on the nodes to see more details. On this day, shareholdership in SouthSeafood Express Corp transferred from AguaLeska Transit N.V. to Tainamarine Fishing Co . This also transferred the control, and consequently, responsibility over the company. Power Graph: SouthSeafood Express Corp’s Direct Neighbors (May 25, 2035)
Insights

The transfer of shareholdership constituted a transfer of power and responsibility over SouthSeafood Express Corp from one company to the other.

From this scope, it not easy to see who is ultimately pulling the strings. We need to cast our net wider to see the effect of this transaction in SouthSeafood Express Corp’s network.

6.6.2 Sphere of Influence

Show the code
supernetwork %>%
  extract_subnetwork(node_name = "SouthSeafood Express Corp", distance = 3) %>%
  convert_graph_to_power_flow() %>%
  plot_fishing_power(
    emphasize_nodes = c(
      "SouthSeafood Express Corp",
      "AguaLeska Transit N.V.",
      "StichtingMarine Shipping Company",
      "SavanetaCreek Solutions NV",
      "Liam Conti",
      "Fintan Park"
    ),
    datestring = "2035-05-24",
    title = "Power Graph: SouthSeafood Express Corp's Sphere of Influence (May 24, 2035)",
    subtitle = "Before the transfer of shareholdership, <span style='color:blue;'>**Liam Conti**</span> and <span style='color:blue;'>**Fintan Park**</span> controls SouthSeafood Express Corp through<br /><span style='color:blue;'>**AguaLeska Transit N.V.**</span> and <span style='color:blue;'>**StichtingMarine Shipping Company**</span>."
  )
ATNV NTL SSN SEC SSC TFC VMS LC NC FP SEA EH Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Hover on the nodes to see more details. Before the transfer of shareholdership, Liam Conti and Fintan Park controls SouthSeafood Express Corp through AguaLeska Transit N.V. and StichtingMarine Shipping Company . Power Graph: SouthSeafood Express Corp’s Sphere of Influence (May 24, 2035)
Show the code
supernetwork %>%
  extract_subnetwork(node_name = "SouthSeafood Express Corp", distance = 3) %>%
  convert_graph_to_power_flow() %>%
  plot_fishing_power(
    emphasize_nodes = c(
      "SouthSeafood Express Corp",
      "Tainamarine Fishing Co",
      "V. Miesel Shipping",
      "Namorna Transit Ltd"
    ),
    datestring = "2035-05-25",
    title = "Power Graph: SouthSeafood Express Corp's Sphere of Influence (May 25, 2035)",
    subtitle = "The transfer of shareholdership, distances <span style='color:blue;'>**Liam Conti**</span> and <span style='color:blue;'>**Fintan Park**</span> form SouthSeafood Express Corp. <br /> The company is put under the non-fishing branch of <span style='color:blue;'>**StichtingMarine Shipping Company**</span>."
  )
ATNV NTL SSN SEC SSC TFC VMS LC NC FP SEA EH Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Hover on the nodes to see more details. The transfer of shareholdership, distances Liam Conti and Fintan Park form SouthSeafood Express Corp. The company is put under the non-fishing branch of StichtingMarine Shipping Company . Power Graph: SouthSeafood Express Corp’s Sphere of Influence (May 25, 2035)
Insights

With this visualization, it is now clearer that change of shareholdership puts Liam Conti and Fintan Park out of the sphere of influence of SouthSeafood Express Corp.

As inferred previously, this could have been an effort to distance themselves from SouthSeafood Express Corp to lower the impact of the sanctions and punishments after the fishing company’s illegall fishing activities were discovered.

This is because according to the Theory of Sphere of Influence, one’s influence diminish the farther the other party is. Beyond the 3rd, degree the effect may not be too noticeable.

6.6.3 Connected Network

Show the code
supernetwork %>%
  extract_subnetwork(node_name = "SouthSeafood Express Corp") %>%
  convert_graph_to_power_flow() %>%
  plot_fishing_power(
    emphasize_nodes = c(
      "SouthSeafood Express Corp",
      "AguaLeska Transit N.V.",
      "StichtingMarine Shipping Company",
      "SavanetaCreek Solutions NV",
      "Liam Conti",
      "Fintan Park"
    ),
    datestring = "2035-05-24",
    title = "Power Graph: SouthSeafood Express Corp's Connected Nodes (May 24, 2035)",
    subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way at any point in time",
    caption = "Highlighted nodes are with *SouthSeafood Express Corp's* **Sphere of Influence**. Hover on the nodes to see more details."
  )
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Highlighted nodes are with SouthSeafood Express Corp’s Sphere of Influence . Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way at any point in time Power Graph: SouthSeafood Express Corp’s Connected Nodes (May 24, 2035)
Show the code
supernetwork %>%
  extract_subnetwork(node_name = "SouthSeafood Express Corp") %>%
  convert_graph_to_power_flow() %>%
  plot_fishing_power(
    emphasize_nodes = c(
      "SouthSeafood Express Corp",
      "Tainamarine Fishing Co",
      "V. Miesel Shipping",
      "Namorna Transit Ltd"
    ),
    datestring = "2035-05-25",
    title = "Power Graph: SouthSeafood Express Corp's Sphere of Influence (May 25, 2035)",
    subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way at any point in time",
    caption = "Highlighted nodes are with *SouthSeafood Express Corp's* **Sphere of Influence**. Hover on the nodes to see more details."
  )
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Highlighted nodes are with SouthSeafood Express Corp’s Sphere of Influence . Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way at any point in time Power Graph: SouthSeafood Express Corp’s Sphere of Influence (May 25, 2035)
Insights

We can see that SouthSeafood Express Corp’s Sphere of Influence only tells part of the story in this part of the fishing business network.

By generating this power graph, we can more easily see that most of the Person nodes with arrows pointing have the Conti family name. These are:

  • Liam Conti, and his wife Nadia

  • Nathan Conti

  • Fabio Conti

  • Lemuel Conti

  • Lena Conti - Park

Fintan Park is also part of the Conti Clan by marriage to Lena Conti-Park. This indicates that the Conti Clan controls the fishing business in this network. They do this by holding shares of fishing companies through the companies that they own.

7 Measures of Centrality

In 1.2 Methodology, we defined the influential entities as having 2 types:

Type 1: Power holders - entities who hold the most power and main beneficiaries of resources in the network.

Type 2: Power brokers - entities who facilitate the transfer of power/resources from a less powerful entity to another.

7.1 Appropriate measures of centrality

To identify the most powerful nodes/entities in the network, we will use page rank centrality. Originally developed by Google, this is used in ranking web pages. The principle is that the more incoming edges a node has, the more influential it is and nodes to which they are connected share of that influence. (Disney, 2020)

This measure for centrality is useful in this context as in our power graph, the node where the power flow stops is the most powerful node as they have the ultimate control over all the nodes inwardly connected to them.

The main candidates for these are the BeneficialOwners and Shareholders.

To identify the power brokers, we will use betweenness centrality.

Power Brokers must be nodes with both incoming and outgoing edges, so that they can connect a more powerful node to a less powerful node. Hence, having a large number of edges connected to a node is not enough (which the degree centrality offers).

This is because if a node only has incoming or outgoing edges, it won’t be able to connect to other nodes to keep the flow going.

7.2 Generating template graphs

We will again use the networks of SouthSeafood Express Corp to check how these centrality measures play in the network.

We will use the power graphs of Sphere of Influence and the Connected Network.

For the purpose of visualization, we will use these graphs as templates for visualization so they have the same layouts even if the edges change through time.

sfec_sphere_of_influence_power <- supernetwork %>%
  extract_subnetwork(node_name = "SouthSeafood Express Corp", distance = 3) %>%
  convert_graph_to_power_flow()
sfec_connected_network_power <- supernetwork %>%
  extract_subnetwork(node_name = "SouthSeafood Express Corp") %>%
  convert_graph_to_power_flow()

7.3 Calculating measures of centrality

We will now calculate the measures of centrality before and from May 25, 2035. We will use extract_network_snapshot() to do this.

After the calculation, we will extract the node dataframe to join with the template

Note on hiding edges

We cannot just calculate the the measures of centrality and hide the inactive edges in the visualization.

This is because the network structure itself change, which affect the calculations. Hence, we will do the calculations on the underlying network snapshot itself then join the calculations with the template graphs we generated above for visualization.

7.3.1 Sphere of Influence

nodes_influence_before <- sfec_sphere_of_influence_power %>%
  extract_network_snapshot('2035-05-24') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_influence_before %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0355032 0.0454545
Elise Hauser EH Person Person 0.0191909 0.0000000
Fintan Park FP Person Person 0.0944603 0.0000000
Liam Conti LC Person Person 0.2686402 0.0727273
Nadia Conti NC Person Person 0.2475351 0.0000000
Namorna Transit Ltd NTL Organization Company 0.0632341 0.1363636
Sanaa El-Amin SEA Person Person 0.0191909 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0426176 0.0000000
SouthSeafood Express Corp SEC Organization FishingCompany 0.0191909 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.1194300 0.2545455
Tainamarine Fishing Co TFC Organization FishingCompany 0.0191909 0.0000000
V. Miesel Shipping VMS Organization Company 0.0518155 0.1090909
nodes_influence_after <- sfec_sphere_of_influence_power %>%
  extract_network_snapshot('2035-05-25') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_influence_after %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0189866 0.0000000
Elise Hauser EH Person Person 0.0189866 0.0000000
Fintan Park FP Person Person 0.0915753 0.0000000
Liam Conti LC Person Person 0.2612949 0.0727273
Nadia Conti NC Person Person 0.2410872 0.0000000
Namorna Transit Ltd NTL Organization Company 0.0742209 0.1818182
Sanaa El-Amin SEA Person Person 0.0189866 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0414171 0.0000000
SouthSeafood Express Corp SEC Organization FishingCompany 0.0189866 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.1143515 0.2545455
Tainamarine Fishing Co TFC Organization FishingCompany 0.0351252 0.0636364
V. Miesel Shipping VMS Organization Company 0.0649816 0.1636364

7.3.2 Connected Network

nodes_connected_before <- sfec_connected_network_power %>%
  extract_network_snapshot('2035-05-24') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_before %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0200378 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0071910 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0100879 0.0047569
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0110149 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0054529 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0163835 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0054529 0.0000000
Elise Hauser EH Person Person 0.0054529 0.0000000
Eun-Ji Park EJP Person Person 0.0054529 0.0000000
Fabio Conti FC Person Person 0.0359335 0.0000000
Fintan Park FP Person Person 0.1213095 0.0121564
FlounderLeska Marine BV FMB Organization FishingCompany 0.0054529 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0296475 0.0211416
Harvey Janus HJ Person Person 0.0083498 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0081180 0.0021142
James Bell JB Person Person 0.0100879 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0110149 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0179674 0.0047569
Lemuel Conti LC Person Person 0.0484389 0.0000000
Lena Conti-Park LCP Person Person 0.2023729 0.0116279
Liam Conti LC Person Person 0.0276357 0.0084567
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0054529 0.0000000
Nadia Conti NC Person Person 0.0289432 0.0073996
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0306533 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0179674 0.0142706
Nathan Conti NC Person Person 0.1103611 0.0095137
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0172575 0.0005285
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0054529 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0177538 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0147229 0.0042283
Rafael Sanchez RS Person Person 0.0094033 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0054529 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0054529 0.0000000
Samuel Conti SC Person Person 0.0054529 0.0000000
Sanaa El-Amin SEA Person Person 0.0054529 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0170411 0.0058140
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0054529 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0126558 0.0015856
SouthSeafood Express Corp SEC Organization FishingCompany 0.0054529 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0302269 0.0290698
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0054529 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0054529 0.0000000
The News Buoy TNB Organization NewsCompany 0.0054529 0.0000000
V. Miesel Shipping VMS Organization Company 0.0147229 0.0105708
WestRiver Shipping KgaA WSK Organization Company 0.0054529 0.0000000
nodes_connected_after <- sfec_connected_network_power %>%
  extract_network_snapshot('2035-05-25') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_after %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0200305 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0071884 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0054509 0.0000000
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0110109 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0054509 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0163775 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0054509 0.0000000
Elise Hauser EH Person Person 0.0054509 0.0000000
Eun-Ji Park EJP Person Person 0.0054509 0.0000000
Fabio Conti FC Person Person 0.0359203 0.0000000
Fintan Park FP Person Person 0.1197989 0.0121564
FlounderLeska Marine BV FMB Organization FishingCompany 0.0054509 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0296367 0.0211416
Harvey Janus HJ Person Person 0.0083467 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0081151 0.0021142
James Bell JB Person Person 0.0100842 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0110109 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0179608 0.0047569
Lemuel Conti LC Person Person 0.0484212 0.0000000
Lena Conti-Park LCP Person Person 0.2003477 0.0116279
Liam Conti LC Person Person 0.0270662 0.0084567
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0054509 0.0000000
Nadia Conti NC Person Person 0.0284572 0.0073996
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0306421 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0213083 0.0190275
Nathan Conti NC Person Person 0.1094915 0.0095137
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0172511 0.0005285
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0054509 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0175452 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0147175 0.0042283
Rafael Sanchez RS Person Person 0.0093353 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0054509 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0054509 0.0000000
Samuel Conti SC Person Person 0.0054509 0.0000000
Sanaa El-Amin SEA Person Person 0.0054509 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0167560 0.0058140
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0054509 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0126512 0.0015856
SouthSeafood Express Corp SEC Organization FishingCompany 0.0054509 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0291230 0.0290698
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0054509 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0100842 0.0058140
The News Buoy TNB Organization NewsCompany 0.0054509 0.0000000
V. Miesel Shipping VMS Organization Company 0.0186558 0.0158562
WestRiver Shipping KgaA WSK Organization Company 0.0054509 0.0000000

7.3.3 Putting it all together

We will combine the calculated measures in the template graphs.

sfec_sphere_of_influence_power <- sfec_sphere_of_influence_power %>%
  left_join(
    nodes_influence_before %>% rename(
      d_20350524.pagerank = pagerank,
      d_20350524.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_influence_after %>% rename(
      d_20350525.pagerank = pagerank,
      d_20350525.betweenness = betweenness
    )
  )
sfec_connected_network_power <- sfec_connected_network_power %>%
  left_join(
    nodes_connected_before %>% rename(
      d_20350524.pagerank = pagerank,
      d_20350524.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_connected_after %>% rename(
      d_20350525.pagerank = pagerank,
      d_20350525.betweenness = betweenness
    )
  )

8 Visualizing Influential Nodes

We will use plot_centrality to identify the most powerful nodes by visualizing the measures of centrality of the nodes.

Show the code for plot_centrality()
plot_centrality <- function(graph,
                            # Column containing centrality measure, can be
                            # pagerank: for most powerful nodes
                            # betweeness: for power brokers
                            centrality_col,
                            # Name of nodes to emphasize
                            emphasize_nodes = c(),
                            # Date where to get the snapshot
                            datestring = NULL,
                            # Layout options
                            layout = "nicely",
                            circular = FALSE,
                            # Texts
                            title = NULL,
                            subtitle = NULL,
                            caption = paste("*Bigger and brighter nodes are more influential.", STYLES$default_caption),
                            # Plot styling
                            arrow_margin = STYLES$arrow_margin / 2,
                            edge_thickness = STYLES$base_edge_thickness,
                            # Seed
                            seed_num = CONFIGS$default_seed) {
  set.seed(seed_num)
  
  centrality_type = NULL
  
  if (endsWith(centrality_col, "pagerank")) {
    centrality_type = "pagerank"
  } else if (endsWith(centrality_col, "betweenness")) {
    centrality_type = "betweenness"
  }
  
  if (!(centrality_type %in% c("pagerank", "betweenness"))) {
    stop("Only pagerank and betweenness centralities are relevant in our analysis")
  }
  
  date <- NULL
  if(!is.null(datestring)) { date <- as_date(datestring) }
  
  nodes <- as_data_frame(graph, what = "vertices")
  score_boundary <- (nodes[[centrality_col]] %>% max()) * 0.6
  
  edges <- as_data_frame(graph, what = "edges")
  max_weight <- edges$weight %>% max()
  min_weight <- edges$weight %>% min()
  
  g <- ggraph(graph, layout = layout, circular = circular) +
    # Render nodes
    geom_point_interactive(
      aes(
        x = x,
        y = y,
        data_id = name,
        tooltip = sprintf("%s (%s)<br/>Score: %0.5f", name, subtype, .data[[centrality_col]]),
        # To show people as triangle, organizations as circle
        # See scale_shape_manual code below
        shape = supertype,
        # Get centrality measures from a column
        fill = .data[[centrality_col]],
        size = .data[[centrality_col]],
      ),
      # Thicken border if emphasized
      color = ifelse(
        nodes$name %in% emphasize_nodes,
        STYLES$node_emphasized_border_color,
        STYLES$node_border_color
      ),
      stroke = ifelse(
        nodes$name %in% emphasize_nodes,
        STYLES$node_emphasized_border_stroke,
        STYLES$node_border_stroke
      ),
    ) +
    geom_node_text(
      aes(label = alias),
      family = STYLES$font_family,
      size = STYLES$node_label_size,
      # Nodes with lower centrality have lighter nodes and have black text
      color = ifelse(
        nodes[[centrality_col]] < score_boundary,
        STYLES$node_label_dark,
        STYLES$node_label_light
      ),
      fontface = ifelse(nodes$name %in% emphasize_nodes, "bold", "plain"),
    ) +
    
    # Render edges. Use geom_edge fan so edges along the same path don't overlap
    geom_edge_fan(
      aes(color = subtype, edge_width = weight,
          # Will identify if the edge is active at this date, if not do not display
          # Ideally this should be in a function but I can't figure out how to make it work inside aes
          # Logic is same as is extract_network_snapshot.R
          filter = ifelse(is.null(date) | is.na(start_date), TRUE,
                          ifelse(start_date <= date & (is.na(end_date) | end_date > date),
                                 TRUE,
                                 FALSE
                          )
          )),
      strength = 0.5,
      arrow = STYLES$arrow_style,
      end_cap = circle(arrow_margin, "mm"),
      start_cap = circle(arrow_margin, "mm"),
      alpha = 0.8
    ) +
    scale_shape_manual(values = MAPPINGS$node_supertype_to_shape) +
    scale_edge_color_manual(values = MAPPINGS$edge_power_subtype_to_color) +
    
    # Centrality visualization
    scale_fill_gradient(
      high = ifelse(
        centrality_type == "pagerank",
        STYLES$primary_color,
        STYLES$secondary_color
      ),
      low = ifelse(
        centrality_type == "pagerank",
        STYLES$primary_light_color,
        STYLES$secondary_light_color
      )
    ) +
    scale_size_continuous(range = c(3, 12), guide = FALSE) +
    
    # Make sure edge widths are consistent across diff graphs
    scale_edge_width(
      range = c(min_weight * edge_thickness, max_weight * edge_thickness),
      guide = "none"
    ) +
    
    # Change legend names
    labs(
      fill = ifelse(
        centrality_type == "pagerank",
        "PageRank Score",
        "Betweenness Score"
      ),
      shape = "Node Supertypes",
      edge_color = "Edge Subtypes"
    ) +
    
    # Make sure the plot is not clipped
    scale_x_continuous(expand = expansion(mult = c(0.10, 0.10))) +
    scale_y_continuous(expand = expansion(mult = c(0.10, 0.10))) +
    
    # Style legend keys
    guides(
      shape = guide_legend(
        override.aes = list(
          size = 3,
          fill = STYLES$primary_color
        ),
        order = 1
      ),
      edge_color = guide_legend(order = 2),
      fill = guide_colorbar(order = 3)
    ) +
    
    # Style graph
    unset_graph_style() +
    theme_graph(base_family = STYLES$font_family,
                plot_margin = margin(0)) +
    
    plot_annotation(title = title,
                    subtitle = subtitle,
                    caption = caption) &
    COMMON_THEME
  
  girafe(
    ggobj = g,
    width_svg = STYLES$svg_width,
    height_svg = STYLES$svg_height,
    options = list(opts_tooltip(css = STYLES$tooltip_css))
  )
}

8.1 Power Holders - Sphere of influence

8.1.1 Graph

sfec_sphere_of_influence_power %>%
  plot_centrality(
    centrality_col = "d_20350524.pagerank",
    datestring = "2035-05-24",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 24, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
ATNV NTL SSN SEC SSC TFC VMS LC NC FP SEA EH Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 0.20 0.25 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 24, 2035)
sfec_sphere_of_influence_power %>%
  plot_centrality(
    centrality_col = "d_20350525.pagerank",
    datestring = "2035-05-25",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 25, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
ATNV NTL SSN SEC SSC TFC VMS LC NC FP SEA EH Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 0.20 0.25 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 25, 2035)

8.1.2 Table

nodes_influence_before %>%
  arrange(-pagerank) %>%
  select(alias, pagerank, supertype, subtype) %>%
  kable()
alias pagerank supertype subtype
Liam Conti LC 0.2686402 Person Person
Nadia Conti NC 0.2475351 Person Person
StichtingMarine Shipping Company SSC 0.1194300 Organization FishingCompany
Fintan Park FP 0.0944603 Person Person
Namorna Transit Ltd NTL 0.0632341 Organization Company
V. Miesel Shipping VMS 0.0518155 Organization Company
SavanetaCreek Solutions NV SSN 0.0426176 Organization LogisticsCompany
AguaLeska Transit N.V. ATNV 0.0355032 Organization FishingCompany
SouthSeafood Express Corp SEC 0.0191909 Organization FishingCompany
Tainamarine Fishing Co TFC 0.0191909 Organization FishingCompany
Sanaa El-Amin SEA 0.0191909 Person Person
Elise Hauser EH 0.0191909 Person Person
nodes_influence_after %>%
  arrange(-pagerank) %>%
  select(alias, pagerank, supertype, subtype) %>%
  kable()
alias pagerank supertype subtype
Liam Conti LC 0.2612949 Person Person
Nadia Conti NC 0.2410872 Person Person
StichtingMarine Shipping Company SSC 0.1143515 Organization FishingCompany
Fintan Park FP 0.0915753 Person Person
Namorna Transit Ltd NTL 0.0742209 Organization Company
V. Miesel Shipping VMS 0.0649816 Organization Company
SavanetaCreek Solutions NV SSN 0.0414171 Organization LogisticsCompany
Tainamarine Fishing Co TFC 0.0351252 Organization FishingCompany
AguaLeska Transit N.V. ATNV 0.0189866 Organization FishingCompany
SouthSeafood Express Corp SEC 0.0189866 Organization FishingCompany
Sanaa El-Amin SEA 0.0189866 Person Person
Elise Hauser EH 0.0189866 Person Person
Insights

This plot confirms that the power holders in the network are Conti Clan members, especially Liam and Nadia Conti.

The change in shareholders very slightly weakened the power of Conti Clan members.

In fact, only the 3 entities involved – SouthSeafood Express Corp, AguaLeska Transit N.V., and Tainamarine Fishing Co had their rankings changed.

In addition, only Namorna Transit Ltd, V. Miesel Shipping had their pagerank centrality increase by 10%+. This seems consistent with the Theory of Sphere of Influence.

8.2 Power Holders - Connected Network

8.2.1 Graph

sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350524.pagerank",
    datestring = "2035-05-24",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 24, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 0.20 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 24, 2035)
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350525.pagerank",
    datestring = "2035-05-25",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 25, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 0.20 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 25, 2035)

8.2.2 Table

nodes_connected_before %>%
  arrange(-pagerank) %>%
  select(alias, pagerank, supertype, subtype) %>%
  kable()
alias pagerank supertype subtype
Lena Conti-Park LCP 0.2023729 Person Person
Fintan Park FP 0.1213095 Person Person
Nathan Conti NC 0.1103611 Person Person
Lemuel Conti LC 0.0484389 Person Person
Fabio Conti FC 0.0359335 Person Person
NamRiver Transit A/S NTAS 0.0306533 Organization LogisticsCompany
StichtingMarine Shipping Company SSC 0.0302269 Organization FishingCompany
GvardeyskAmerica Shipping Plc GSP 0.0296475 Organization Company
Nadia Conti NC 0.0289432 Person Person
Liam Conti LC 0.0276357 Person Person
4. SeaCargo Ges.m.b.H. 4SGm 0.0200378 Organization LogisticsCompany
KisumuSeafoodBrothers Ltd KL 0.0179674 Organization FishingCompany
Namorna Transit Ltd NTL 0.0179674 Organization Company
Oka Seafood Shipping Ges.m.b.H. OSSG 0.0177538 Organization FishingCompany
NyanzaRiver Worldwide AS NWA 0.0172575 Organization FishingCompany
SavanetaCreek Solutions NV SSN 0.0170411 Organization LogisticsCompany
Dry CreekRybachit Marine A/S DCMA 0.0163835 Organization FishingCompany
OranjestadCreek Express Sagl OES 0.0147229 Organization Company
V. Miesel Shipping VMS 0.0147229 Organization Company
SouthLeska Worldwide AS SWA 0.0126558 Organization FishingCompany
ArawakFish Cargo Ges.m.b.H. ACGm 0.0110149 Organization Company
KambalaSea Freight Inc KFI 0.0110149 Organization Company
James Bell JB 0.0100879 Person Person
AguaLeska Transit N.V. ATNV 0.0100879 Organization FishingCompany
Rafael Sanchez RS 0.0094033 Person Person
Harvey Janus HJ 0.0083498 Person Person
HomabayMarine Carriers N.V. HCNV 0.0081180 Organization Company
9. RiverLine CJSC 9RC 0.0071910 Organization Company
The News Buoy TNB 0.0054529 Organization NewsCompany
BaringoAmerica Marine Ges.m.b.H. BMGm 0.0054529 Organization FishingCompany
Dry CreekWorldLogistics Ltd. Liability Co DCLL 0.0054529 Organization LogisticsCompany
FlounderLeska Marine BV FMB 0.0054529 Organization FishingCompany
Maacama Ocean Worldwide LLC MOWL 0.0054529 Organization FishingCompany
Oka Charter Boat Transport OJSC OCBT 0.0054529 Organization Company
RechFish Freight Plc RFP 0.0054529 Organization LogisticsCompany
SamakaDredgeTransport OJSC SO 0.0054529 Organization Company
ScaniaSeafood Holdings Ltd. Liability Co SHLL 0.0054529 Organization FishingCompany
SouthSeafood Express Corp SEC 0.0054529 Organization FishingCompany
SumacAmerica Transport GmbH & Co. KG STGC 0.0054529 Organization LogisticsCompany
Tainamarine Fishing Co TFC 0.0054529 Organization FishingCompany
WestRiver Shipping KgaA WSK 0.0054529 Organization Company
Samuel Conti SC 0.0054529 Person Person
Sanaa El-Amin SEA 0.0054529 Person Person
Eun-Ji Park EJP 0.0054529 Person Person
Elise Hauser EH 0.0054529 Person Person
nodes_connected_after %>%
  arrange(-pagerank) %>%
  select(alias, pagerank, supertype, subtype) %>%
  kable()
alias pagerank supertype subtype
Lena Conti-Park LCP 0.2003477 Person Person
Fintan Park FP 0.1197989 Person Person
Nathan Conti NC 0.1094915 Person Person
Lemuel Conti LC 0.0484212 Person Person
Fabio Conti FC 0.0359203 Person Person
NamRiver Transit A/S NTAS 0.0306421 Organization LogisticsCompany
GvardeyskAmerica Shipping Plc GSP 0.0296367 Organization Company
StichtingMarine Shipping Company SSC 0.0291230 Organization FishingCompany
Nadia Conti NC 0.0284572 Person Person
Liam Conti LC 0.0270662 Person Person
Namorna Transit Ltd NTL 0.0213083 Organization Company
4. SeaCargo Ges.m.b.H. 4SGm 0.0200305 Organization LogisticsCompany
V. Miesel Shipping VMS 0.0186558 Organization Company
KisumuSeafoodBrothers Ltd KL 0.0179608 Organization FishingCompany
Oka Seafood Shipping Ges.m.b.H. OSSG 0.0175452 Organization FishingCompany
NyanzaRiver Worldwide AS NWA 0.0172511 Organization FishingCompany
SavanetaCreek Solutions NV SSN 0.0167560 Organization LogisticsCompany
Dry CreekRybachit Marine A/S DCMA 0.0163775 Organization FishingCompany
OranjestadCreek Express Sagl OES 0.0147175 Organization Company
SouthLeska Worldwide AS SWA 0.0126512 Organization FishingCompany
ArawakFish Cargo Ges.m.b.H. ACGm 0.0110109 Organization Company
KambalaSea Freight Inc KFI 0.0110109 Organization Company
James Bell JB 0.0100842 Person Person
Tainamarine Fishing Co TFC 0.0100842 Organization FishingCompany
Rafael Sanchez RS 0.0093353 Person Person
Harvey Janus HJ 0.0083467 Person Person
HomabayMarine Carriers N.V. HCNV 0.0081151 Organization Company
9. RiverLine CJSC 9RC 0.0071884 Organization Company
The News Buoy TNB 0.0054509 Organization NewsCompany
AguaLeska Transit N.V. ATNV 0.0054509 Organization FishingCompany
BaringoAmerica Marine Ges.m.b.H. BMGm 0.0054509 Organization FishingCompany
Dry CreekWorldLogistics Ltd. Liability Co DCLL 0.0054509 Organization LogisticsCompany
FlounderLeska Marine BV FMB 0.0054509 Organization FishingCompany
Maacama Ocean Worldwide LLC MOWL 0.0054509 Organization FishingCompany
Oka Charter Boat Transport OJSC OCBT 0.0054509 Organization Company
RechFish Freight Plc RFP 0.0054509 Organization LogisticsCompany
SamakaDredgeTransport OJSC SO 0.0054509 Organization Company
ScaniaSeafood Holdings Ltd. Liability Co SHLL 0.0054509 Organization FishingCompany
SouthSeafood Express Corp SEC 0.0054509 Organization FishingCompany
SumacAmerica Transport GmbH & Co. KG STGC 0.0054509 Organization LogisticsCompany
WestRiver Shipping KgaA WSK 0.0054509 Organization Company
Samuel Conti SC 0.0054509 Person Person
Sanaa El-Amin SEA 0.0054509 Person Person
Eun-Ji Park EJP 0.0054509 Person Person
Elise Hauser EH 0.0054509 Person Person
Insights

This plot further confirms the power holders in the wider network are Conti Clan members, with Lena Conti-Park being the most powerful person in the network. This can be because of her association as family member of Fintan Park and Nathan Conti.

In hindsight, we could have put more weight to business connections to our model in 6.3 Score tables as it could be the case that family members are not really involved in the business (will apply this in the project).

Another observation is that the plot in 8.1 Power Holders - Sphere of influence shows Liam and Nadia Conti as more powerful than Fintan Park. However, in the wider network, Fintan Park is more powerful.

Lastly, similar to the previous observation, the impact of SouthSeafood Express Corp’s change in shareholders have little impact on the power holders in this network - the Conti Clan members

8.3 Power Brokers - Sphere of influence

8.3.1 Graph

sfec_sphere_of_influence_power %>%
  plot_centrality(
    centrality_col = "d_20350524.betweenness",
    datestring = "2035-05-24",
    title = "The Power Brokers: SouthSeafood Express Corp's Sphere of Influence (May 24, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
ATNV NTL SSN SEC SSC TFC VMS LC NC FP SEA EH Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.00 0.05 0.10 0.15 0.20 0.25 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Sphere of Influence (May 24, 2035)
sfec_sphere_of_influence_power %>%
  plot_centrality(
    centrality_col = "d_20350525.betweenness",
    datestring = "2035-05-25",
    title = "The Power Brokers: SouthSeafood Express Corp's Sphere of Influence (May 25, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
ATNV NTL SSN SEC SSC TFC VMS LC NC FP SEA EH Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.00 0.05 0.10 0.15 0.20 0.25 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Sphere of Influence (May 25, 2035)

8.3.2 Table

nodes_influence_before %>%
  arrange(-betweenness) %>%
  select(alias, betweenness, supertype, subtype) %>%
  kable()
alias betweenness supertype subtype
StichtingMarine Shipping Company SSC 0.2545455 Organization FishingCompany
Namorna Transit Ltd NTL 0.1363636 Organization Company
V. Miesel Shipping VMS 0.1090909 Organization Company
Liam Conti LC 0.0727273 Person Person
AguaLeska Transit N.V. ATNV 0.0454545 Organization FishingCompany
SavanetaCreek Solutions NV SSN 0.0000000 Organization LogisticsCompany
SouthSeafood Express Corp SEC 0.0000000 Organization FishingCompany
Tainamarine Fishing Co TFC 0.0000000 Organization FishingCompany
Nadia Conti NC 0.0000000 Person Person
Fintan Park FP 0.0000000 Person Person
Sanaa El-Amin SEA 0.0000000 Person Person
Elise Hauser EH 0.0000000 Person Person
nodes_influence_after %>%
  arrange(-betweenness) %>%
  select(alias, betweenness, supertype, subtype) %>%
  kable()
alias betweenness supertype subtype
StichtingMarine Shipping Company SSC 0.2545455 Organization FishingCompany
Namorna Transit Ltd NTL 0.1818182 Organization Company
V. Miesel Shipping VMS 0.1636364 Organization Company
Liam Conti LC 0.0727273 Person Person
Tainamarine Fishing Co TFC 0.0636364 Organization FishingCompany
AguaLeska Transit N.V. ATNV 0.0000000 Organization FishingCompany
SavanetaCreek Solutions NV SSN 0.0000000 Organization LogisticsCompany
SouthSeafood Express Corp SEC 0.0000000 Organization FishingCompany
Nadia Conti NC 0.0000000 Person Person
Fintan Park FP 0.0000000 Person Person
Sanaa El-Amin SEA 0.0000000 Person Person
Elise Hauser EH 0.0000000 Person Person
Insights

The power brokers in this network are the companies that act as middlemen between a more powerful entity to a less powerful one and vice versa.

The most notable is StichtingMarine Shipping Company, which the Conti Clan members, Liam Conti and Fintan Park, own. This fishing company is their way to consolidate the power and resources within the system.

Similarly, after the change of SouthSeafood Express Corp shareholder, Tainamarine Fishing Co also took the power broker role from AguaLeska Transit N.V.

8.4 Power Brokers - Connected Network

8.4.1 Graph

sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350524.betweenness",
    datestring = "2035-05-24",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (May 24, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.00 0.01 0.02 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (May 24, 2035)
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350525.betweenness",
    datestring = "2035-05-25",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (May 25, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.00 0.01 0.02 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (May 25, 2035)

8.4.2 Table

nodes_connected_before %>%
  arrange(-betweenness) %>%
  select(alias, betweenness, supertype, subtype) %>%
  kable()
alias betweenness supertype subtype
StichtingMarine Shipping Company SSC 0.0290698 Organization FishingCompany
GvardeyskAmerica Shipping Plc GSP 0.0211416 Organization Company
NamRiver Transit A/S NTAS 0.0211416 Organization LogisticsCompany
Namorna Transit Ltd NTL 0.0142706 Organization Company
Fintan Park FP 0.0121564 Person Person
Lena Conti-Park LCP 0.0116279 Person Person
V. Miesel Shipping VMS 0.0105708 Organization Company
Nathan Conti NC 0.0095137 Person Person
Liam Conti LC 0.0084567 Person Person
Nadia Conti NC 0.0073996 Person Person
SavanetaCreek Solutions NV SSN 0.0058140 Organization LogisticsCompany
Oka Seafood Shipping Ges.m.b.H. OSSG 0.0052854 Organization FishingCompany
AguaLeska Transit N.V. ATNV 0.0047569 Organization FishingCompany
KisumuSeafoodBrothers Ltd KL 0.0047569 Organization FishingCompany
ArawakFish Cargo Ges.m.b.H. ACGm 0.0042283 Organization Company
OranjestadCreek Express Sagl OES 0.0042283 Organization Company
Dry CreekRybachit Marine A/S DCMA 0.0036998 Organization FishingCompany
HomabayMarine Carriers N.V. HCNV 0.0021142 Organization Company
KambalaSea Freight Inc KFI 0.0021142 Organization Company
4. SeaCargo Ges.m.b.H. 4SGm 0.0015856 Organization LogisticsCompany
SouthLeska Worldwide AS SWA 0.0015856 Organization FishingCompany
9. RiverLine CJSC 9RC 0.0010571 Organization Company
NyanzaRiver Worldwide AS NWA 0.0005285 Organization FishingCompany
The News Buoy TNB 0.0000000 Organization NewsCompany
James Bell JB 0.0000000 Person Person
BaringoAmerica Marine Ges.m.b.H. BMGm 0.0000000 Organization FishingCompany
Dry CreekWorldLogistics Ltd. Liability Co DCLL 0.0000000 Organization LogisticsCompany
FlounderLeska Marine BV FMB 0.0000000 Organization FishingCompany
Maacama Ocean Worldwide LLC MOWL 0.0000000 Organization FishingCompany
Oka Charter Boat Transport OJSC OCBT 0.0000000 Organization Company
RechFish Freight Plc RFP 0.0000000 Organization LogisticsCompany
SamakaDredgeTransport OJSC SO 0.0000000 Organization Company
ScaniaSeafood Holdings Ltd. Liability Co SHLL 0.0000000 Organization FishingCompany
SouthSeafood Express Corp SEC 0.0000000 Organization FishingCompany
SumacAmerica Transport GmbH & Co. KG STGC 0.0000000 Organization LogisticsCompany
Tainamarine Fishing Co TFC 0.0000000 Organization FishingCompany
WestRiver Shipping KgaA WSK 0.0000000 Organization Company
Fabio Conti FC 0.0000000 Person Person
Lemuel Conti LC 0.0000000 Person Person
Samuel Conti SC 0.0000000 Person Person
Rafael Sanchez RS 0.0000000 Person Person
Sanaa El-Amin SEA 0.0000000 Person Person
Eun-Ji Park EJP 0.0000000 Person Person
Elise Hauser EH 0.0000000 Person Person
Harvey Janus HJ 0.0000000 Person Person
nodes_connected_after %>%
  arrange(-betweenness) %>%
  select(alias, betweenness, supertype, subtype) %>%
  kable()
alias betweenness supertype subtype
StichtingMarine Shipping Company SSC 0.0290698 Organization FishingCompany
GvardeyskAmerica Shipping Plc GSP 0.0211416 Organization Company
NamRiver Transit A/S NTAS 0.0211416 Organization LogisticsCompany
Namorna Transit Ltd NTL 0.0190275 Organization Company
V. Miesel Shipping VMS 0.0158562 Organization Company
Fintan Park FP 0.0121564 Person Person
Lena Conti-Park LCP 0.0116279 Person Person
Nathan Conti NC 0.0095137 Person Person
Liam Conti LC 0.0084567 Person Person
Nadia Conti NC 0.0073996 Person Person
SavanetaCreek Solutions NV SSN 0.0058140 Organization LogisticsCompany
Tainamarine Fishing Co TFC 0.0058140 Organization FishingCompany
Oka Seafood Shipping Ges.m.b.H. OSSG 0.0052854 Organization FishingCompany
KisumuSeafoodBrothers Ltd KL 0.0047569 Organization FishingCompany
ArawakFish Cargo Ges.m.b.H. ACGm 0.0042283 Organization Company
OranjestadCreek Express Sagl OES 0.0042283 Organization Company
Dry CreekRybachit Marine A/S DCMA 0.0036998 Organization FishingCompany
HomabayMarine Carriers N.V. HCNV 0.0021142 Organization Company
KambalaSea Freight Inc KFI 0.0021142 Organization Company
4. SeaCargo Ges.m.b.H. 4SGm 0.0015856 Organization LogisticsCompany
SouthLeska Worldwide AS SWA 0.0015856 Organization FishingCompany
9. RiverLine CJSC 9RC 0.0010571 Organization Company
NyanzaRiver Worldwide AS NWA 0.0005285 Organization FishingCompany
The News Buoy TNB 0.0000000 Organization NewsCompany
James Bell JB 0.0000000 Person Person
AguaLeska Transit N.V. ATNV 0.0000000 Organization FishingCompany
BaringoAmerica Marine Ges.m.b.H. BMGm 0.0000000 Organization FishingCompany
Dry CreekWorldLogistics Ltd. Liability Co DCLL 0.0000000 Organization LogisticsCompany
FlounderLeska Marine BV FMB 0.0000000 Organization FishingCompany
Maacama Ocean Worldwide LLC MOWL 0.0000000 Organization FishingCompany
Oka Charter Boat Transport OJSC OCBT 0.0000000 Organization Company
RechFish Freight Plc RFP 0.0000000 Organization LogisticsCompany
SamakaDredgeTransport OJSC SO 0.0000000 Organization Company
ScaniaSeafood Holdings Ltd. Liability Co SHLL 0.0000000 Organization FishingCompany
SouthSeafood Express Corp SEC 0.0000000 Organization FishingCompany
SumacAmerica Transport GmbH & Co. KG STGC 0.0000000 Organization LogisticsCompany
WestRiver Shipping KgaA WSK 0.0000000 Organization Company
Fabio Conti FC 0.0000000 Person Person
Lemuel Conti LC 0.0000000 Person Person
Samuel Conti SC 0.0000000 Person Person
Rafael Sanchez RS 0.0000000 Person Person
Sanaa El-Amin SEA 0.0000000 Person Person
Eun-Ji Park EJP 0.0000000 Person Person
Elise Hauser EH 0.0000000 Person Person
Harvey Janus HJ 0.0000000 Person Person
Insights

TSimilar to the smaller network, the power brokers in the bigger network are the companies owned by Conti Clan members. These companies transfer the power and resources from the wider network to them.

These are StichtingMarine Shipping Company, GvardeyskAmerica Shipping Plc, NamRiver Transit A/S, Namorna Transit Ltd.

8.5 Curious case of Sanaa El-Amin

Consider Sanaa El-Amin, an entity within SouthSeafood Express Corp’s connected network (snapshot after the shareholder change).

sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350525.pagerank",
    datestring = "2035-05-25",
    emphasize_nodes = c("Sanaa El-Amin"),
    title = "The Power Holders: Sanaa El-Amin's Connected Network (May 25, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details."
  )
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 0.20 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: Sanaa El-Amin’s Connected Network (May 25, 2035)
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350525.betweenness",
    datestring = "2035-05-25",
    emphasize_nodes = c("Sanaa El-Amin"),
    title = "The Power Holders: Sanaa El-Amin's Connected Network (May 25, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details."
  )
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.00 0.01 0.02 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Holders: Sanaa El-Amin’s Connected Network (May 25, 2035)

Sanaa El-Amin is not influential, according to the metrics that we set but she works with a lot of companies in the network. This includes GvardeyskAmerica Shipping Plc , NamRiver Transit A/S, and StichtingMarine Shipping Company, which are the strongest power brokers in the network.

It can imply that she is an expert in the industry so various companies hire her (perhaps as a consultant). Although she does not own any companies, nor hold shares in any, she may hold some influence in the network as influential companies depend on her services.

8.5.1 Measures of centrality to identify this influence

Possible measures of centrality that can identify her influence could be eigenvector centrality. In eigenvector centrality, the principle the more influential your neighbors are, the more influential you are. This can be interpreted such that her association with influential companies also gives her influence.

Other measures of centrality that can identify this particular are hub centrality (due to her direct connection with influential nodes) and degree centrality (due to the number of outgoing edges).

Do we update the power model?

Despite this observation, we will not update the power model, nor add another measure of centrality to our visualizations.

This is because we acknowledged that the model we created in 6.3 Score tables is imperfect and we lack information to model the power dynamics in the network accurately.

However, it is enough that we learn that our model will not identify all influential people in the network, and can even misidentify some entities as influential.

9 Mini-Challenge 3

We are going to answer these questions based on the insights we gained from previous visualizations.

Lack of animations

Original plan to answer this questions is by generating animations of the snapshots of the network.

However, as we cannot do animations, we will work backwards by looking at suspicious events and plotting the graphs manually based on snapshots on those dates.

9.1 Looking for suspicious dates

As the suspicious transactions on SouthSeafood Express Corp happened on 2035-05-25, we will look at relationships that started or ended from 2035.

date = as_date("2035-01-01")
supernetwork %>%
  extract_subnetwork(node_name="SouthSeafood Express Corp") %>%
  as_data_frame(what = "edges") %>%
  filter(start_date >= date | end_date >= date) %>%
  arrange(start_date) %>%
  kable()
from to supertype subtype start_date end_date weight
Liam Conti AguaLeska Transit N.V. Ownership Shareholdership 2028-06-10 2035-05-15 1
StichtingMarine Shipping Company AguaLeska Transit N.V. Ownership Shareholdership 2029-08-17 2035-06-02 1
AguaLeska Transit N.V. SouthSeafood Express Corp Ownership Shareholdership 2033-10-29 2035-05-25 1
Namorna Transit Ltd V. Miesel Shipping Ownership Shareholdership 2035-05-18 NA 1
StichtingMarine Shipping Company Namorna Transit Ltd Ownership Shareholdership 2035-05-18 NA 1
Elise Hauser V. Miesel Shipping Employment WorksFor 2035-05-18 NA 1
V. Miesel Shipping Tainamarine Fishing Co Ownership Shareholdership 2035-05-20 NA 1
Tainamarine Fishing Co SouthSeafood Express Corp Ownership Shareholdership 2035-05-25 NA 1
Samuel Conti The News Buoy Ownership Shareholdership 2035-05-31 NA 1
Liam Conti StichtingMarine Shipping Company Ownership Shareholdership 2035-06-10 NA 1
Harvey Janus SamakaDredgeTransport OJSC Ownership Shareholdership 2035-11-15 NA 1

Based from this list, the dates are:

  • 2035-05-14 - Add a day before to see the state before the series of transactions

  • 2035-05-15

  • 2035-05-18

  • 2035-05-20

  • 2035-05-25

  • 2035-05-31

  • 2035-06-02

  • 2035-06-10

  • 2035-11-15

9.2 Calculate measures of centrality

Show the code
nodes_connected_0514 <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  extract_network_snapshot('2035-05-14') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_0514 %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0227202 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0081537 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0114383 0.0047569
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0124894 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0061829 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0185767 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0061829 0.0000000
Elise Hauser EH Person Person 0.0061829 0.0000000
Eun-Ji Park EJP Person Person 0.0061829 0.0000000
Fabio Conti FC Person Person 0.0407437 0.0000000
Fintan Park FP Person Person 0.1124040 0.0079281
FlounderLeska Marine BV FMB Organization FishingCompany 0.0061829 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0336163 0.0211416
Harvey Janus HJ Person Person 0.0094675 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0092048 0.0021142
James Bell JB Person Person 0.0114383 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0124894 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0203726 0.0047569
Lemuel Conti LC Person Person 0.0549232 0.0000000
Lena Conti-Park LCP Person Person 0.1960030 0.0095137
Liam Conti LC Person Person 0.0275947 0.0042283
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0061829 0.0000000
Nadia Conti NC Person Person 0.0296383 0.0052854
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0347567 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0061829 0.0000000
Nathan Conti NC Person Person 0.1109139 0.0095137
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0195676 0.0005285
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0061829 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0187792 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0166938 0.0042283
Rafael Sanchez RS Person Person 0.0095538 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0061829 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0061829 0.0000000
Samuel Conti SC Person Person 0.0061829 0.0000000
Sanaa El-Amin SEA Person Person 0.0061829 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0145413 0.0036998
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0061829 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0143499 0.0015856
SouthSeafood Express Corp SEC Organization FishingCompany 0.0061829 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0120952 0.0089852
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0061829 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0061829 0.0000000
The News Buoy TNB Organization NewsCompany 0.0061829 0.0000000
V. Miesel Shipping VMS Organization Company 0.0061829 0.0000000
WestRiver Shipping KgaA WSK Organization Company 0.0061829 0.0000000
Show the code
nodes_connected_0515 <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  extract_network_snapshot('2035-05-15') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_0515 %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0227310 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0081576 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0114438 0.0047569
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0124954 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0061858 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0185856 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0061858 0.0000000
Elise Hauser EH Person Person 0.0061858 0.0000000
Eun-Ji Park EJP Person Person 0.0061858 0.0000000
Fabio Conti FC Person Person 0.0407632 0.0000000
Fintan Park FP Person Person 0.1143714 0.0079281
FlounderLeska Marine BV FMB Organization FishingCompany 0.0061858 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0336324 0.0211416
Harvey Janus HJ Person Person 0.0094721 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0092092 0.0021142
James Bell JB Person Person 0.0114438 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0124954 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0203823 0.0047569
Lemuel Conti LC Person Person 0.0549494 0.0000000
Lena Conti-Park LCP Person Person 0.1986434 0.0095137
Liam Conti LC Person Person 0.0224829 0.0042283
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0061858 0.0000000
Nadia Conti NC Person Person 0.0252963 0.0052854
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0347733 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0061858 0.0000000
Nathan Conti NC Person Person 0.1120492 0.0095137
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0195770 0.0005285
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0061858 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0169367 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0167017 0.0042283
Rafael Sanchez RS Person Person 0.0096427 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0061858 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0061858 0.0000000
Samuel Conti SC Person Person 0.0061858 0.0000000
Sanaa El-Amin SEA Person Person 0.0061858 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0149121 0.0036998
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0061858 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0143568 0.0015856
SouthSeafood Express Corp SEC Organization FishingCompany 0.0061858 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0169646 0.0121564
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0061858 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0061858 0.0000000
The News Buoy TNB Organization NewsCompany 0.0061858 0.0000000
V. Miesel Shipping VMS Organization Company 0.0061858 0.0000000
WestRiver Shipping KgaA WSK Organization Company 0.0061858 0.0000000
Show the code
nodes_connected_0518 <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  extract_network_snapshot('2035-05-18') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_0518 %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0206528 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0074117 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0103975 0.0047569
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0113530 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0056203 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0168864 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0056203 0.0000000
Elise Hauser EH Person Person 0.0056203 0.0000000
Eun-Ji Park EJP Person Person 0.0056203 0.0000000
Fabio Conti FC Person Person 0.0370364 0.0000000
Fintan Park FP Person Person 0.1204021 0.0110994
FlounderLeska Marine BV FMB Organization FishingCompany 0.0056203 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0305575 0.0211416
Harvey Janus HJ Person Person 0.0086061 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0083672 0.0021142
James Bell JB Person Person 0.0103975 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0113530 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0185188 0.0047569
Lemuel Conti LC Person Person 0.0499256 0.0000000
Lena Conti-Park LCP Person Person 0.2024221 0.0110994
Liam Conti LC Person Person 0.0267173 0.0073996
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0056203 0.0000000
Nadia Conti NC Person Person 0.0283300 0.0068710
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0315941 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0144582 0.0095137
Nathan Conti NC Person Person 0.1111294 0.0095137
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0177871 0.0005285
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0056203 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0176605 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0151748 0.0042283
Rafael Sanchez RS Person Person 0.0094878 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0056203 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0056203 0.0000000
Samuel Conti SC Person Person 0.0056203 0.0000000
Sanaa El-Amin SEA Person Person 0.0056203 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0166836 0.0052854
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0056203 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0130442 0.0015856
SouthSeafood Express Corp SEC Organization FishingCompany 0.0056203 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0277031 0.0248414
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0056203 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0056203 0.0000000
The News Buoy TNB Organization NewsCompany 0.0056203 0.0000000
V. Miesel Shipping VMS Organization Company 0.0103975 0.0052854
WestRiver Shipping KgaA WSK Organization Company 0.0056203 0.0000000
Show the code
nodes_connected_0520 <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  extract_network_snapshot('2035-05-20') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_0520 %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0200378 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0071910 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0100879 0.0047569
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0110149 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0054529 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0163835 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0054529 0.0000000
Elise Hauser EH Person Person 0.0054529 0.0000000
Eun-Ji Park EJP Person Person 0.0054529 0.0000000
Fabio Conti FC Person Person 0.0359335 0.0000000
Fintan Park FP Person Person 0.1213095 0.0121564
FlounderLeska Marine BV FMB Organization FishingCompany 0.0054529 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0296475 0.0211416
Harvey Janus HJ Person Person 0.0083498 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0081180 0.0021142
James Bell JB Person Person 0.0100879 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0110149 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0179674 0.0047569
Lemuel Conti LC Person Person 0.0484389 0.0000000
Lena Conti-Park LCP Person Person 0.2023729 0.0116279
Liam Conti LC Person Person 0.0276357 0.0084567
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0054529 0.0000000
Nadia Conti NC Person Person 0.0289432 0.0073996
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0306533 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0179674 0.0142706
Nathan Conti NC Person Person 0.1103611 0.0095137
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0172575 0.0005285
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0054529 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0177538 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0147229 0.0042283
Rafael Sanchez RS Person Person 0.0094033 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0054529 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0054529 0.0000000
Samuel Conti SC Person Person 0.0054529 0.0000000
Sanaa El-Amin SEA Person Person 0.0054529 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0170411 0.0058140
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0054529 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0126558 0.0015856
SouthSeafood Express Corp SEC Organization FishingCompany 0.0054529 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0302269 0.0290698
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0054529 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0054529 0.0000000
The News Buoy TNB Organization NewsCompany 0.0054529 0.0000000
V. Miesel Shipping VMS Organization Company 0.0147229 0.0105708
WestRiver Shipping KgaA WSK Organization Company 0.0054529 0.0000000
Show the code
nodes_connected_0525 <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  extract_network_snapshot('2035-05-25') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_0525 %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0200305 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0071884 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0054509 0.0000000
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0110109 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0054509 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0163775 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0054509 0.0000000
Elise Hauser EH Person Person 0.0054509 0.0000000
Eun-Ji Park EJP Person Person 0.0054509 0.0000000
Fabio Conti FC Person Person 0.0359203 0.0000000
Fintan Park FP Person Person 0.1197989 0.0121564
FlounderLeska Marine BV FMB Organization FishingCompany 0.0054509 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0296367 0.0211416
Harvey Janus HJ Person Person 0.0083467 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0081151 0.0021142
James Bell JB Person Person 0.0100842 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0110109 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0179608 0.0047569
Lemuel Conti LC Person Person 0.0484212 0.0000000
Lena Conti-Park LCP Person Person 0.2003477 0.0116279
Liam Conti LC Person Person 0.0270662 0.0084567
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0054509 0.0000000
Nadia Conti NC Person Person 0.0284572 0.0073996
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0306421 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0213083 0.0190275
Nathan Conti NC Person Person 0.1094915 0.0095137
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0172511 0.0005285
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0054509 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0175452 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0147175 0.0042283
Rafael Sanchez RS Person Person 0.0093353 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0054509 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0054509 0.0000000
Samuel Conti SC Person Person 0.0054509 0.0000000
Sanaa El-Amin SEA Person Person 0.0054509 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0167560 0.0058140
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0054509 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0126512 0.0015856
SouthSeafood Express Corp SEC Organization FishingCompany 0.0054509 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0291230 0.0290698
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0054509 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0100842 0.0058140
The News Buoy TNB Organization NewsCompany 0.0054509 0.0000000
V. Miesel Shipping VMS Organization Company 0.0186558 0.0158562
WestRiver Shipping KgaA WSK Organization Company 0.0054509 0.0000000
Show the code
nodes_connected_0531 <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  extract_network_snapshot('2035-05-31') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_0531 %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0199053 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0071435 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0054169 0.0000000
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0109421 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0054169 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0162752 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0054169 0.0000000
Elise Hauser EH Person Person 0.0054169 0.0000000
Eun-Ji Park EJP Person Person 0.0054169 0.0000000
Fabio Conti FC Person Person 0.0363196 0.0000000
Fintan Park FP Person Person 0.1198621 0.0121564
FlounderLeska Marine BV FMB Organization FishingCompany 0.0054169 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0294515 0.0211416
Harvey Janus HJ Person Person 0.0082946 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0080643 0.0021142
James Bell JB Person Person 0.0082946 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0109421 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0178485 0.0047569
Lemuel Conti LC Person Person 0.0481186 0.0000000
Lena Conti-Park LCP Person Person 0.2010062 0.0121564
Liam Conti LC Person Person 0.0268970 0.0084567
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0054169 0.0000000
Nadia Conti NC Person Person 0.0282793 0.0073996
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0304506 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0211752 0.0190275
Nathan Conti NC Person Person 0.1102429 0.0105708
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0178771 0.0010571
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0054169 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0174356 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0146255 0.0042283
Rafael Sanchez RS Person Person 0.0092769 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0054169 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0054169 0.0000000
Samuel Conti SC Person Person 0.0071435 0.0031712
Sanaa El-Amin SEA Person Person 0.0054169 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0166513 0.0058140
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0054169 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0133059 0.0031712
SouthSeafood Express Corp SEC Organization FishingCompany 0.0054169 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0289409 0.0290698
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0054169 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0100212 0.0058140
The News Buoy TNB Organization NewsCompany 0.0054169 0.0000000
V. Miesel Shipping VMS Organization Company 0.0185392 0.0158562
WestRiver Shipping KgaA WSK Organization Company 0.0054169 0.0000000
Show the code
nodes_connected_0602 <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  extract_network_snapshot('2035-06-02') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_0602 %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0205030 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0073580 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0055795 0.0000000
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0112706 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0055795 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0167639 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0055795 0.0000000
Elise Hauser EH Person Person 0.0055795 0.0000000
Eun-Ji Park EJP Person Person 0.0055795 0.0000000
Fabio Conti FC Person Person 0.0374102 0.0000000
Fintan Park FP Person Person 0.1170988 0.0110994
FlounderLeska Marine BV FMB Organization FishingCompany 0.0055795 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0303358 0.0211416
Harvey Janus HJ Person Person 0.0085436 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0083065 0.0021142
James Bell JB Person Person 0.0085436 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0112706 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0183845 0.0047569
Lemuel Conti LC Person Person 0.0495635 0.0000000
Lena Conti-Park LCP Person Person 0.1985752 0.0116279
Liam Conti LC Person Person 0.0252774 0.0073996
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0055795 0.0000000
Nadia Conti NC Person Person 0.0270653 0.0068710
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0313650 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0218110 0.0190275
Nathan Conti NC Person Person 0.1099549 0.0105708
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0184140 0.0010571
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0055795 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0170823 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0150647 0.0042283
Rafael Sanchez RS Person Person 0.0092751 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0055795 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0055795 0.0000000
Samuel Conti SC Person Person 0.0073580 0.0031712
Sanaa El-Amin SEA Person Person 0.0055795 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0159416 0.0052854
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0055795 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0137055 0.0031712
SouthSeafood Express Corp SEC Organization FishingCompany 0.0055795 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0250674 0.0248414
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0055795 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0103221 0.0058140
The News Buoy TNB Organization NewsCompany 0.0055795 0.0000000
V. Miesel Shipping VMS Organization Company 0.0190959 0.0158562
WestRiver Shipping KgaA WSK Organization Company 0.0055795 0.0000000
Show the code
nodes_connected_0610 <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  extract_network_snapshot('2035-06-10') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_0610 %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0204901 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0073534 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0055760 0.0000000
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0112635 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0055760 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0167533 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0055760 0.0000000
Elise Hauser EH Person Person 0.0055760 0.0000000
Eun-Ji Park EJP Person Person 0.0055760 0.0000000
Fabio Conti FC Person Person 0.0373867 0.0000000
Fintan Park FP Person Person 0.1145089 0.0110994
FlounderLeska Marine BV FMB Organization FishingCompany 0.0055760 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0303168 0.0211416
Harvey Janus HJ Person Person 0.0085383 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0083013 0.0021142
James Bell JB Person Person 0.0085383 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0112635 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0183729 0.0047569
Lemuel Conti LC Person Person 0.0495323 0.0000000
Lena Conti-Park LCP Person Person 0.1951019 0.0116279
Liam Conti LC Person Person 0.0291080 0.0073996
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0055760 0.0000000
Nadia Conti NC Person Person 0.0303178 0.0068710
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0313453 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0217973 0.0190275
Nathan Conti NC Person Person 0.1084627 0.0105708
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0184024 0.0010571
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0055760 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0184611 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0150552 0.0042283
Rafael Sanchez RS Person Person 0.0091583 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0055760 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0055760 0.0000000
Samuel Conti SC Person Person 0.0073534 0.0031712
Sanaa El-Amin SEA Person Person 0.0055760 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0154531 0.0052854
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0055760 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0136968 0.0031712
SouthSeafood Express Corp SEC Organization FishingCompany 0.0055760 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0250516 0.0248414
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0055760 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0103156 0.0058140
The News Buoy TNB Organization NewsCompany 0.0055760 0.0000000
V. Miesel Shipping VMS Organization Company 0.0190839 0.0158562
WestRiver Shipping KgaA WSK Organization Company 0.0055760 0.0000000
Show the code
nodes_connected_1115 <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  extract_network_snapshot('2035-11-15') %>%
  mutate(
    pagerank = centrality_pagerank(weights = E(.)$weight),
    betweenness = centrality_betweenness(weights = E(.)$weight, normalized = TRUE)
  ) %>%
  as_data_frame(what="vertices")

nodes_connected_1115 %>% arrange(name) %>% select(-name) %>% kable()
alias supertype subtype pagerank betweenness
4. SeaCargo Ges.m.b.H. 4SGm Organization LogisticsCompany 0.0203766 0.0015856
9. RiverLine CJSC 9RC Organization Company 0.0073598 0.0010571
AguaLeska Transit N.V. ATNV Organization FishingCompany 0.0055809 0.0000000
ArawakFish Cargo Ges.m.b.H. ACGm Organization Company 0.0112734 0.0042283
BaringoAmerica Marine Ges.m.b.H. BMGm Organization FishingCompany 0.0055809 0.0000000
Dry CreekRybachit Marine A/S DCMA Organization FishingCompany 0.0163556 0.0036998
Dry CreekWorldLogistics Ltd. Liability Co DCLL Organization LogisticsCompany 0.0055809 0.0000000
Elise Hauser EH Person Person 0.0055809 0.0000000
Eun-Ji Park EJP Person Person 0.0055809 0.0000000
Fabio Conti FC Person Person 0.0374194 0.0000000
Fintan Park FP Person Person 0.1146091 0.0110994
FlounderLeska Marine BV FMB Organization FishingCompany 0.0055809 0.0000000
GvardeyskAmerica Shipping Plc GSP Organization Company 0.0303433 0.0211416
Harvey Janus HJ Person Person 0.0090309 0.0000000
HomabayMarine Carriers N.V. HCNV Organization Company 0.0078234 0.0021142
James Bell JB Person Person 0.0085457 0.0000000
KambalaSea Freight Inc KFI Organization Company 0.0112734 0.0021142
KisumuSeafoodBrothers Ltd KL Organization FishingCompany 0.0183890 0.0047569
Lemuel Conti LC Person Person 0.0492448 0.0000000
Lena Conti-Park LCP Person Person 0.1952726 0.0116279
Liam Conti LC Person Person 0.0291335 0.0073996
Maacama Ocean Worldwide LLC MOWL Organization FishingCompany 0.0055809 0.0000000
Nadia Conti NC Person Person 0.0303444 0.0068710
NamRiver Transit A/S NTAS Organization LogisticsCompany 0.0313727 0.0211416
Namorna Transit Ltd NTL Organization Company 0.0218164 0.0190275
Nathan Conti NC Person Person 0.1085576 0.0105708
NyanzaRiver Worldwide AS NWA Organization FishingCompany 0.0184185 0.0010571
Oka Charter Boat Transport OJSC OCBT Organization Company 0.0055809 0.0000000
Oka Seafood Shipping Ges.m.b.H. OSSG Organization FishingCompany 0.0184772 0.0052854
OranjestadCreek Express Sagl OES Organization Company 0.0150684 0.0042283
Rafael Sanchez RS Person Person 0.0091663 0.0000000
RechFish Freight Plc RFP Organization LogisticsCompany 0.0055809 0.0000000
SamakaDredgeTransport OJSC SO Organization Company 0.0055809 0.0000000
Samuel Conti SC Person Person 0.0073598 0.0031712
Sanaa El-Amin SEA Person Person 0.0055809 0.0000000
SavanetaCreek Solutions NV SSN Organization LogisticsCompany 0.0154666 0.0052854
ScaniaSeafood Holdings Ltd. Liability Co SHLL Organization FishingCompany 0.0055809 0.0000000
SouthLeska Worldwide AS SWA Organization FishingCompany 0.0137088 0.0031712
SouthSeafood Express Corp SEC Organization FishingCompany 0.0055809 0.0000000
StichtingMarine Shipping Company SSC Organization FishingCompany 0.0250736 0.0248414
SumacAmerica Transport GmbH & Co. KG STGC Organization LogisticsCompany 0.0055809 0.0000000
Tainamarine Fishing Co TFC Organization FishingCompany 0.0103246 0.0058140
The News Buoy TNB Organization NewsCompany 0.0055809 0.0000000
V. Miesel Shipping VMS Organization Company 0.0191006 0.0158562
WestRiver Shipping KgaA WSK Organization Company 0.0055809 0.0000000

We will combine everything in the template graph

Show the code
sfec_connected_network_power <- sfec_connected_network_power %>%
  select(name, alias, supertype, subtype) %>%
  left_join(
    nodes_connected_0514 %>% rename(
      d_20350514.pagerank = pagerank,
      d_20350514.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_connected_0515 %>% rename(
      d_20350515.pagerank = pagerank,
      d_20350515.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_connected_0518 %>% rename(
      d_20350518.pagerank = pagerank,
      d_20350518.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_connected_0520 %>% rename(
      d_20350520.pagerank = pagerank,
      d_20350520.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_connected_0525 %>% rename(
      d_20350525.pagerank = pagerank,
      d_20350525.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_connected_0531 %>% rename(
      d_20350531.pagerank = pagerank,
      d_20350531.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_connected_0602 %>% rename(
      d_20350602.pagerank = pagerank,
      d_20350602.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_connected_0610 %>% rename(
      d_20350610.pagerank = pagerank,
      d_20350610.betweenness = betweenness
    )
  ) %>%
  left_join(
    nodes_connected_1115 %>% rename(
      d_20351115.pagerank = pagerank,
      d_20351115.betweenness = betweenness
    )
  )

9.3 Question 3

  1. Develop a visual approach to examine inferences. Infer how the influence of a company changes through time. Can you infer ownership or influence that a network may have?

We can figure out the influential entities in the network using the criteria we have for Power Holders and Power Brokers

9.3.1 Power Holders

Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350514.pagerank",
    datestring = "2035-05-14",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 14, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 14, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350515.pagerank",
    datestring = "2035-05-15",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 15, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 15, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350518.pagerank",
    datestring = "2035-05-18",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 18, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 0.20 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 18, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350520.pagerank",
    datestring = "2035-05-20",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 20, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 0.20 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 20, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350525.pagerank",
    datestring = "2035-05-25",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 25, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 0.20 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 25, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350531.pagerank",
    datestring = "2035-05-31",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (May 31, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 0.20 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (May 31, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350602.pagerank",
    datestring = "2035-06-02",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (June 2, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (June 2, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350610.pagerank",
    datestring = "2035-06-10",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (June 10, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (June 10, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20351115.pagerank",
    datestring = "2035-11-15",
    title = "The Power Holders: SouthSeafood Express Corp's Sphere of Influence (November 15, 2035)",
    subtitle = "A higher value of **pagerank centrality** means the entity has higher power and gets more benefits from the network.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor PageRank Score 0.05 0.10 0.15 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of pagerank centrality means the entity has higher power and gets more benefits from the network. The Power Holders: SouthSeafood Express Corp’s Sphere of Influence (November 15, 2035)
Insights

As stated in 8.2 Power Holders - Connected Network, the power holders in the network have the highest value in pagerank centrality and in this context, those entities are the Conti Clan members and the companies closely associated with them.

These entities are the ones pulling the strings of the network behind the scenes.

After the actions of LIam Conti, there is s very little change in the power dynamics within the network. This could reflect the reality that already powerful people stay or get more powerful.

However, there seems to be an important flaw in our model acknowledged in the Insights of 8.2 Power Holders - Connected Network such that our model of family relations score much higher than business relations in this business network.

9.3.1 Power Brokers

Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350514.betweenness",
    datestring = "2035-05-14",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (May 14, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.000 0.005 0.010 0.015 0.020 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (May 14, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350515.betweenness",
    datestring = "2035-05-15",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (May 15, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.000 0.005 0.010 0.015 0.020 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (May 15, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350518.betweenness",
    datestring = "2035-05-18",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (May 18, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.000 0.005 0.010 0.015 0.020 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (May 18, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350520.betweenness",
    datestring = "2035-05-20",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (May 20, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.00 0.01 0.02 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (May 20, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350525.betweenness",
    datestring = "2035-05-25",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (May 25, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.00 0.01 0.02 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (May 25, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350531.betweenness",
    datestring = "2035-05-31",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (May 31, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.00 0.01 0.02 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (May 31, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350531.betweenness",
    datestring = "2035-06-02",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (June 2, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.00 0.01 0.02 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (June 2, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20350610.betweenness",
    datestring = "2035-06-10",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (June 10, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.000 0.005 0.010 0.015 0.020 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (June 10, 2035)
Show the code
sfec_connected_network_power %>%
  plot_centrality(
    centrality_col = "d_20351115.betweenness",
    datestring = "2035-11-15",
    title = "The Power Brokers: SouthSeafood Express Corp's Connected Network (November 15, 2035)",
    subtitle = "A higher value of **betweenness centrality** means the entity is more capable of connecting entities.",
    caption = "Bigger and brighter nodes are more influential. Hover on the nodes to see more details.")
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Edge Subtypes FamilyRelationship HasShareholder OwnedBy WorksFor Betweenness Score 0.000 0.005 0.010 0.015 0.020 Bigger and brighter nodes are more influential. Hover on the nodes to see more details. A higher value of betweenness centrality means the entity is more capable of connecting entities. The Power Brokers: SouthSeafood Express Corp’s Connected Network (November 15, 2035)
Insights

Before Liam Conti’s actions, StichtingMarine Shipping Company is not a strong power broker. However after distancing himself from SouthSeafood Express Corp, this became a very important node as the only way to access SouthSeafood Express Corp is through StichtingMarine Shipping Company.

9.4 Question 4

  1. Identify the network associated with SouthSeafood Express Corp and visualize how this network and competing businesses change as a result of their illegal fishing behavior. Which companies benefited from SouthSeafood Express Corp legal troubles? Are there other suspicious transactions that may be related to illegal fishing? Provide visual evidence for your conclusions.

The previous question already covers the change in influence of entities. For this part, we will focus on the suspicious transactions.

9.4.1 Transaction Timeline

We will plot the relationship graph through time to see how the network changed. Each tab describes the transactions that happened on that day and the implications of those transactions.

The dates are based on 9.1 Looking for suspicious dates.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c("SouthSeafood Express Corp"),
  datestring = "2035-05-14",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 14, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (May 14, 2035)
  • SouthSeafood Express Corp is under StichtingMarine Shipping Company through AguaLeska Transit N.V.

By this time, SouthSeafood Express Corp illegal fishing activities have already been discovered, with the people responsible being at risk of penalties or other negative consequences.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c("Liam Conti", "AguaLeska Transit N.V."),
  datestring = "2035-05-15",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 15, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (May 15, 2035)
  • Liam Conti gives up shareholdership of AguaLeska Transit N.V.

This first step for Liam Conti to distance himself from SouthSeafood Express Corp to lower the risk of him getting penalized for illegal fishing activities.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c(
      "V. Miesel Shipping",
      "Namorna Transit Ltd",
      "StichtingMarine Shipping Company",
      "Elise Hauser"
    ),
  datestring = "2035-05-18",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 18, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (May 18, 2035)
  • Namorna Transit Ltd established under StichtingMarine Shipping Company

  • V. Miesel Shipping established Namorna Transit Ltd, with Elise Hauser as an employee to take care of the next actions.

Tip

These companies were established to further distance Liam Conti from the discovered illegal fishing activities.

An employee, Elise Hauser, was hired to potentially be in charge of V. Miesel Shipping and take care of the next steps.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c("Tainamarine Fishing Co", "V. Miesel Shipping"),
  datestring = "2035-05-20",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 20, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (May 20, 2035)
  • Tainamarine Fishing Co was established under V. Miesel Shipping

This transaction could have been executed by Elise Hauser.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c(
    "SouthSeafood Express Corp",
    "Tainamarine Fishing Co",
    "AguaLeska Transit N.V."
  ),
  datestring = "2035-05-25",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 25, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (May 25, 2035)
  • SouthSeafood Express Corp had a transfer of shareholdership from AguaLeska Transit N.V. to Tainamarine Fishing Co

This transaction puts Liam Conti and StichtingMarine Shipping Company outside of SouthSeafood Express Corp’s Sphere of Influence as we have observed in 5.2.2 By hiding inactive edges.

It could’ve put Liam Conti in a safer position against penalties.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c("The News Buoy", "Samuel Conti"),
  datestring = "2035-05-31",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 31, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (May 31, 2035)
  • Samuel Conti, a Conti Clan member becomes a shareholder of The News Buoy, a News Company

Although not formally marked as related to Liam Conti, this transaction by Samuel Conti is suspicious as he is part of Conti Clan.

This could be an effort to control the narrative and get good publicity for the Contis and their businesses.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c("StichtingMarine Shipping Company", "AguaLeska Transit N.V."),
  datestring = "2035-06-02",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (June 2, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (June 2, 2035)
  • AguaLeska Transit N.V. becomes “orphaned” after StichtingMarine Shipping Company gives up its shareholdership.

As StichtingMarine Shipping Company is a very important company for Liam Conti, it is important to get rid of close associations to SouthSeafood Express Corp.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c("StichtingMarine Shipping Company", "Liam Conti"),
  datestring = "2035-06-10",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (June 10, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (June 10, 2035)
  • Liam Conti becomes a shareholder of StichtingMarine Shipping Company. This is on top of him being a beneficial owner.

This gives more power to LIam Conti on his most important company.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c("Harvey Janus", "SamakaDredgeTransport OJSC"),
  datestring = "2035-11-15",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (November 15, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (November 15, 2035)

This event look irrelevant to the Conti Clan’s actions.

9.4.2 Overall Insights

The entities that benefit the most from SouthSeafood Express Corp illegal fishing activities are:

  • AguaLeska Transit N.V.

  • StichtingMarine Shipping Company

  • Liam Conti

We can see this from the network structure before Liam Conti distanced himself from SouthSeafood Express Corp.

Show the code
extract_subnetwork(
  supernetwork,
  node_name="SouthSeafood Express Corp"
) %>% plot_fishing_relationships(
  emphasize_nodes = c("SouthSeafood Express Corp", "AguaLeska Transit N.V.", "StichtingMarine Shipping Company", "Liam Conti"),
  datestring = "2035-05-14",
  node_size = 5,
  arrow_margin = 2,
  title = "Relationship Graph: SouthSeafood Express Corp's Full Network (May 14, 2035)",
  subtitle = "This shows the full view of the network connected to SouthSeafood Express Corp in any way."
)
TNB JB 4SGm 9RC ATNV ACGm BMGm DCMA DCLL FMB GSP HCNV KFI KL MOWL NTL NTAS NWA OCBT OSSG OES RFP SO SSN SHLL SWA SEC SSC STGC TFC VMS WSK FC LC SC LCP NC LC NC FP RS SEA EJP EH HJ Node Supertypes Organization Person Node Subtypes Company FishingCompany LogisticsCompany NewsCompany Person Edge Subtypes BeneficialOwnership FamilyRelationship Shareholdership WorksFor Hover on the nodes to see more details. This shows the full view of the network connected to SouthSeafood Express Corp in any way. Relationship Graph: SouthSeafood Express Corp’s Full Network (May 14, 2035)

10 References

https://blogs.cornell.edu/info2040/2015/10/19/three-degrees-of-influence-how-far-can-you-reach-people/

https://www.strategy-business.com/article/10218

Disney, A. (2020, January 14). PageRank centrality & EigenCentrality. Cambridge Intelligence. https://cambridge-intelligence.com/eigencentrality-pagerank/