Skip to main content

TruncNorm

Arbitrary order moments for truncated multivariate normal distributions.

Introduction

Given

X ~ N(m, C), a <= X <= b

with mean vector m, covariance matrix C, lower limit vector a and upper limit vector b,

import truncnorm
truncnorm.moments(m, C, a, b, 4)

returns all the following moments of total order less or equal to 4 as a list:

[
  P(a<=X<=b),           (scalar)
  E[X_i],               (N vector)
  E[X_i*X_j],           (NxN matrix)
  E[X_i*X_j*X_k],       (NxNxN array)
  E[X_i*X_j*X_k*X_l],   (NxNxNxN array)
]

for all i, j, k and l. Note that the first element in the list is a bit of a special case. That's because E[1] is trivially 1 so giving the normalisation constant instead is much more useful.

TODO

  • Double truncation
  • Numerical stability could probably be increased by using logarithic scale in critical places of the algorithm
  • Sampling (see Gessner et al below)
  • Folded distribution
  • Optimize recurrent integrals by using vector and index-mapping representation instead of arrays. Using arrays makes computations efficient and simple, but same elements are computed multiple times because of symmetry in the moments.

References

  • "On Moments of Folded and Truncated Multivariate Normal Distributions" by Raymond Kan & Cesare Robotti, 2016

  • "Integrals over Gaussians under Linear Domain Constraints" by Alexandra Gessner & Oindrila Kanjilal & Philipp Hennig, 2020

Download files

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

Source Distribution

truncnorm-0.0.2.tar.gz (7.2 kB view details)

Uploaded Source

File details

Details for the file truncnorm-0.0.2.tar.gz.

File metadata

  • Download URL: truncnorm-0.0.2.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.8

File hashes

Hashes for truncnorm-0.0.2.tar.gz
Algorithm Hash digest
SHA256 0fab29ccb2df76651a136f89f80e956bb099cde6fda6b26bde76f948d01698e8
MD5 a64e1ce75ecbc0d33804af779e2424c6
BLAKE2b-256 368ffcce97da63b7b00d35812362c3fae912bc36526444f4b9cb21d36de44a6f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.2 This release

1 file

0.0.1

1 file

Supported by

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