Skip to main content

survival_distributions

This package extends the functionality of univariate distributions in torch.distributions by implementing several new methods:

  • sf: survival function (complementary CDF)
  • logsf: logarithm of the survival function (negative cumulative hazard function)
  • logcdf: logarithm of the CDF
  • log_hazard: logarithm of the hazard function (logarithm of the failure rate)
  • isf: inverse of the survival function
  • sample_cond: instead of sampling from the full support of the distribution, generate samples between lower_bound and upper_bound

This is especially useful when working with temporal point processes or survival analysis.

Naive implementation based on existing PyTorch functionality (e.g., torch.log(1.0 - dist.cdf(x)) for logsf) will often not be as accurate and numerically stable as the implementation provided by survival_distributions. Hopefully, these methods will be implemented in PyTorch sometime in the future, but this package provides an alternative for the time being.

See DISTRIBUTIONS.md for more details about the implemented functions and supported distributions.

Installation

  1. Install the latest version of PyTorch.
  2. Install survival_distributions
    pip install survival_distributions
    

Supported distributions

Numerically stable implementation

For these distributions we provide a numerically stable implementation of logsf.

  • Exponential
  • Logistic
  • LogLogistic
  • MixtureSameFamily
  • TransformedDistribution
  • Uniform
  • Weibull

Naive implementation

For these distributions we implement logsf(x) as log(1.0 - dist.cdf(x)), which is less numerically stable.

  • LogNormal
  • Normal

Usage

The package provides a drop-in replacement for torch.distributions, so you can just modify your code as follows.

Old code

import torch

dist = torch.distributions.Exponential(rate=torch.tensor(2.0))
x = torch.tensor(1.5)

log_survival_proba = torch.log(1.0 - dist.cdf(x))

New code

import torch
import survival_distributions as sd

dist = sd.Exponential(rate=torch.tensor(2.0))
x = torch.tensor(1.5)

log_survival_proba = dist.logsf(x)

Release files for survival-distributions 0.0.3

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

Source distribution (sdist)

Source distribution for survival-distributions 0.0.3
File Size Uploaded
survival_distributions-0.0.3.tar.gz 8.4 kB Details

Release files / survival_distributions-0.0.3.tar.gz

Download URL survival_distributions-0.0.3.tar.gz
Size 8.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b0b01d242cb950cc12aed50bef61b1bed1b4a060316b0a037a245547afbd4d92
BLAKE2b-256 checksum
How to use checksums
e2e8dfe6d26a7d5f073c389fcd3ebedcf9bbf57b635facaffecf8811ca53735c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/4.11.3 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.64.0 CPython/3.9.12

Release history Release notifications | RSS feed

This release

0.0.3 This release

1 release file

0.0.2

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