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()
, andnode_eigenvector()
- Centralization:
graph_degree()
,graph_closeness()
,graph_betweenness()
, andgraph_eigenvector()
- Cohesion:
graph_density()
,graph_reciprocity()
,graph_transitivity()
,graph_equivalency()
, andgraph_congruency()
- Censuses:
node_tie_census()
,node_dyad_census()
,node_triad_census()
,node_mixed_census()
,node_quad_census()
, andgraph_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.