Skip to main content

Quadratic approximation for PyMC3

Project description

pymc3-quap

The quadratic approximation is a very fast method to approximate the posterior with a multivariate normal.

NOTE: The quadratic approximation only works well if the posterior is uni-modal and roughly symmetrical.

Example

import numpy as np
import pymc3 as pm
import arviz as az
from quap import quap
y = np.array([2642, 3503, 4358]*10)

# Normal with unknown mean and log-variance, with uniform priors 
with pm.Model() as m: 
  logsigma = pm.Uniform("logsigma", -100, 100)
  mu = pm.Uniform("mu", -10000, 10000) 
  yobs = pm.Normal("y", mu=mu, sigma=pm.math.exp(logsigma), observed=y)
  idata, posterior = quap([mu, logsigma])

az.plot_posterior(idata)

Approximate posterior

idata is an arviz.InferenceData with samples from the approximate posterior for compatibility with the Arviz ecosystem.

posterior is the exact approximate posterior scipy.stats.multivariate_normal

True and quadratic approximation of posterior

True posterior and quadratic approximation for the example above.

Install

pip install pymc3-quap

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

pymc3-quap-1.0.2.tar.gz (3.2 kB view hashes)

Uploaded Source

Built Distribution

pymc3_quap-1.0.2-py3-none-any.whl (4.9 kB view hashes)

Uploaded Python 3

Supported by

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