dist-truncate
A small python package for truncating (continuous) scipy distributions.
Installation
From pypi
To install this package from pypi simply run
pip install dist-truncate
From source
To install from source clone this repository and install via pip:
git clone https://github.com/schoennenbeck/dist-truncate.git
cd dist-truncate
pip install .
Usage
Introduction
After installation simply import the package
import dist_truncate
This adds a property truncated to all distributions of type scipy.stats.rv_continuous. The property
is itself of type scipy.stats.rv_continuous and works the same way as the distribution that was
started with but with two additional shape-arguments trunc_min and trunc_max that can be used
to truncated the support of the distribution to the interval trunc_min <= x <= trunc_max.
Note that some distributions (e.g. the normal distribution) already have an explicit truncated version implemented. In this case the explicit version should be used since it is most likely numerically more stable than this generic implementation.
Example
Let us truncate the standard normal distribution to the interval -0.5 <= x <= 2.0. As noted above
the truncated normal is already implemented so we can compare the results and make sure that this
generic version actually computes the right outputs.
import dist_truncate
from scipy import stats
import numpy as np
Comparing the cummulative density functions at multiple points:
stats.truncnorm.cdf(np.arange(-3, 3, 0.5), -0.5, 2.0)
# Output: array([0. , 0. , 0. , 0. , 0. ,
0. , 0.28631514, 0.57263027, 0.79676594, 0.93411656,
1. , 1. ])
stats.norm.truncated.cdf(np.arange(-3, 3, 0.5), -0.5, 2.0)
# Output: array([0. , 0. , 0. , 0. , 0. ,
0. , 0.28631514, 0.57263027, 0.79676594, 0.93411656,
1. , 1. ])
Comparing the inverse of the cdf:
stats.truncnorm.ppf(np.arange(0, 1, 0.2), -0.5, 2.0)
# Output: array([-0.5 , -0.14519108, 0.19172827, 0.55269814, 1.00897798])
stats.norm.truncated.ppf(np.arange(0, 1, 0.2), -0.5, 2.0)
# Output: array([-0.5 , -0.14519108, 0.19172827, 0.55269814, 1.00897798])
The minimum and maximum for the truncation can also be called as keyword-arguments:
stats.loguniform.truncated.support(1, 100, trunc_max=80, trunc_min=20)
# Output: (20, 80)
Broadcasting of shapes works the same as for all other arguments:
stats.loguniform.truncated.support(
[1, 50],
[50, 100],
trunc_min=20,
trunc_max=[[30, 40], [60, 100]]
)
# Output: (array([[20, 50], [20, 50]]), array([[ 30, 40], [ 50, 100]]))
Metadata
Release files for dist-truncate 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dist-truncate-0.2.0.tar.gz | 4.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dist_truncate-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.8 kB
Release files / dist-truncate-0.2.0.tar.gz
| Download URL | dist-truncate-0.2.0.tar.gz |
|---|---|
| Size | 4.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7171497f71fdf1da242d71962a5c70a9534fd3906348d6ed253d5364882a1286
|
|
BLAKE2b-256 checksum How to use checksums |
a2acec081ee073de148c484d878841a325dc1d26a33db919774b66b580ba7389
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.8.12
|
Release files / dist_truncate-0.2.0-py3-none-any.whl
| Download URL | dist_truncate-0.2.0-py3-none-any.whl |
|---|---|
| Size | 4.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
91e310002f90f0024fd7e989baacf6545e8fcba45bb20fec5217c8cb9f506485
|
|
BLAKE2b-256 checksum How to use checksums |
d1ee0f59c8f7bb3a7a7865a304d84fc971f57a405069d90ae199229b81ce1271
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.8.12
|