Skip to main content

dist-truncate

PyPI - Version PyPI - License Coverage Status

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)

Source distribution for dist-truncate 0.2.0
File Size Uploaded
dist-truncate-0.2.0.tar.gz 4.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dist-truncate 0.2.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

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