Statistics, pdf, cdf, inverse cdf and random numbers of the generalized chi-square distribution
Project description
gx2 — Generalized chi-square distribution
gx2 is a python package that computes the statistics, characteristic function, pdf, cdf, inverse cdf
and random numbers of the generalized chi-square distribution.
This is the python port of the
MATLAB toolbox.
A generalized chi-square variable is a weighted sum of independent non-central chi-square variables plus a normal variable — equivalently, the quadratic form of a normal random vector. It is parametrized by:
| parameter | meaning |
|---|---|
w |
weights of the non-central chi-square terms |
k |
their degrees of freedom |
l |
their non-centralities (named l because lambda is a Python keyword) |
s |
scale (standard deviation) of the added normal term |
m |
constant offset |
Installation
pip install gx2
Requires numpy, scipy and mpmath. matplotlib is optional, for plotting
in the getting-started notebook.
To install from a local clone instead:
pip install .
# or, for development (editable install with test/plot extras):
pip install -e ".[plot,test]"
Getting started
import gx2
w, k, l, s, m = [1, -5, 2], [1, 2, 3], [2, 3, 7], 0, 5
gx2.stat(w, k, l, s, m) # mean and variance
gx2.cdf(25, w, k, l, s, m) # cdf at x = 25
gx2.pdf(25, w, k, l, s, m) # pdf at x = 25
gx2.inv(0.9, w, k, l, s, m) # 90th percentile
gx2.rnd(w, k, l, s, m, size=5) # random numbers
Open GettingStarted.ipynb for an interactive tour
with worked examples and plots. For any function, see its full documentation
with help(gx2.cdf) (or gx2.cdf? in Jupyter).
Public functions
| function | purpose |
|---|---|
stat(w, k, l, s, m) |
mean and variance |
char(t, w, k, l, s, m) |
characteristic function |
rnd(w, k, l, s, m, size=, method=) |
random numbers |
cdf(x, w, k, l, s, m, side=, method=, ...) |
cdf |
pdf(x, w, k, l, s, m, side=, method=, ...) |
|
inv(p, w, k, l, s, m, side=, method=, ...) |
inverse cdf |
gx2_to_norm_quad_params(w, k, l, s, m) |
gx2 → quadratic-form coefficients of a standard normal |
norm_quad_to_gx2_params(mu, v, quad, merge=) |
quadratic form of a normal → gx2 parameters |
The individual computation routines (imhof, ruben, ifft, pearson,
tail, ellipse, cdf_ray, pdf_ray, …) and numerical helpers
(log_sum_exp, signed_log_sum_exp, phi_ray, …) are also exposed.
Computation methods for cdf / pdf
method='auto' (default) picks a good method for the given parameters. You can
also force one:
| method | notes |
|---|---|
'imhof' |
Imhof–Davies numerical integration (precision='basic' or 'vpa') |
'ray' |
ray-trace method (precision='basic', 'log' or 'vpa'; tune with n_rays, force_mc) |
'ifft' |
inverse-FFT method; x='full' returns the cdf/pdf over a spanning grid |
'ruben' |
Ruben's series — requires all w the same sign and s=0 |
'tail' |
infinite-tail approximation |
'pearson' |
Pearson's 3-moment approximation |
'ellipse' |
ellipse approximation near a finite tail — requires all w the same sign and s=0 |
Usage notes
cdfandpdfreturn just the probability/density by default. Passfull_output=True(auto-enabled forx='full') to also receive the error estimate and, forx='full', the grid of x-values.- In the far tails, probabilities can fall below double precision (~1e-308).
The
'tail','ellipse'and'ray'methods then return the base-10 logarithm of such values (a negative number);invlikewise accepts a negativepas a log10 probability.precision='log'(the ray default) is the easiest way to reach this regime. - The
'ray'method runs on the CPU with NumPy and batches automatically over rays to bound memory.precision='vpa'usesmpmathand returnsmpmath.mpfobjects for sub-realminvalues.
Author and citation
Abhranil Das, Center for Perceptual Systems, The University of Texas at Austin. Bugs / comments / questions / suggestions to abhranil.das@utexas.edu.
If you use this code, please cite:
- Methods to integrate multinormals and compute classification measures
- New methods to compute the generalized chi-square distribution: journal / arxiv
License
MIT — see LICENSE.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gx2-1.0.4.tar.gz.
File metadata
- Download URL: gx2-1.0.4.tar.gz
- Upload date:
- Size: 353.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77415bc66dc6aa35170a7af86826353448092325065ea5425ec69dcd28470f8e
|
|
| MD5 |
bf73bfc4a6c89d82dcb790195b1a0363
|
|
| BLAKE2b-256 |
10f1be0f97f45a48c74725964e1929d53a7f804d0f10bac5cb005a7bd13a7687
|
Provenance
The following attestation bundles were made for gx2-1.0.4.tar.gz:
Publisher:
publish.yml on abhranildas/gx2-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gx2-1.0.4.tar.gz -
Subject digest:
77415bc66dc6aa35170a7af86826353448092325065ea5425ec69dcd28470f8e - Sigstore transparency entry: 2011180636
- Sigstore integration time:
-
Permalink:
abhranildas/gx2-py@320ba105ec35ce4eb9d12b309cb3eb8d515d045d -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/abhranildas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@320ba105ec35ce4eb9d12b309cb3eb8d515d045d -
Trigger Event:
release
-
Statement type:
File details
Details for the file gx2-1.0.4-py3-none-any.whl.
File metadata
- Download URL: gx2-1.0.4-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1fa76bf47166ea8f17683b7193ea5f51e55f256372d016803a0ae767ba31aaf1
|
|
| MD5 |
96e3f2c6d316a2669458ec9042d66d1a
|
|
| BLAKE2b-256 |
d2a568ee33fd1063dca6b1e28f1e91eefb517299d09e1652c48d40e643c04abd
|
Provenance
The following attestation bundles were made for gx2-1.0.4-py3-none-any.whl:
Publisher:
publish.yml on abhranildas/gx2-py
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gx2-1.0.4-py3-none-any.whl -
Subject digest:
1fa76bf47166ea8f17683b7193ea5f51e55f256372d016803a0ae767ba31aaf1 - Sigstore transparency entry: 2011180946
- Sigstore integration time:
-
Permalink:
abhranildas/gx2-py@320ba105ec35ce4eb9d12b309cb3eb8d515d045d -
Branch / Tag:
refs/tags/v1.0.4 - Owner: https://github.com/abhranildas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@320ba105ec35ce4eb9d12b309cb3eb8d515d045d -
Trigger Event:
release
-
Statement type: