Skip to main content

Exponential Random Graph Models in Python

Project description

pyERGM - A Python implementation for ERGM's

An exponential random graphs model (ERGM) is a statistical model that describes a distribution of random graphs. This package provides a simple and easy way to fit and sample from ERGMs.

An ERGM defines a random variable $\mathbf{Y}$, which is simply a random graph on $n$ nodes. The probability of observing a specific graph $y\in \lbrace 0,1 \rbrace ^{n \times n}$ is given by -

$$\Pr(\mathbf{Y}=y | \theta) = \frac{\exp(\theta^Tg(y))}{\sum_{z\in\mathcal{Y}} \exp(\theta^Tg(z))}$$

where $g(y)$ is a vector of statistics that describe the graph $y$, and $\theta \in \mathbb{R}^q$ is a vector of model parameters. Each graph is represented by a binary adjacency matrix, where $y_{ij}=1$ if there is an edge between nodes $i$ and $j$ (and $y_{ji}=1$ in the undirected case).

Fitting a model for even moderately large graphs can be a computationally challenging task. pyERGM keeps this in mind and is implemented to be efficient and scalable by using numpy and Numba, as well as providing an interface for fitting models on a distributed computing environment.

View the full documentation here

Installation

https://pypi.org/project/pyERGM/

Getting started

Fitting an ERGM model requires a graph and a set of statistics that describe the graph. The model is then fit by maximizing the likelihood of the observed graph under the model.

The following example demonstrates how to fit a simple ERGM model from Sampson's monastery data.

from pyERGM import ERGM
from pyERGM.metrics import *
from pyERGM.datasets import load_sampson

sampson_matrix = load_sampson()

num_nodes = sampson_matrix.shape[0]
is_directed = True
metrics = [NumberOfEdgesDirected(), TotalReciprocity()]

model = ERGM(num_nodes, metrics, is_directed=is_directed)
model.fit(sampson_matrix)

The above example fits a model from the Sampson's monastery data using the number of edges and total reciprocity as statistics. The graph is represented as an adjacency matrix, but pyERGM also supports graphs represented as networkx objects (however there may be performance implications for that).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyERGM-0.2.5.tar.gz (63.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyERGM-0.2.5-py3-none-any.whl (65.6 kB view details)

Uploaded Python 3

File details

Details for the file pyERGM-0.2.5.tar.gz.

File metadata

  • Download URL: pyERGM-0.2.5.tar.gz
  • Upload date:
  • Size: 63.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.8

File hashes

Hashes for pyERGM-0.2.5.tar.gz
Algorithm Hash digest
SHA256 4c29fb3aa333fbb62bce753fcf7536db1bf2f8c0bb377656ef3bc34c2c511cb4
MD5 6258adc8dcb25d7a06864c45c2d6dc57
BLAKE2b-256 f1d7b143818bfa1c92ea3a257608d9d8f6f1b1a96ee3a705aff141528dbe1dd9

See more details on using hashes here.

File details

Details for the file pyERGM-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: pyERGM-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 65.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.8

File hashes

Hashes for pyERGM-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 7f1a7dab42a6b5cd2fe17948cf7de8d10393e07a8288b3d42b49a3d116b87551
MD5 785c231b644c6216ea9d6f8fb301c656
BLAKE2b-256 871384c79d60ad8f65451a83a3c8a2cdfb96b6bdd1e6732e298ead8ad64f90f8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page