Skip to main content

PyMC3-like abstractions for pyro's stochastic function. Define a model as a stochastic function in pyro. Use pm_like wrapper to create a PyMC3-esque Model. Random variables are exposed to user as attributes of Model. pm-pyro provides abstractions for inference (NUTS : No-U-Turn Sampler), trace plots, posterior plot and posterior predictive plots.

Install

Install from pypi

pip install pm-pyro

Developer setup

# install requirements
pip install -r requirements-dev.txt
# run tests
python -m pytest pmpyro/tests.py

Example

Borrowed this example from a PyMC3 tutorial. Outcome variables Y is dependent on 2 features X_1 and X_2. The notebook for this example is available here

Model Specification

We design a simple Bayesian Linear Regression model.

Stochastic Function

The model specification is implemented as a stochastic function.

import pyro.distributions as dist
import pyro
import torch

def pyro_model(x1, x2, y):
    alpha = pyro.sample('alpha', dist.Normal(0, 10))
    beta = pyro.sample('beta',pdist.Normal(torch.zeros(2,), torch.ones(2,) * 10.))
    sigma = pyro.sample('sigma', dist.HalfNormal(1.))

    # Expected value of outcome
    mu = alpha + beta[0] * x1 + beta[1] * x2

    # Likelihood (sampling distribution) of observations
    return pyro.sample('y_obs', dist.Normal(mu, sigma), obs=y)

Context-manager Syntax

The pm_like wrapper creates a PyMC3-esque Model. We can use the context manager syntax for running inference. pm.sample samples from the model using the NUTS sampler. The trace is a python dictionary which contains the samples.

from pmpyro import pm_like
import pmpyro as pm

with pm_like(pyro_model, X1, X2, Y) as model:
    trace = pm.sample(1000)
sample: 100%|██████████| 1300/1300 [00:16, 80.42it/s, step size=7.49e-01, acc. prob=0.911] 

Traceplot

We can visualize the samples using traceplot. Select random variables by passing them as a list via var_names = [ 'alpha' ... ] argument.

pm.traceplot(trace)

Plot Posterior

Visualize posterior of random variables using plot_posterior.

pm.plot_posterior(trace, var_names=['beta'])

Posterior Predictive Samples

We can sample from the posterior by running plot_posterior_predictive or sample_posterior_predictive with the same function signatures as the stochastic function def pyro_model(x1, x2, y), replacing observed variable Y with None.

ppc = pm.plot_posterior_predictive(X1, X2, None,
                          trace=trace, model=model, samples=60,
                          alpha=0.08, obs={'y_obs' : Y})

Trace Summary

The summary of random variables is available as a pandas array.

pm.summary()

License

This project is licensed under the GPL v3 License - see the LICENSE.md file for details

Metadata

Release files for pm-pyro 0.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pm-pyro 0.3.3
File Size Uploaded
pm-pyro-0.3.3.tar.gz 8.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pm-pyro 0.3.3
File Interpreter ABI Platform
pm_pyro-0.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 32.0 kB

Release files / pm-pyro-0.3.3.tar.gz

Download URL pm-pyro-0.3.3.tar.gz
Size 8.9 kB
Tags Source
SHA-256 checksum
How to use checksums
0b9841d7363c1805a7794a20ca342ce3bf67f13d56beb7747ea0ff0c245f1297
BLAKE2b-256 checksum
How to use checksums
8f8807fc239ccbbabe5cc79180ed6e4da77227c70fc9de163a661e61dee3467b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

Release files / pm_pyro-0.3.3-py3-none-any.whl

Download URL pm_pyro-0.3.3-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c7c6475fbc62b486c2dca5fde9c1369546ab97601433663291fd642f916226ae
BLAKE2b-256 checksum
How to use checksums
207d8c35154eeecd3c05079acdfe94ac3fea0089734ff8f56819027de0c27ad7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

Release history Release notifications | RSS feed

This release

0.3.3 This release

2 release files

0.3.2

2 release files

0.3.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page