https://github.com/areenberg/phasedist
Fit phase-type distributions in Python
https://github.com/areenberg/phasedist
Last synced: 3 months ago
JSON representation
Fit phase-type distributions in Python
- Host: GitHub
- URL: https://github.com/areenberg/phasedist
- Owner: areenberg
- License: mit
- Created: 2024-07-24T12:45:47.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2026-03-08T03:05:47.000Z (4 months ago)
- Last Synced: 2026-03-08T07:41:40.830Z (4 months ago)
- Language: Python
- Size: 18.9 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

PhaseDist is a Python package for fitting continuous and discrete phase-type distributions.
## Features
* Fit continuous and discrete phase-type distributions using EM algorithms.
* Use built-in methods to easily check the fitted distribution.
* Evaluate various metrics, such as the mean, density, quantile function, AIC and more.
* Simulate observations from phase-type distributions.
* Approximate another distribution, e.g. a log-normal distribution, using a phase-type distribution.
# Installation
Install directly from PyPI with:
```
pip install phasedist
```
# Quick start guide
The following shows how to use PhaseDist for fitting a continuous phase-type distribution from observed data.
(1) Start by loading PhaseDist (and NumPy) and defining the observed data.
```python
import phasedist as ph
import numpy as np
obs = np.array([1.48246359,1.13468709,0.66779536,0.61823347,0.8888217,1.10124776,0.1424737,2.1228061,
1.73924933,0.9849647,1.4828275,1.97188842,2.56132465,1.58038807,1.27567082,2.7754917,1.42516854,0.4602795,
1.93701091,2.50633135,1.92906099,1.60935023,1.41949599,1.14870169,0.79146146,1.31530543,1.81352371,1.17079096,
0.78948314,1.39528837,1.62003755,1.52143826,0.46665594,1.37913488,3.10066725,0.76942733,1.42849783,1.61511175,
2.94617609,1.53719196,1.01144357,2.00466269,0.56886361,1.62237618,0.41023332,0.78733512,4.01849928,1.27761144,
1.09426382,1.36946933])
```
(2) Fit the data to a generalized Erlang distribution with 3 phases.
```python
fit = ph.fit(obs=obs,
nphases=3,
dtype="generlang")
```
(3) Compare the CDF of the fitted distribution to the empirical CDF.
```python
fit.plot()
```

(4) Store the fitted distribution in the object `phdist` and compute the mean, variance, and 95% quantile.
```python
phdist = fit.getdist()
print(phdist.getmean())
#1.455814
print(phdist.getvar())
#0.706466
print(phdist.getquantile(p=0.95))
#3.055169
```
Find the complete example in the file `quickstart_example.py`.
# Documentation
The documentation can be found in the [wiki for PhaseDist](https://github.com/areenberg/phasedist/wiki).