Learn R Programming

⚠️There's a newer version (0.12.1) of this package.Take me there.

migraph

About the package

This package extends existing network analysis packages for analysing multimodal and multilevel networks. The package is intended as a software companion to the book:

David Knoke, Mario Diani, James Hollway, and Dimitris Christopoulos (2021) Multimodal Political Networks. Cambridge University Press: Cambridge.

How does migraph help?

Works with your current network analysis workflow

The package is offered as a complement to existing R packages for network analysis and thus tries to work well with whatever format network objects you are already working with. All {migraph} measures and models work with data in base formats:

  • adjacency and incidence matrices
  • one-mode and two-mode data frame edgelists

as well as with objects constructed from the following packages:

{migraph}’s as_*() functions can be used to translate objects from one of the above classes into any other, and include:

  • as_edgelist(), as_igraph(), as_matrix(), as_network(), as_tidygraph()

These functions are designed to be as intuitive and lossless as possible, outperforming many other class-coercion packages.

Manipulation

Regardless of which class object you are working with, the same syntax can be used to work with and manipulate your data.

{migraph}’s is_*() functions offer fast logical tests of network properties, e.g.:

  • is_acyclic(), is_bipartite(), is_complex(), is_connected(), is_directed(), is_edgelist(), is_graph(), is_labelled(), is_migraph(), is_multiplex(), is_signed(), is_twomode(), is_uniplex(), is_weighted()

{migraph}’s to_*() functions can be used on any class object to transform networks into networks with other properties, e.g.:

  • to_main_component(), to_mode1(), to_mode2(), to_multilevel(), to_named(), to_onemode(), to_simplex(), to_undirected(), to_uniplex(), to_unnamed(), to_unsigned(), to_unweighted()

Making

{migraph} includes algorithms for making both one-mode and two-mode networks with particular properties. The create_* group of functions create networks with a particular structure, e.g.:

  • create_complete(), create_components(), create_empty(), create_lattice(), create_ring(), create_star(), create_tree()

The generate_* group of functions generate networks from particular generative mechanisms, e.g.:

  • generate_permutation(), generate_random(), generate_scalefree(), generate_smallworld()

{migraph} includes a number of prominent network datasets, especially multimodal and multiplex examples for demonstrating more advanced methods.

  • mpn_bristol, mpn_DE_1990, mpn_DE_2008, mpn_DemSxP, mpn_elite_mex, mpn_elite_usa_advice, mpn_elite_usa_money, mpn_IT_1990, mpn_IT_2008, mpn_OverSxP, mpn_RepSxP, mpn_ryanair, mpn_UK_1990, mpn_UK_2008
  • ison_adolescent_friends, ison_algebra_class, ison_bb, ison_bm, ison_brandes, ison_eies, ison_karateka, ison_marvel_relationships, ison_marvel_teams, ison_mb, ison_mm, ison_southern_women

{migraph} can also import and export to Excel edgelists and nodelists, UCINET and Pajek files, e.g.:

  • read_edgelist(), read_nodelist(), read_pajek(), read_ucinet()
  • write_edgelist(), write_nodelist(), write_pajek(), write_ucinet()

Extends your current network analysis workflow

{migraph} offers a range of measures and models with sensible defaults. Many wrap existing functions in common packages for use with one-mode networks, but extend these to treat and/or normalise for two-mode (and sometimes three-mode) networks correctly. Functions are given intuitive and succinct names that avoid conflicts with existing function names wherever possible.

Measures

  • Centrality: node_degree(), node_closeness(), node_betweenness(), and node_eigenvector()
  • Centralization: graph_degree(), graph_closeness(), graph_betweenness(), and graph_eigenvector()
  • Cohesion: graph_density(), graph_reciprocity(), graph_transitivity(), graph_equivalency(), and graph_congruency()
  • Censuses: node_tie_census(), node_dyad_census(), node_triad_census(), node_mixed_census(), node_quad_census(), and graph_triad_census()
  • Other measures: e.g. node_constraint(), graph_smallworld()

Models

  • Blockmodelling: blockmodel_concor(), cluster_structural_equivalence(), cluster_regular_equivalence()
  • Linear and logistic regression for networks (via MRQAP): network_reg()

Visualization

  • autographr() for plotting graphs with sensible defaults based on their properties
  • New layouts: e.g. layout_tbl_graph_frgrid() for snapping Fruchterman-Reingold to a grid
  • Class-based plots: e.g. plot.blockmodel()

Please explore the list of functions to find out more.

Installation

Stable

The easiest way to install the latest stable version of {migraph} is via CRAN. Simply open the R console and enter:

install.packages('migraph')

You can then begin to use {migraph} by loading the package:

library(migraph)

This will load any required packages and make the data contained within the package available. The version from CRAN also has all the vignettes built and included. You can check them out with:

vignettes(package = "migraph")

Development

For the latest development version, for slightly earlier access to new features or for testing, you may wish to download and install the binaries from Github or install from source locally.

The latest binary releases for all major OSes – Windows, Mac, and Linux – can be found here. Download the appropriate binary for your operating system, and install using an adapted version of the following commands:

  • For Windows: install.packages("~/Downloads/migraph_winOS.zip", repos = NULL)
  • For Mac: install.packages("~/Downloads/migraph_macOS.tgz", repos = NULL)
  • For Unix: install.packages("~/Downloads/migraph_linuxOS.tar.gz", repos = NULL)

To install from source the latest main version of {migraph} from Github, please install the {remotes} or {devtools} package from CRAN and then:

  • For latest stable version: remotes::install_github("snlab-ch/migraph")
  • For latest development version: remotes::install_github("snlab-ch/migraph@develop")

Relationship to other packages

It draws together, updates, and builds upon many functions currently available in other excellent R packages such as {bipartite}, {multinet}, and {tnet}, and implements many additional features currently only available outside the R ecosystem in packages such as UCINET.

Copy Link

Version

Install

install.packages('migraph')

Monthly Downloads

856

Version

0.9.3

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

James Hollway

Last Published

April 14th, 2022

Functions in migraph (0.9.3)

census

Census by nodes or clusters
blockmodel

Blockmodelling
graph_smallworld

Watts-Strogatz small-world model for two-mode networks
ison_karateka

One-mode karateka network (Zachary 1977)
ggevolution

Plot the evolution of a network
ggatyear

Plotting a network at a particular timepoint (year)
ison_brandes

One-mode centrality demonstration network
create

Create networks with particular structures
node_constraint

Constraint for one- and two-mode networks
defunct

Functions that have been renamed, superseded, or are no longer working
ison_algebra

Multiplex graph object of friends, social, and task ties (McFarland 2001)
mpn_senate112

Two-mode 112th Congress Senate Voting (Knoke et al. 2021)
ison_adolescents

One-mode subset of the adolescent society (Coleman 1961)
diversity

Measures of network diversity
is

Logical tests of network properties
autographr

Quickly graph networks with sensible defaults
read

Reading from/writing to external formats
generate

Create networks from particular probabilities
graph_balance

Structural balance
mpn_elite_usa

Two-mode and three-mode American power elite database (Domhoff 2016)
to

Tools for reformatting networks, graphs, and matrices
mpn_elite_mex

One-mode Mexican power elite database (Knoke 1990)
mpn_ryanair

One-mode EU policy influence network, June 2004 (Christopoulos 2006)
grab

Helpers to grab various attributes from nodes or edges in a graph
gglineage

Plot lineage graph
ison_southern_women

Two-mode southern women (Davis, Gardner and Gardner 1941)
reexports

Objects exported from other packages
ison_projection

Two-mode projection examples (Hollway 2021)
mpn_evs

Two-mode European Values Survey, 1990 and 2008 (EVS 2020)
regression

Linear and logistic regression for network data
graph_census

Censuses for the whole graph
ison_marvel

Multilevel two-mode affiliation, signed one-mode networks of Marvel comic book characters (Y<U+00FC>ksel 2017)
tests

Conditional uniform graph and permutation tests
layouts

Layouts for snapping layouts to a grid
ison_networkers

One-mode EIES dataset (Freeman and Freeman 1979)
mpn_bristol

Multimodal (3) Bristol protest events, 1990-2002 (Diani and Bison 2004)
cohesion

Cohesion for one-, two-, and three- mode networks
add

Adding and copying attributes from one graph to another
blockmodel_vis

ggplot2-based plotting of blockmodel results
centrality

Centrality and centralization for one- and two-mode networks
cluster

Clustering algorithms
connectedness

Network connectedness
coercion

Coercion between migraph-compatible object classes