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

Metadata

Release files for truncnorm 0.0.2

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

Source distribution (sdist)

Source distribution for truncnorm 0.0.2
File Size Uploaded
truncnorm-0.0.2.tar.gz 7.2 kB Details

Release files / truncnorm-0.0.2.tar.gz

Download URL truncnorm-0.0.2.tar.gz
Size 7.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0fab29ccb2df76651a136f89f80e956bb099cde6fda6b26bde76f948d01698e8
BLAKE2b-256 checksum
How to use checksums
368ffcce97da63b7b00d35812362c3fae912bc36526444f4b9cb21d36de44a6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.2 CPython/3.11.8

Release history Release notifications | RSS feed

This release

0.0.2 This release

1 release file

0.0.1

1 release file

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