probnum.quad.bayesquad(fun, input_dim, kernel=None, domain=None, measure=None, policy='bmc', max_evals=None, var_tol=None, rel_tol=None, batch_size=1, rng=Generator(PCG64) at 0x7F9633319040)[source]

Infer the solution of the uni- or multivariate integral \(\int_\Omega f(x) d \mu(x)\) on a hyper-rectangle \(\Omega = [a_1, b_1] \times \cdots \times [a_D, b_D]\).

Bayesian quadrature (BQ) infers integrals of the form

\[F = \int_\Omega f(x) d \mu(x),\]

of a function \(f:\mathbb{R}^D \mapsto \mathbb{R}\) integrated on the domain \(\Omega \subset \mathbb{R}^D\) against a measure \(\mu: \mathbb{R}^D \mapsto \mathbb{R}\).

Bayesian quadrature methods return a probability distribution over the solution \(F\) with uncertainty arising from finite computation (here a finite number of function evaluations). They start out with a random process encoding the prior belief about the function \(f\) to be integrated. Conditioned on either existing or acquired function evaluations according to a policy, they update the belief on \(f\), which is translated into a posterior measure over the integral \(F\). See Briol et al. 1 for a review on Bayesian quadrature.

Return type

Tuple[Normal, BQInfo]


  • integral – The integral of fun on the domain.

  • info – Information on the performance of the method.

  • ValueError – If neither a domain nor a measure are given.

  • ValueError – If a domain is given with a Gaussian measure.



Briol, F.-X., et al., Probabilistic integration: A role in statistical computation?, Statistical Science 34.1, 2019, 1-22, 2019


Rasmussen, C. E., and Z. Ghahramani, Bayesian Monte Carlo, Advances in Neural Information Processing Systems, 2003, 505-512.


>>> import numpy as np
>>> input_dim = 1
>>> domain = (0, 1)
>>> def f(x):
...     return x
>>> F, info = bayesquad(fun=f, input_dim=input_dim, domain=domain)
>>> print(F.mean)